哀悼史蒂夫·乔布斯,谨此记。
Steve Jobs, 1955-2011
2011/10/06启用Web服务器的IPv6支持
2011/04/06前几天Burst西海岸的VPS开售了,于是21一个鸡冻就入了一个最低配的,看样子貌似我是第14个客户……
由于Burst在主机配置里面提到了提供IPv6地址,于是昨天发了ticket请求设置,今早来看已经给我设了4个v6的地址,但是默认安装默认配置的Apache2并不支持IPv6的访问,于是萌生了整理一下各主流Web Server启用IPv6方式访问的设置,其实都不复杂。
21个人喜欢nano编辑器,如果你喜欢vi,稍微换一下命令就行。
如果提示
1 | bash: nano: command not found |
请如下操作
1 2 | Debian/Ubuntu: sudo apt-get install nano CentOS/Fedora: yum install nano |
高快直达:1. Apache 2 / 2. Nginx / 3. Lighttpd / 4. IIS 6/7
»继续阅读
全球开放注册的域名后缀(TLD)
2011/01/18——————————————————————————————————————
21插播:如果不想看罗嗦话的,请直接按 Ctrl+F 搜索你想要注册的后缀是否在文中。
零、原作者引言
爱玩小米的朋友其实有一点是非常纠结的,那就是许多后缀其实是不允许咱们国人注册的,也就是说,这些后缀对持有人的身份有严格的限制,就算有好域名也与你无缘。当然,有些朋友通过伪造资料或所谓的“挂靠”来注册这样的域名,但QQPCC要告诉这些朋友,其实这是不安全的,就算你想尽办法、侥幸地避开了注册局的审查,但你永远不是这个域名的主人,域名转移、域名交易都会遇到麻烦……
那么,到底那些后缀是你可以堂堂正正地用你的中国身份注册的呢?可能很多朋友并不清楚,QQPCC今天就来给各位爱好小米的朋友说一说,如果还有QQPCC没有发现的,请大家补充。
一、国际顶级域名
- 普通用户可以注册的有:.com、.net、.org、.info、.biz、.coop、.mobi、.name、.tel。
二、区域后缀
- 其实都有限制,只限各大洲自己的组织或公民注册。
不过亚洲的.asia没有关系,因为咱们都是亚洲人,呵呵!
非洲和大洋洲好像现在并没有神码后缀,呵呵,美洲有,但现在只有二级域名开放。
有个特殊的东东,前苏联的.su,ICANN很多次想删除,但前苏联人民对其太有感情了,多年来一直没有删除成功,这个可公开注册。
在OSX的Terminal使用Home和End键
2011/01/17因为能在Mac OS X的Terminal(中文名:终端)里使用Home和End两个按键对我的日常使用来说实在太重要了,我甚至就为Home和End而喜欢上公司配发的ThinkPad X200忽视了我的MacBook Pro,这是一种奢侈的浪费(甚至Sophy都鼓动我卖掉MacBook Pro),但我之前的《Windows to MacOSX》里Tips1提到的按键技巧都不适用于Terminal,在X200使用越来越顺手的情况下我开始想解决这个问题。
插播:此技巧适用于iMac或者Mac Pro或者你自己外接键盘的情况,用内置键盘的MacBook用家请路过……
于是打开Google搜索到以下技巧,在此保留待查: »继续阅读
SSH和谐主机的iptables设置参考
2011/01/14这是一个关于SSH番羽土啬的话题,标题及文中的“和谐”=“番羽土啬”,感叹一下我们的文字。
因为21现在手上的VPS数量比较乐观(不是壮观……),因此其中有专司VPN和谐的、SSH和谐的、第三方推和谐的等用途,当然,Mr. 21博客也在其中一个VPS上,用的LNMP包。
写这个话题的起因是这样的,在北山老卫大神的Q群里面,有人提到了想以SSH和谐帐号来换取一些东西,因此引发了21对此的讨论。我的主要观点是不支持这么做,因为不安全(可以参考《利用Linux内核的多个安全漏洞提权》,不过本文内容与此关系不大),加上之前帮番茄童鞋配置iptables,因此引发了21对SSH和谐主机安全方面的思考,其中的一方面就是用iptables来过滤不和谐的东西。
是这样的,因为做实验的这个VPS我只用于SSH和谐,并且一般和谐仅限于Web浏览及各种基于Web的应用,所以,以下策略仅开放SSH的22端口并对其它的东西做了相应的限制。
初始化防火墙
第一步,我们总是要把一些知道的和不知道的先通通打倒了再说,于是,请如此:
1 2 3 4 5 6 7 8 9 | #清除现有的规则 ~#: iptables -F ~#: iptables -X ~#: iptables -Z #设定默认策略为丢弃包 ~#: iptables -P FORWARD DROP ~#: iptables -P OUTPUT DROP ~#: iptables -P INPUT DROP |
以上是一些初始化的动作,以下是具有具体功能的策略。
防火墙规则参考一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #允许本地回环 ~#: iptables -A INPUT -i lo -p all -j ACCEPT #允许22端口接受连接 ~#: iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许传入的数据包状态 ~#: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许传出的数据包状态 ~#: iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #允许传入PING的ICMP包 ~#: iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT |
这几条规则实现的效果是:
- 22端口允许用户主动发起TCP连接,一般用于提供SSH服务,如果你的SSH端口不是22,请修改;
- 其它端口需要ESTABLISHED、RELATED两种状态的数据包才能通过,而通常这两种状态的数据包在TCP协议上的定义是已经建立了连接的后续数据包,也就说,别人无法对你的任何端口主动发起连接,但是由你主动发起连接的数据包可以通过,比如说看网页的数据;
- 包状态NEW允许SSH用户对外的主动发起连接;
- 允许外部用户PING本机,这个嘛,方便自己测试,要不挂了都不知道。
- 关于数据包状态,我是参考这里 http://liubin.blog.51cto.com/282313/110394 。
这样,虽然防住了外面进来的问题,但一定程度上来说,用户通过SSH登录以后就可以干他想干的事情了,对于应用的范围不能达到一个控制的目的,比如说,我前面提到的“一般和谐仅限于Web浏览及各种基于Web的应用”,是的,和谐嘛,也就是用这些了,顶天了再来个FTP或者跳板另外的SSH,于是,21便想到了稍微BT一点的限制,请看参考二。
»继续阅读
系统管理员和程序员
2011/01/11——————————————————————————————————————
Everythings Sysadmin的作者Tom给一个初级系统管理员回了封Learn your operating system’s internals的信,有讲到每次靠重启解决问题和用猜代替知道的时候总是觉得这是对行业和专业的深深打击。然后又讲了系统管理上三个复杂且容易误解的内容:内存子系统,文件子系统和进程。再加一个是安全子系统,然而这三块的内容又是理解安全的必要前提。总之就是一个系统管理员一定要深入操作系统,知道操作系统到底是怎么工作的。Tom还列了几本针对不同操作系统的书出来,
- Windows:《Windows Internals》, 中文版:《深入解析Windows操作系统》,
Russinovich, Solomon and Ionescu; - Linux:《Linux Kernel Internals》, Beck, Bohme, Dziadzka, Kunitz et al;
- FreeBSD:《The Design and Implementation of the FreeBSD Operating System》,
中文版:《FreeBSD操作系统设计与实现》,McKusick and Neville-Neil; - The TCP/IP Protocol: 《TCP/IP Illustrated》, W. Richard Stevens,
中文版:《TCP/IP详解》,W. Richard Stevens
无论你是否使用FreeBSD,都应该读一读FreeBSD的那本。TCP/IP那本就不消说了,现在离了网络的计算机啥也不是啊!
还有一个Hacker News的贴是问How to step up my coding skills?,提问的人想在半年到一年的时间里成为一个Skilled Programmer,回贴的都说程序员这摊子浑水深了,这点时间是不够的。顶的最多的是说要写代码,也有列了代码量的。不过我觉得Ixiaus列出的建议还是很实用的,比如下面几条:
- 要成为一个程序员,不是码农。Ctrl+C/V
- 不要忽视理论、算法、数据结构和数学
- 学习多个语言,包括面向对象和函数式编程。
系统管理员和程序员虽是两个不同的职位,但是学习的内容应该说是差不多的,系统管理员甚至要比之程序员学得更多,了解的更多,按三金的话就是:我们知道的状态比其他人多,修好只不过是把系统调到已知状态。
——————————————————————————————————————
21之所以要转载这篇文章,是因为身为初级SysAdmin的21在没有前辈指点下自己瞎摸索,苦于没有一个明确的学习方向,一直都是东拼西凑的学习,这篇文章在一定程度上指明了21现阶段需要进行学习的内容和方向,我想我在Google Reader上Make Star和Sharing是不够的,于是转载出来与大家分享,共勉之。
-EOF-
WordPress多用户模式子站点无法加载CSS?
2011/01/1121今天突然手闲,想试试传闻已久的WordPress多站点模式(WordPress Multisite),于是用手上的一个DirectSpace年付的VPS(性能?淡定……)临时搭建了一个LAMP,按照WordPress Codex的操作一步一步对WordPress进行修改,按照子目录的形式最后写入 .htaccess 并建立了子站点,但是出现一个问题,子站点可以访问,但是无法加载CSS和图片等东西。
初步判断应该是 .htaccess 里面Rewrite规则可能有问题,但那是官方提供的,不应该吧……
于是通过Google大神一番搜索,确定是Rewrite规则有问题,并将 .htaccess 文件替换为以下内容后工作正常:
WordPress Multisite Based Sub-folder Mode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L] |
————————————————我是分割线————————————————
我刚才重新弄了一下想重演故障,结果发现没问题了,记得看过一篇POST提到WP有个缓存机制导致了这个问题,不过我把 .htaccess 更新了以上代码后,就工作正常了,一时也没留意是否跟WP给出的范例代码是否有所不同,纠结了……放这儿备查吧。
————————————————我是分割线————————————————
Update: Jan 13th, 2011
终于发现问题所在了,由于我手欠,没有使用启用Network功能时 /wp-admin/network.php 提供的 .htaccess 内容,而直接使用了Codex.WordPress提供的Rewrite规则,于是 ……
来自Codex.WordPress的Rewrite规则呈现如下(无法工作的,仅供参考,别用……):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress |
主要区别在于以下两句,正好影响到的是主题布景(Theme)、后台管理等功能:
有效的规则:
1 2 RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]无效的规则:
1 2 RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
-EOF-
——————–
引用参考:
WordPress Support: http://wordpress.org/support/topic/wp-multisite-htaccess-not-working
Perishable Pre: http://perishablepress.com/press/2010/07/07/htaccess-code-for-wordpress-multisite/
WordPress Codex: http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite
WordPress Codex: http://codex.wordpress.org/Create_A_Network
利用Linux内核的多个安全漏洞提权
2010/12/20这是来自VPSee的消息,因为我个人试了一下Debian表示没有鸭梨,于是转过来,手痒的Ubunu用户可以试试……
——————————————-这是手痒的分割线——————————————-
系统安全高手 Dan Rosenberg 发布了一段 C 程序,这段200多行的程序利用了 Linux Econet 协议的3个安全漏洞,可以导致本地帐号对系统进行拒绝服务或特权提升,也就是说一个普通用户可以通过运行这段程序后轻松获得 root shell,以下在 update 过的 Ubuntu 10.04 Server LTS 上测试通过:
$ uname -r 2.6.32-21-server $ gcc full-nelson.c -o full-nelson $ ./full-nelson [*] Resolving kernel addresses... [+] Resolved econet_ioctl to 0xffffffffa0131510 [+] Resolved econet_ops to 0xffffffffa0131600 [+] Resolved commit_creds to 0xffffffff8108b820 [+] Resolved prepare_kernel_cred to 0xffffffff8108bc00 [*] Calculating target... [*] Failed to set Econet address. [*] Triggering payload... [*] Got root! #
由于 RHEL/CentOS 默认不支持 Econet 协议,所以测试没有通过:
$ uname -r 2.6.18-194.26.1.el5 $ gcc full-nelson.c -o full-nelson $ ./full-nelson [*] Failed to open file descriptors.
如果在企业环境用 Ubuntu 的话可能会比较杯具了,几百个帐号里总可以找到一两个帐号被内部或外部人员通过上面这段程序拿到 root,这对服务器的危害是毁灭性的。前天还在说 Ubuntu 在内核方面无作为,现在想起来还有点后怕。VPSee 提醒正在使用多个普通帐号登录 Ubuntu VPS 的朋友及时升级或打内核补丁,出售 VPN/SSH 帐号、提供免费 SSH 的商家尤其要小心 “客户” 捣乱,使用其他 Linux 发行版的朋友也最好检查一下自己的 VPS 有没有这些高危漏洞。
——————————————-这是手痒的分割线——————————————-
21个人的测试,在Debian 5.0.6上测试,结果如下:
$ uname -r 2.6.26-2-xen-amd64 $ gcc h.c -o h $ ./h [*] Resolving kernel addresses... [+] Resolved econet_ioctl to 0xffffffffa017819b [+] Resolved econet_ops to 0xffffffffa01791e0 [*] Failed to resolve kernel symbols.
同时,各位提供SSH番羽墙的童鞋,只要把用户的shell设置为nologin便可以表示没有鸭梨了~
-EOF-
Convert .htaccess to nginx
2010/12/10这篇,我稍微微博一下好了 …… 这么好的工具,不得不马克一下~
Link: http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
不过据说有人因此Nginx起不来,大家慎用就是了……
-EOF-
