<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Feng&#039;s Blog</title>
	<atom:link href="http://www.mzfeng.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mzfeng.com</link>
	<description>关注internet web windows linux 系统管理 服务器架构</description>
	<lastBuildDate>Mon, 06 Feb 2012 14:39:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>history优化及删除</title>
		<link>http://www.mzfeng.com/html/y2012/363.html</link>
		<comments>http://www.mzfeng.com/html/y2012/363.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 14:38:38 +0000</pubDate>
		<dc:creator>Mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=363</guid>
		<description><![CDATA[在linux中自己经常会使用到history来查看以往输入过的命令,这样既方便又快捷.默认~/.bash_history 文件保存了命令执行的历史记录，#history命令可以查看到记录内容。但是并不能看到最近的历史记录，这是因为最近的历史记录保存在缓存中，还没有保存到文件中去，可以执行#history -w先更新.bash_history文件，然后再查看其内容。 有时间bash_history文件可能会记录一些敏感的信息，如密码等，所认在输命令的时候应注意避免把密码等信息写在命令当中。如果记录了，我们也可以删除，确认~/.bash_history文件最新，然后直接 vi ~/.bash_history 删除对应的行即可，如果不需要历史记录可以 #history -c 清除历史记录。 修改history记录命令执行时间： Vi /etc/bashrc 在文件最后添加如下命令: HISTFILESIZE=3000 #能记录的最多命令数 HISTSIZE=3000 #你希望历史命令保存多少条 export HISTTIMEFORMAT=”%F %T:” # 历史命令显示时间格式,可以自定义时间格式.]]></description>
			<content:encoded><![CDATA[<p>在linux中自己经常会使用到<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/history" title="查看 history 中的全部文章" target="_blank">history</a></span>来查看以往输入过的命令,这样既方便又快捷.默认~/.bash_<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/history" title="查看 history 中的全部文章" target="_blank">history</a></span> 文件保存了命令执行的历史记录，#history命令可以查看到记录内容。但是并不能看到最近的历史记录，这是因为最近的历史记录保存在缓存中，还没有保存到文件中去，可以执行#history -w先更新.bash_history文件，然后再查看其内容。<br />
有时间bash_history文件可能会记录一些敏感的信息，如密码等，所认在输命令的时候应注意避免把密码等信息写在命令当中。如果记录了，我们也可以删除，确认~/.bash_history文件最新，然后直接 vi ~/.bash_history 删除对应的行即可，如果不需要历史记录可以 #history -c 清除历史记录。<br />
修改history记录命令执行时间：</p>
<p>Vi /etc/bashrc<span id="more-363"></span><br />
在文件最后添加如下命令:<br />
HISTFILESIZE=3000          #能记录的最多命令数<br />
HISTSIZE=3000                  #你希望历史命令保存多少条<br />
export HISTTIMEFORMAT=”%F %T:”    # 历史命令显示时间格式,可以自定义时间格式.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/363.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux密码忘记或丢失后修改密码的方法</title>
		<link>http://www.mzfeng.com/html/y2012/362.html</link>
		<comments>http://www.mzfeng.com/html/y2012/362.html#comments</comments>
		<pubDate>Sun, 05 Feb 2012 13:12:13 +0000</pubDate>
		<dc:creator>Mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[修改]]></category>
		<category><![CDATA[密码]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=362</guid>
		<description><![CDATA[现在我们日常工作生活中使用的密码太多了,多到有时候连我们自己都会不清楚设置的密码是什么了.像一个LINUX服务器系统都有可能使用多个不同的密码,如果最主要的ROOT的密码都不知道了,我们可以通过下面的方法来重新设置一个密码,当然只能够到机房电脑前面来设置了,远程是无法重置密码的.下面是重置密码的方法: 重启系统，进入下图界面按上或下键 进入下图界面 进入该界面后按“e”键，进入 选择第二项（kernel项），然后在按“e”，如图 进入该界面后输入“single”，然后回车，进入下图界面 进入该界面后按“b”键，后会自动重启，然后直接进入单用户维护模式，不用输入密码直接取得root权限，最后运行“passwd root”命令进行修改密码，最后重启，完成]]></description>
			<content:encoded><![CDATA[<p>现在我们日常工作生活中使用的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e5%af%86%e7%a0%81" title="查看 密码 中的全部文章" target="_blank">密码</a></span>太多了,多到有时候连我们自己都会不清楚设置的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e5%af%86%e7%a0%81" title="查看 密码 中的全部文章" target="_blank">密码</a></span>是什么了.像一个LINUX服务器系统都有可能使用多个不同的密码,如果最主要的ROOT的密码都不知道了,我们可以通过下面的方法来重新设置一个密码,当然只能够到机房电脑前面来设置了,远程是无法重置密码的.下面是重置密码的方法:</p>
<p>重启系统，进入下图界面按上或下键<span id="more-362"></span></p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/174842640.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img src="http://www.mzfeng.com/uploads/2012/02/174842640.png" alt="" border="0" /></a></p>
<p>进入下图界面</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/174929596.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img src="http://www.mzfeng.com/uploads/2012/02/174929596.png" alt="" border="0" /></a></p>
<p>进入该界面后按“e”键，进入</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/175017296.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img src="http://www.mzfeng.com/uploads/2012/02/175017296.png" alt="" border="0" /></a></p>
<p>选择第二项（kernel项），然后在按“e”，如图</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/175155433.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img src="http://www.mzfeng.com/uploads/2012/02/175155433.png" alt="" border="0" /></a></p>
<p>进入该界面后输入“single”，然后回车，进入下图界面</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/175426810.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img src="http://www.mzfeng.com/uploads/2012/02/175426810.png" alt="" border="0" /></a></p>
<p>进入该界面后按“b”键，后会自动重启，然后直接进入单用户维护模式，不用输入密码直接取得root权限，最后运行“passwd root”命令进行<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e4%bf%ae%e6%94%b9" title="查看 修改 中的全部文章" target="_blank">修改</a></span>密码，最后重启，完成</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/362.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下修改系统时间方法</title>
		<link>http://www.mzfeng.com/html/y2012/361.html</link>
		<comments>http://www.mzfeng.com/html/y2012/361.html#comments</comments>
		<pubDate>Sun, 05 Feb 2012 12:51:57 +0000</pubDate>
		<dc:creator>Mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[修改]]></category>
		<category><![CDATA[时间]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=361</guid>
		<description><![CDATA[修改linux的时间可以使用date指令 修改日期： 时间设定成2009年5月10日的命令如下： #date -s 05/10/2009 修改时间： 将系统时间设定成上午10点18分0秒的命令如下。 #date -s 10:18:00 修改时区： 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。 修改/etc/sysconfig/clock文件的内容为： ZONE=”Asia/Shanghai” UTC=false ARC=false 同步bios时间： 同步BIOS时钟，强制把系统时间写入CMOS，命令如下： #clock -w date命令的功能是显示和设置系统日期和时间。 输入date 查看目前系统时间。 修改时间需要 date -功能字符 修改内容 命令中各选项的含义分别为： -d datestr, &#8211;date datestr 显示由datestr描述的日期 -s datestr, &#8211;set datestr 设置datestr 描述的日期 -u, &#8211;universal 显示或设置通用时间 时间域 %H 小时（00..23） %I 小时（01..12） %k 小时（0..23） %l 小时（1..12） %M 分（00..59） [...]]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e4%bf%ae%e6%94%b9" title="查看 修改 中的全部文章" target="_blank">修改</a></span>linux的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e6%97%b6%e9%97%b4" title="查看 时间 中的全部文章" target="_blank">时间</a></span>可以使用date指令<br />
<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e4%bf%ae%e6%94%b9" title="查看 修改 中的全部文章" target="_blank">修改</a></span>日期：<br />
<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e6%97%b6%e9%97%b4" title="查看 时间 中的全部文章" target="_blank">时间</a></span>设定成2009年5月10日的命令如下：<br />
#date -s 05/10/2009<br />
修改<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e6%97%b6%e9%97%b4" title="查看 时间 中的全部文章" target="_blank">时间</a></span>：<br />
将系统时间设定成上午10点18分0秒的命令如下。<br />
#date -s 10:18:00<br />
修改时区：<br />
找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。<br />
修改/etc/sysconfig/clock文件的内容为：<br />
ZONE=”Asia/Shanghai”<br />
UTC=false<br />
ARC=false<br />
同步bios时间： <span id="more-361"></span><br />
同步BIOS时钟，强制把系统时间写入CMOS，命令如下：<br />
#clock -w<br />
date命令的功能是显示和设置系统日期和时间。<br />
输入date 查看目前系统时间。<br />
修改时间需要 date -功能字符 修改内容<br />
命令中各选项的含义分别为：<br />
-d datestr, &#8211;date datestr 显示由datestr描述的日期<br />
-s datestr, &#8211;set datestr 设置datestr 描述的日期<br />
-u, &#8211;universal 显示或设置通用时间<br />
时间域<br />
%H 小时（00..23）<br />
%I 小时（01..12）<br />
%k 小时（0..23）<br />
%l 小时（1..12）<br />
%M 分（00..59）<br />
%p 显示出AM或PM<br />
%r 时间（hh：mm：ss AM或PM），12小时<br />
%s 从1970年1月1日00：00：00到目前经历的秒数<br />
%S 秒（00..59）<br />
%T 时间（24小时制）（hh:mm:ss）<br />
%X 显示时间的格式（％H:％M:％S）<br />
%Z 时区 日期域<br />
%a 星期几的简称（ Sun..Sat）<br />
%A 星期几的全称（ Sunday..Saturday）<br />
%b 月的简称（Jan..Dec）<br />
%B 月的全称（January..December）<br />
%c 日期和时间（ Mon Nov 8 14：12：46 CST 1999）<br />
%d 一个月的第几天（01..31）<br />
%D 日期（mm／dd／yy）<br />
%h 和%b选项相同<br />
%j 一年的第几天（001..366）<br />
%m 月（01..12）<br />
%w 一个星期的第几天（0代表星期天）<br />
%W 一年的第几个星期（00..53，星期一为第一天）<br />
%x 显示日期的格式（mm/dd/yy）<br />
%y 年的最后两个数字（ 1999则是99）<br />
%Y 年（例如：1970，1996等）<br />
需要特别说明的是，只有超级用户才能用date命令设置时间，一般用户只能用date命令显示时间。<br />
例1：用指定的格式显示时间。<br />
$ date &#8216;+This date now is =>%x ,time is now =>%X ,thank you !&#8217;<br />
This date now is =>11/12/99 ,time is now =>17:53:01,thank you !<br />
例2：用预定的格式显示当前的时间。<br />
# date<br />
Fri Nov 26 15:20:18 CST 1999<br />
例3：设置时间为下午14点36分。<br />
# date -s 14:36:00<br />
Fri Nov 26 14:15:00 CST 1999<br />
例4：设置时间为1999年11月28号。<br />
# date -s 991128<br />
Sun Nov 28 00:00:00 CST 1999<br />
实例：设置时间伟2008年8月8号12:00<br />
# date -s “2008-08-08 12:00:00&#8243;<br />
修改完后,记得输入:clock -w<br />
把系统时间写入CMOS</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/361.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下修改SSH端口</title>
		<link>http://www.mzfeng.com/html/y2012/360.html</link>
		<comments>http://www.mzfeng.com/html/y2012/360.html#comments</comments>
		<pubDate>Sat, 04 Feb 2012 01:07:51 +0000</pubDate>
		<dc:creator>Mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSH端口]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=360</guid>
		<description><![CDATA[在生产环境下,安装好LINUX系统最好是更改下远程连接的默认的SSH端口.现今网上无时无刻都有人在扫描端口及弱口令;所有我们最好是安装配置好系统后把SSH端口更改一下.SSH默认开放端口是22,我们可以把它改成比较少用或者是自己容易记的端口.下面我们来看看怎么修改SSH端口设置: 编辑/etc/ssh目录下的sshd_config文件 #vi /etc/ssh/sshd_config 找到 #Port 22 把#号去了,22是默认的端口,可22修改成其它端口;比如: #Port 6811 然后保存退出 在iptables添加一条规则: #iptables -A INPUT -p tcp --dport 6811 -j ACCEPT 重启一下系统或者直接重启SSH服务 #service sshd restart 使用Putty连接IP后面的端口要修改自己设置端口的比如:6811 如果可以连接上去说明修改成功]]></description>
			<content:encoded><![CDATA[<p>在生产环境下,安装好LINUX系统最好是更改下远程连接的默认的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/ssh%e7%ab%af%e5%8f%a3" title="查看 SSH端口 中的全部文章" target="_blank">SSH端口</a></span>.现今网上无时无刻都有人在扫描端口及弱口令;所有我们最好是安装配置好系统后把<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/ssh%e7%ab%af%e5%8f%a3" title="查看 SSH端口 中的全部文章" target="_blank">SSH端口</a></span>更改一下.SSH默认开放端口是22,我们可以把它改成比较少用或者是自己容易记的端口.下面我们来看看怎么修改<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/ssh%e7%ab%af%e5%8f%a3" title="查看 SSH端口 中的全部文章" target="_blank">SSH端口</a></span>设置:<br />
编辑/etc/ssh目录下的sshd_config文件<br />
<code>#vi /etc/ssh/sshd_config</code><br />
找到<br />
<code>#Port 22</code><br />
把#号去了,22是默认的端口,可22修改成其它端口;比如:<br />
<code>#Port 6811</code><br />
然后保存退出<br />
在iptables添加一条规则:<br />
<code>#iptables -A INPUT -p tcp --dport 6811 -j ACCEPT</code><span id="more-360"></span><br />
重启一下系统或者直接重启SSH服务<br />
#service sshd restart<br />
使用Putty连接IP后面的端口要修改自己设置端口的比如:6811<br />
如果可以连接上去说明修改成功</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/360.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos6.2完整安装配置教程</title>
		<link>http://www.mzfeng.com/html/y2012/344.html</link>
		<comments>http://www.mzfeng.com/html/y2012/344.html#comments</comments>
		<pubDate>Fri, 03 Feb 2012 01:21:12 +0000</pubDate>
		<dc:creator>Mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Centos]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=344</guid>
		<description><![CDATA[首先把下载好的ISO刻录好光盘,放入电脑设置光盘引导.光盘引导后出来以下界面; &#160; 选择第一个选项:”Install or upgrade an existing system”;按”ENTER” 如果你需要在字符界面安装,就按”ESC”键,输入:”linux text” 我们这里省过字符界面安装,接着下一步 选”skip”跳过,下一步 到这里我们所熟悉的CENTOS画面终于出现了,选”NEXT” 或直接用快捷键:alt+n;下一步 如果这里我们是安装测试语言就选中文好了,我这里选英文,下一步 键盘布局选 U.S.Englinsh 下一步 这里我们选系统安装到本机基本储存”Basic Storage Devices”,下一步 这里我们需要配置网卡IP及其它网络设置,点”Configure Network”, 只设置本机网卡IP.选”System eth0&#8243;&#8212;”Edit” 这里我们在IPv4选项里的 “Method:”选择”Manual” 然后在下面输入IP地址,掩码,网关,如果是IPv6请参照IPv4设置,如果没有就不用去管它.输入好地址后记得要勾上”Connect automatically”这个选项.这样系统启动才能自动启用网卡,然后”Apply” 再”Close”网络配置窗口 点下一步 选好时区,下一步 设置root密码,下一步 选”Use All Space” 下一步 选”Write changes to disk”;然后下一步 这里我们选”Minimal”最小化安装;然后下一步 到此安装配置过程已经完成,等系统程序安装完成重启. 重启完成安装.]]></description>
			<content:encoded><![CDATA[<p>首先把下载好的ISO刻录好光盘,放入电脑设置光盘引导.光盘引导后出来以下界面;</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/1.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-345" title="1" src="http://www.mzfeng.com/uploads/2012/02/1-300x225.png" alt="" width="300" height="225" /></a></p>
<p>&nbsp;</p>
<p>选择第一个选项:”Install or upgrade an existing system”;按”ENTER”<br />
如果你需要在字符界面安装,就按”ESC”键,输入:”linux text” 我们这里省过字符界面安装,接着下一步<span id="more-344"></span></p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/2.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-346" title="2" src="http://www.mzfeng.com/uploads/2012/02/2-300x166.png" alt="" width="300" height="166" /></a></p>
<p>选”skip”跳过,下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/3.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-347" title="3" src="http://www.mzfeng.com/uploads/2012/02/3-300x225.png" alt="" width="300" height="225" /></a></p>
<p>到这里我们所熟悉的CENTOS画面终于出现了,选”NEXT” 或直接用快捷键:alt+n;下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/4.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-348" title="4" src="http://www.mzfeng.com/uploads/2012/02/4-300x225.png" alt="" width="300" height="225" /></a><br />
如果这里我们是安装测试语言就选中文好了,我这里选英文,下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/5.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-349" title="5" src="http://www.mzfeng.com/uploads/2012/02/5-300x225.png" alt="" width="300" height="225" /></a></p>
<p>键盘布局选 U.S.Englinsh 下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/6.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-350" title="6" src="http://www.mzfeng.com/uploads/2012/02/6-300x225.png" alt="" width="300" height="225" /></a></p>
<p>这里我们选系统安装到本机基本储存”Basic Storage Devices”,下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/7.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-351" title="7" src="http://www.mzfeng.com/uploads/2012/02/7-300x225.png" alt="" width="300" height="225" /></a></p>
<p>这里我们需要配置网卡IP及其它网络设置,点”Configure Network”,</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/8.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-352" title="8" src="http://www.mzfeng.com/uploads/2012/02/8-300x225.png" alt="" width="300" height="225" /></a></p>
<p>只设置本机网卡IP.选”System eth0&#8243;&#8212;”Edit”</p>
<p>这里我们在IPv4选项里的 “Method:”选择”Manual” 然后在下面输入IP地址,掩码,网关,如果是IPv6请参照IPv4设置,如果没有就不用去管它.输入好地址后记得要勾上”Connect automatically”这个选项.这样系统启动才能自动启用网卡,然后”Apply” 再”Close”网络配置窗口 点下一步<br />
选好时区,下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/9.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-353" title="9" src="http://www.mzfeng.com/uploads/2012/02/9-300x225.png" alt="" width="300" height="225" /></a></p>
<p>设置root密码,下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/10.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-354" title="10" src="http://www.mzfeng.com/uploads/2012/02/10-300x225.png" alt="" width="300" height="225" /></a></p>
<p>选”Use All Space” 下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/11.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-355" title="11" src="http://www.mzfeng.com/uploads/2012/02/11-300x225.png" alt="" width="300" height="225" /></a></p>
<p>选”Write changes to disk”;然后下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/12.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-356" title="12" src="http://www.mzfeng.com/uploads/2012/02/12-300x225.png" alt="" width="300" height="225" /></a></p>
<p>这里我们选”Minimal”最小化安装;然后下一步</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/13.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-357" title="13" src="http://www.mzfeng.com/uploads/2012/02/13-300x225.png" alt="" width="300" height="225" /></a></p>
<p>到此安装配置过程已经完成,等系统程序安装完成重启.</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/14.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-358" title="14" src="http://www.mzfeng.com/uploads/2012/02/14-300x225.png" alt="" width="300" height="225" /></a></p>
<p>重启完成安装.</p>
<p><a href="http://www.mzfeng.com/uploads/2012/02/15.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-medium wp-image-359" title="15" src="http://www.mzfeng.com/uploads/2012/02/15-300x225.png" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/344.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 SWFObject.js 插入Flash且符合W3C标准</title>
		<link>http://www.mzfeng.com/html/y2012/342.html</link>
		<comments>http://www.mzfeng.com/html/y2012/342.html#comments</comments>
		<pubDate>Thu, 02 Feb 2012 00:53:53 +0000</pubDate>
		<dc:creator>mzfeng</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[SWFObject]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=342</guid>
		<description><![CDATA[“SWFObject”是利用Javascript 插入flash，好处多多，代码简洁，不会出现IE6下的“单击此处以激活控件”的提示，并且能通过W3C验证。不同于传统的“object”插入flash的方法。 SWFObject在新的2.x版本中，其最简单的调用竟只需一句话，并且不需要等待页面加载完成，这意味着你可以将这句话写在页面的任何地方。比以前的版本，要简便多了。下面来看几个简单常用的调用方法： 1、最简单，最基本，只要想插入flash都能用到的经典一句话。 &#60;script type=”text/javascript” src=”swfobject.js”&#62;&#60;/script&#62; &#60;script type=”text/javascript”&#62; swfobject.embedSWF(“test.swf”, ”swfid”, ”300&#8243;, ”120&#8243;, ”9.0.0&#8243;, ”expressInstall.swf”); &#60;/script&#62; &#60;div id=”swfid”&#62;&#60;/div&#62; 参数注解：调用方法embedSWF——插入SWF文件，参数依次是： @swf文件的地址； @用于装入swf文件的容器(如div)的id； @flash的宽度； @flash的高度（当然，这里的宽高都可以使用诸如100%这样的百分比来表示）； @正常播放该flash所需的最低版本； @当版本低于要求时，执行该swf文件，这里利用这个flash跳转到官方下载最新版本的flash插件。（该参数可以省略） 在同一个页面插入多个flash到不同位置时，只要重复上面的语句，使用不同的容器id就可以了。 2、给swf文件传递参数、变量、属性的调用方法 &#160; &#60;script type=”text/javascript” src=”swfobject.js”&#62;&#60;/script&#62; &#60;script type=”text/javascript”&#62; //1、使用Json初始化变量、参数、属性 var flashvars = { name1: ”hello”, name2: ”world”, name3: ”foobar” }; var params = { menu: ”false” }; var attributes = { id: ”dynamicContent2&#8243;, name: ”dynamicContent2&#8243; }; swfobject.embedSWF(“test6_flashvars.swf”, ”content2&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, flashvars, params, attributes); //2、传统的初始化设置，效果一样 var flashvars = {}; flashvars.name1 = ”hello”; flashvars.name2 = ”world”; flashvars.name3 = ”foobar”; var params = {}; params.menu = ”false”; var attributes = {}; attributes.id = ”dynamicContent3&#8243;; attributes.name = ”dynamicContent3&#8243;; swfobject.embedSWF(“test6_flashvars.swf”, ”content3&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, flashvars, params, attributes); //3、直接写在后面，就一句话，简洁剽悍，不拖泥带水 swfobject.embedSWF(“test6_flashvars.swf”, ”content5&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, {name1:”hello”,name2:”world”,name3:”foobar”}, {menu:”false”}, {id:”dynamicContent5&#8243;,name:”dynamicContent5&#8243;}); &#60;/script&#62; &#160; SWFObject Downland]]></description>
			<content:encoded><![CDATA[<p>“<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/swfobject" title="查看 SWFObject 中的全部文章" target="_blank">SWFObject</a></span>”是利用Javascript 插入flash，好处多多，代码简洁，不会出现IE6下的“单击此处以激活控件”的提示，并且能通过W3C验证。不同于传统的“object”插入flash的方法。</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/swfobject" title="查看 SWFObject 中的全部文章" target="_blank">SWFObject</a></span>在新的2.x版本中，其最简单的调用竟只需一句话，并且不需要等待页面加载完成，这意味着你可以将这句话写在页面的任何地方。比以前的版本，要简便多了。下面来看几个简单常用的调用方法：</p>
<p>1、最简单，最基本，只要想插入flash都能用到的经典一句话。</p>
<div>&lt;script type=”text/javascript” src=”swfobject.js”&gt;&lt;/script&gt;<br />
&lt;script type=”text/javascript”&gt;<br />
swfobject.embedSWF(“test.swf”, ”swfid”, ”300&#8243;, ”120&#8243;, ”9.0.0&#8243;, ”expressInstall.swf”);<br />
&lt;/script&gt;</p>
<p>&lt;div id=”swfid”&gt;&lt;/div&gt;</p>
<div></div>
</div>
<p>参数注解：调用方法embedSWF——插入SWF文件，参数依次是：<br />
@swf文件的地址；<span id="more-342"></span><br />
@用于装入swf文件的容器(如div)的id；<br />
@flash的宽度；<br />
@flash的高度（当然，这里的宽高都可以使用诸如100%这样的百分比来表示）；<br />
@正常播放该flash所需的最低版本；<br />
@当版本低于要求时，执行该swf文件，这里利用这个flash跳转到官方下载最新版本的flash插件。（该参数可以省略）<br />
在同一个页面插入多个flash到不同位置时，只要重复上面的语句，使用不同的容器id就可以了。</p>
<p>2、给swf文件传递参数、变量、属性的调用方法</p>
<p>&nbsp;</p>
<div>&lt;script type=”text/javascript” src=”swfobject.js”&gt;&lt;/script&gt;<br />
&lt;script type=”text/javascript”&gt;<br />
//1、使用Json初始化变量、参数、属性<br />
var flashvars = {<br />
name1: ”hello”,<br />
name2: ”world”,<br />
name3: ”foobar”<br />
};<br />
var params = {<br />
menu: ”false”<br />
};<br />
var attributes = {<br />
id: ”dynamicContent2&#8243;,<br />
name: ”dynamicContent2&#8243;<br />
};<br />
swfobject.embedSWF(“test6_flashvars.swf”, ”content2&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, flashvars, params, attributes);</p>
<p>//2、传统的初始化设置，效果一样<br />
var flashvars = {};<br />
flashvars.name1 = ”hello”;<br />
flashvars.name2 = ”world”;<br />
flashvars.name3 = ”foobar”;<br />
var params = {};<br />
params.menu = ”false”;<br />
var attributes = {};<br />
attributes.id = ”dynamicContent3&#8243;;<br />
attributes.name = ”dynamicContent3&#8243;;<br />
swfobject.embedSWF(“test6_flashvars.swf”, ”content3&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, flashvars, params, attributes);<br />
//3、直接写在后面，就一句话，简洁剽悍，不拖泥带水<br />
swfobject.embedSWF(“test6_flashvars.swf”, ”content5&#8243;, ”300&#8243;, ”120&#8243;, ”6.0.0&#8243;, ”expressInstall.swf”, {name1:”hello”,name2:”world”,name3:”foobar”}, {menu:”false”}, {id:”dynamicContent5&#8243;,name:”dynamicContent5&#8243;});<br />
&lt;/script&gt;</p>
<div></div>
</div>
<p>&nbsp;</p>
<p><strong><a href="http://code.google.com/p/swfobject/" target="_blank">SWFObject Downland</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/342.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20步打造最安全的Nginx Web服务器</title>
		<link>http://www.mzfeng.com/html/y2012/341.html</link>
		<comments>http://www.mzfeng.com/html/y2012/341.html#comments</comments>
		<pubDate>Thu, 02 Feb 2012 00:36:43 +0000</pubDate>
		<dc:creator>mzfeng</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[安全]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=341</guid>
		<description><![CDATA[Nginx是一个轻量级的，高性能的Web服务器以及反向代理和邮箱(IMAP/POP3)代理服务器。它运行在UNIX,GNU /linux,BSD 各种版本，Mac OS X,Solaris和Windows。根据调查统计，6%的网站使用Nginx Web服务器。Nginx是少数能处理C10K问题的服务器之一。跟传统的服务器不同，Nginx不依赖线程来处理请求。相反，它使用了更多的可扩展的事 件驱动（异步）架构。Nginx为一些高流量的网站提供动力，比如WordPress,人人网，腾讯，网易等。这篇文章主要是介绍如何提高运行在 Linux或UNIX系统的Nginx Web服务器的安全性。 默认配置文件和Nginx端口 /usr/local/nginx/conf/ – Nginx配置文件目录，/usr/local/nginx/conf/nginx.conf是主配置文件 /usr/local/nginx/html/ – 默认网站文件位置 /usr/local/nginx/logs/ – 默认日志文件位置 Nginx HTTP默认端口 : TCP 80 Nginx HTTPS默认端口: TCP 443 你可以使用以下命令来测试Nginx配置文件准确性。 /usr/local/nginx/sbin/nginx -t 将会输出。 the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful 执行以下命令来重新加载配置文件。 /usr/local/nginx/sbin/nginx -s reload 执行以下命令来停止服务器。 /usr/local/nginx/sbin/nginx -s stop 一、配置SELinux 安全增强型Linux（SELinux）的是一个Linux内核的功能，它提供支持访问控制的安全政策保护机制。它可以大部分的攻击。下面我们来看如何启动基于centos/RHEL系统的SELinux。 [...]]]></description>
			<content:encoded><![CDATA[<div id="appShareTitle">Nginx是一个轻量级的，高性能的Web<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e6%9c%8d%e5%8a%a1%e5%99%a8" title="查看 服务器 中的全部文章" target="_blank">服务器</a></span>以及反向代理和邮箱(IMAP/POP3)代理<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e6%9c%8d%e5%8a%a1%e5%99%a8" title="查看 服务器 中的全部文章" target="_blank">服务器</a></span>。它运行在UNIX,GNU /linux,BSD 各种版本，Mac OS X,Solaris和Windows。根据调查统计，6%的网站使用Nginx Web服务器。Nginx是少数能处理C10K问题的服务器之一。跟传统的服务器不同，Nginx不依赖线程来处理请求。相反，它使用了更多的可扩展的事 件驱动（异步）架构。Nginx为一些高流量的网站提供动力，比如WordPress,人人网，腾讯，网易等。这篇文章主要是介绍如何提高运行在 Linux或UNIX系统的Nginx Web服务器的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e5%ae%89%e5%85%a8" title="查看 安全 中的全部文章" target="_blank">安全</a></span>性。</div>
<div id="app-share-content">
<p><strong>默认配置文件和Nginx端口</strong></p>
<ul>
<li>/usr/local/<a title="标签 Nginx 下的日志" rel="tag">nginx</a>/conf/ – Nginx配置文件目录，/usr/local/<a title="标签 Nginx 下的日志" rel="tag">nginx</a>/conf/<a title="标签 Nginx 下的日志" rel="tag">nginx</a>.conf是主配置文件</li>
<p><span id="more-341"></span></p>
<li>/usr/local/<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/nginx" title="查看 nginx 中的全部文章" target="_blank">nginx</a></span>/html/ – 默认网站文件位置</li>
<li>/usr/local/<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/nginx" title="查看 nginx 中的全部文章" target="_blank">nginx</a></span>/logs/ – 默认日志文件位置</li>
<li>Nginx HTTP默认端口 : TCP 80</li>
<li>Nginx HTTPS默认端口: TCP 443</li>
</ul>
<p>你可以使用以下命令来测试Nginx配置文件准确性。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/usr/local/<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/nginx" title="查看 nginx 中的全部文章" target="_blank">nginx</a></span>/sbin/nginx -t</li>
</ol>
</blockquote>
</div>
<p>将会输出。<br />
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok<br />
configuration file /usr/local/nginx/conf/nginx.conf test is successful<br />
执行以下命令来重新加载配置文件。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/usr/local/nginx/sbin/nginx -s reload</li>
</ol>
</blockquote>
</div>
<p>执行以下命令来停止服务器。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/usr/local/nginx/sbin/nginx -s stop</li>
</ol>
</blockquote>
</div>
<h3>一、配置SELinux</h3>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e5%ae%89%e5%85%a8" title="查看 安全 中的全部文章" target="_blank">安全</a></span>增强型Linux（SELinux）的是一个Linux内核的功能，它提供支持访问控制的<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e5%ae%89%e5%85%a8" title="查看 安全 中的全部文章" target="_blank">安全</a></span>政策保护机制。它可以大部分的攻击。下面我们来看如何启动基于<a>centos</a>/RHEL系统的SELinux。<br />
<strong>安装SELinux</strong></p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>rpm -qa | grep selinux</li>
</ol>
</blockquote>
</div>
<p>libselinux-1.23.10-2<br />
selinux-policy-targeted-1.23.16-6<br />
如果没有返回任何结果，代表没有安装 SELinux，如果返回了类似上面的结果，则说明系统安装了 SELinux。<br />
<strong>布什值锁定</strong><br />
运行命令getsebool -a来锁定系统。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>getsebool -a | less</li>
<li>getsebool -a | grep off</li>
<li>getsebool -a | grep o</li>
</ol>
</blockquote>
</div>
<h3>二、通过分区挂载允许最少特权</h3>
<p>服务器上的网页/html/php文件单独分区。例如，新建一个分区/dev/sda5(第一逻辑分区)，并且挂载在/nginx。确保 /nginx是以noexec, nodev and nosetuid的权限挂载。以下是我的/etc/fstab的挂载/nginx的信息：<br />
LABEL=/nginx /nginx ext3 defaults,nosuid,noexec,nodev 1 2<br />
注意：你需要使用fdisk和mkfs.ext3命令创建一个新分区。</p>
<h3>三、配置/etc/sysctl.conf强化Linux安全</h3>
<p>你可以通过编辑/etc/sysctl.conf来控制和配置Linux内核、网络设置。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li># Avoid a smurf attack</li>
<li>net.ipv4.icmp_echo_ignore_broadcasts = 1</li>
<li># Turn on protection for bad icmp error messages</li>
<li>net.ipv4.icmp_ignore_bogus_error_responses = 1</li>
<li># Turn on syncookies for SYN flood attack protection</li>
<li>net.ipv4.tcp_syncookies = 1</li>
<li># Turn on and log spoofed, source routed, and redirect packets</li>
<li>net.ipv4.conf.all.log_martians = 1</li>
<li>net.ipv4.conf.default.log_martians = 1</li>
<li># No source routed packets here</li>
<li>net.ipv4.conf.all.accept_source_route = 0</li>
<li>net.ipv4.conf.default.accept_source_route = 0</li>
<li># Turn on reverse path filtering</li>
<li>net.ipv4.conf.all.rp_filter = 1</li>
<li>net.ipv4.conf.default.rp_filter = 1</li>
<li># Make sure no one can alter the routing tables</li>
<li>net.ipv4.conf.all.accept_redirects = 0</li>
<li>net.ipv4.conf.default.accept_redirects = 0</li>
<li>net.ipv4.conf.all.secure_redirects = 0</li>
<li>net.ipv4.conf.default.secure_redirects = 0</li>
<li># Don’t act as a router</li>
<li>net.ipv4.ip_forward = 0</li>
<li>net.ipv4.conf.all.send_redirects = 0</li>
<li>net.ipv4.conf.default.send_redirects = 0</li>
<li># Turn on execshild</li>
<li>kernel.exec-shield = 1</li>
<li>kernel.randomize_va_space = 1</li>
<li># Tuen IPv6</li>
<li>net.ipv6.conf.default.router_solicitations = 0</li>
<li>net.ipv6.conf.default.accept_ra_rtr_pref = 0</li>
<li>net.ipv6.conf.default.accept_ra_pinfo = 0</li>
<li>net.ipv6.conf.default.accept_ra_defrtr = 0</li>
<li>net.ipv6.conf.default.autoconf = 0</li>
<li>net.ipv6.conf.default.dad_transmits = 0</li>
<li>net.ipv6.conf.default.max_addresses = 1</li>
<li># Optimization for port usefor LBs</li>
<li># Increase system file descriptor limit</li>
<li>fs.file-max = 65535</li>
<li># Allow for more PIDs (to reduce rollover problems); may break some programs 32768</li>
<li>kernel.pid_max = 65536</li>
<li># Increase system IP port limits</li>
<li>net.ipv4.ip_local_port_range = 2000 65000</li>
<li># Increase TCP max buffer size setable using setsockopt()</li>
<li>net.ipv4.tcp_rmem = 4096 87380 8388608</li>
<li>net.ipv4.tcp_wmem = 4096 87380 8388608</li>
<li># Increase Linux auto tuning TCP buffer limits</li>
<li># min, default, and max number of bytes to use</li>
<li># set max to at least 4MB, or higher if you use very high BDP paths</li>
<li># Tcp Windows etc</li>
<li>net.core.rmem_max = 8388608</li>
<li>net.core.wmem_max = 8388608</li>
<li>net.core.netdev_max_backlog = 5000</li>
<li>net.ipv4.tcp_window_scaling = 1</li>
</ol>
</blockquote>
</div>
<h3>四、删除所有不需要的Nginx模块</h3>
<p>你需要直接通过编译Nginx源代码使模块数量最少化。通过限制只允许web服务器访问模块把风险降到最低。你可以只配置安装nginx你所需要的模块。例如，禁用SSL和autoindex模块你可以执行以下命令：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>./configure –without-http_autoindex_module –without-http_ssi_module</li>
<li>make</li>
<li>make install</li>
</ol>
</blockquote>
</div>
<p>通过以下命令来查看当编译nginx服务器时哪个模块能开户或关闭：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>./configure –help | less</li>
</ol>
</blockquote>
</div>
<p>禁用你用不到的nginx模块。<br />
（可选项）更改nginx版本名称。<br />
编辑文件/http/ngx_http_header_filter_module.c：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>vi +48 src/http/ngx_http_header_filter_module.c</li>
</ol>
</blockquote>
</div>
<p>找到行：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>static char ngx_http_server_string[] = “Server: nginx” CRLF;</li>
<li>static char ngx_http_server_full_string[] = “Server: ” NGINX_VER CRLF;</li>
</ol>
</blockquote>
</div>
<p>按照以下行修改：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>static char ngx_http_server_string[] = “Server: Ninja Web Server” CRLF;</li>
<li>static char ngx_http_server_full_string[] = “Server: Ninja Web Server” CRLF;</li>
</ol>
</blockquote>
</div>
<p>保存并关闭文件。现在你可以编辑服务器了。增加以下代码到nginx.conf文件来关闭nginx版本号的显示。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>server_tokens off</li>
</ol>
</blockquote>
</div>
<h3>五、使用mod_security(只适合后端Apache服务器)</h3>
<p>mod_security为Apache提供一个应用程序级的防火墙。为后端Apache Web服务器安装mod_security，这会阻止很多注入式攻击。</p>
<h3>六、安装SELinux策略以强化Nginx Web服务器</h3>
<p>默认的SELinux不会保护Nginx Web服务器，但是你可以安装和编译保护软件。<br />
1、安装编译SELinux所需环境支持</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>yum -y install selinux-policy-targeted selinux-policy-devel</li>
</ol>
</blockquote>
</div>
<p>2、下载SELinux策略以强化Nginx Web服务器。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>cd /opt</li>
<li>wget ‘http://downloads.sourceforge.net/project/selinuxnginx/se-ngix_1_0_10.tar.gz?use_mirror=nchc’</li>
</ol>
</blockquote>
</div>
<p>3、解压文件</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>tar -zxvf se-ngix_1_0_10.tar.gz</li>
</ol>
</blockquote>
</div>
<p>4、编译文件</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>cd se-ngix_1_0_10/nginx</li>
<li>make</li>
</ol>
</blockquote>
</div>
<p>将会输出如下：<br />
Compiling targeted nginx module<br />
/usr/bin/checkmodule: loading policy configuration from tmp/nginx.tmp<br />
/usr/bin/checkmodule: policy configuration loaded<br />
/usr/bin/checkmodule: writing binary representation (version 6) to tmp/nginx.mod<br />
Creating targeted nginx.pp policy package</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>rm tmp/nginx.mod.fc tmp/nginx.mod</li>
</ol>
</blockquote>
</div>
<p>5、安装生成的nginx.pp SELinux模块：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/usr/sbin/semodule -i nginx.pp</li>
</ol>
</blockquote>
</div>
<h3>七、基于Iptables防火墙的限制</h3>
<p>下面的防火墙脚本阻止任何除了允许：</p>
<ul>
<li>来自HTTP(TCP端口80)的请求</li>
<li>来自ICMP ping的请求</li>
<li>ntp(端口123)的请求输出</li>
<li>smtp(TCP端口25)的请求输出</li>
</ul>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>#!/bin/bash</li>
<li>IPT=”/sbin/iptables”</li>
<li>#### IPS ######</li>
<li># Get server public ip</li>
<li>SERVER_IP=$(ifconfig eth0 | grep ‘inet addr:’ | awk -F’inet addr:’ ‘{ print $2}’ | awk ‘{ print $1}’)</li>
<li>LB1_IP=”204.54.1.1″</li>
<li>LB2_IP=”204.54.1.2″</li>
<li># Do some smart logic so that we can use damm script on LB2 too</li>
<li>OTHER_LB=””</li>
<li>SERVER_IP=””</li>
<li>[[ "$SERVER_IP" == "$LB1_IP" ]] &amp;&amp; OTHER_LB=”$LB2_IP” || OTHER_LB=”$LB1_IP”</li>
<li>[[ "$OTHER_LB" == "$LB2_IP" ]] &amp;&amp; OPP_LB=”$LB1_IP” || OPP_LB=”$LB2_IP”</li>
<li>### IPs ###</li>
<li>PUB_SSH_ONLY=”122.xx.yy.zz/29″</li>
<li>#### FILES #####</li>
<li>BLOCKED_IP_TDB=/root/.fw/blocked.ip.txt</li>
<li>SPOOFIP=”127.0.0.0/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32 168.254.0.0/16 224.0.0.0/4 240.0.0.0/5 248.0.0.0/5 192.0.2.0/24″</li>
<li>BADIPS=$( [[ -f ${BLOCKED_IP_TDB} ]] &amp;&amp; egrep -v “^#|^$” ${BLOCKED_IP_TDB})</li>
<li>### Interfaces ###</li>
<li>PUB_IF=”eth0″   # public interface</li>
<li>LO_IF=”lo”      # loopback</li>
<li>VPN_IF=”eth1″   # vpn / private net</li>
<li>### start firewall ###</li>
<li>echo “Setting LB1 $(hostname) Firewall…”</li>
<li># DROP and close everything</li>
<li>$IPT -P INPUT DROP</li>
<li>$IPT -P OUTPUT DROP</li>
<li>$IPT -P FORWARD DROP</li>
<li># Unlimited lo access</li>
<li>$IPT -A INPUT -i ${LO_IF} -j ACCEPT</li>
<li>$IPT -A OUTPUT -o ${LO_IF} -j ACCEPT</li>
<li># Unlimited vpn / pnet access</li>
<li>$IPT -A INPUT -i ${VPN_IF} -j ACCEPT</li>
<li>$IPT -A OUTPUT -o ${VPN_IF} -j ACCEPT</li>
<li># Drop sync</li>
<li>$IPT -A INPUT -i ${PUB_IF} -p tcp ! –syn -m state –state NEW -j DROP</li>
<li># Drop Fragments</li>
<li>$IPT -A INPUT -i ${PUB_IF} -f -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL ALL -j DROP</li>
<li># Drop NULL packets</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -m limit –limit 5/m –limit-burst 7 -j LOG –log-prefix ” NULL Packets “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,RST SYN,RST -j DROP</li>
<li># Drop XMAS</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-prefix ” XMAS Packets “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP</li>
<li># Drop FIN packet scans</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-prefix ” Fin Packets Scan “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP</li>
<li># Log and get rid of broadcast / multicast and invalid</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m pkttype –pkt-type broadcast -j LOG –log-prefix ” Broadcast “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m pkttype –pkt-type broadcast -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m pkttype –pkt-type multicast -j LOG –log-prefix ” Multicast “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m pkttype –pkt-type multicast -j DROP</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m state –state INVALID -j LOG –log-prefix ” Invalid “</li>
<li>$IPT  -A INPUT -i ${PUB_IF} -m state –state INVALID -j DROP</li>
<li># Log and block spoofed ips</li>
<li>$IPT -N spooflist</li>
<li>for ipblock in $SPOOFIP</li>
<li>do</li>
<li>$IPT -A spooflist -i ${PUB_IF} -s $ipblock -j LOG –log-prefix ” SPOOF List Block “</li>
<li>$IPT -A spooflist -i ${PUB_IF} -s $ipblock -j DROP</li>
<li>done</li>
<li>$IPT -I INPUT -j spooflist</li>
<li>$IPT -I OUTPUT -j spooflist</li>
<li>$IPT -I FORWARD -j spooflist</li>
<li># Allow ssh only from selected public ips</li>
<li>for ip in ${PUB_SSH_ONLY}</li>
<li>do</li>
<li>$IPT -A INPUT -i ${PUB_IF} -s ${ip} -p tcp -d ${SERVER_IP} –destination-port 22 -j ACCEPT</li>
<li>$IPT -A OUTPUT -o ${PUB_IF} -d ${ip} -p tcp -s ${SERVER_IP} –sport 22 -j ACCEPT</li>
<li>done</li>
<li># allow incoming ICMP ping pong stuff</li>
<li>$IPT -A INPUT -i ${PUB_IF} -p icmp –icmp-type 8 -s 0/0 -m state –state NEW,ESTABLISHED,RELATED -m limit –limit 30/sec  -j ACCEPT</li>
<li>$IPT -A OUTPUT -o ${PUB_IF} -p icmp –icmp-type 0 -d 0/0 -m state –state ESTABLISHED,RELATED -j ACCEPT</li>
<li># allow incoming HTTP port 80</li>
<li>$IPT -A INPUT -i ${PUB_IF} -p tcp -s 0/0 –sport 1024:65535 –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT</li>
<li>$IPT -A OUTPUT -o ${PUB_IF} -p tcp –sport 80 -d 0/0 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT</li>
<li># allow outgoing ntp</li>
<li>$IPT -A OUTPUT -o ${PUB_IF} -p udp –dport 123 -m state –state NEW,ESTABLISHED -j ACCEPT</li>
<li>$IPT -A INPUT -i ${PUB_IF} -p udp –sport 123 -m state –state ESTABLISHED -j ACCEPT</li>
<li># allow outgoing smtp</li>
<li>$IPT -A OUTPUT -o ${PUB_IF} -p tcp –dport 25 -m state –state NEW,ESTABLISHED -j ACCEPT</li>
<li>$IPT -A INPUT -i ${PUB_IF} -p tcp –sport 25 -m state –state ESTABLISHED -j ACCEPT</li>
<li>### add your other rules here ####</li>
<li>#######################</li>
<li># drop and log everything else</li>
<li>$IPT -A INPUT -m limit –limit 5/m –limit-burst 7 -j LOG –log-prefix ” DEFAULT DROP “</li>
<li>$IPT -A INPUT -j DROP</li>
<li>exit 0</li>
</ol>
</blockquote>
</div>
<h3>八、控制缓冲区溢出攻击</h3>
<p>编辑nginx.conf，为所有客户端设置缓冲区的大小限制。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>vi /usr/local/nginx/conf/nginx.conf</li>
</ol>
</blockquote>
</div>
<p>编辑和设置所有客户端缓冲区的大小限制如下：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Start: Size Limits &amp; Buffer Overflows ##</li>
<li>client_body_buffer_size  1K;</li>
<li>client_header_buffer_size 1k;</li>
<li>client_max_body_size 1k;</li>
<li>large_client_header_buffers 2 1k;</li>
<li>## END: Size Limits &amp; Buffer Overflows ##</li>
</ol>
</blockquote>
</div>
<p>解释：<br />
1、client_body_buffer_size 1k-（默认8k或16k）这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值，那么这些请求实体的整体或部分将尝试写入一个临时文件。<br />
2、client_header_buffer_size 1k-指令指定客户端请求头部的缓冲区大小。绝大多数情况下一个请求头不会大于1k，不过如果有来自于wap客户端的较大的cookie它可能会大于 1k，Nginx将分配给它一个更大的缓冲区，这个值可以在large_client_header_buffers里面设置。<br />
3、client_max_body_size 1k-指令指定允许客户端连接的最大请求实体大小，它出现在请求头部的Content-Length字段。<br />
如果请求大于指定的值，客户端将收到一个”Request Entity Too Large” (413)错误。记住，浏览器并不知道怎样显示这个错误。<br />
4、large_client_header_buffers-指定客户端一些比较大的请求头使用的缓冲区数量和大小。请求字段不能大于一个缓冲区大小，如果客户端发送一个比较大的头，nginx将返回”Request URI too large” (414)<br />
同样，请求的头部最长字段不能大于一个缓冲区，否则服务器将返回”Bad request” (400)。缓冲区只在需求时分开。默认一个缓冲区大小为操作系统中分页文件大小，通常是4k或8k，如果一个连接请求最终将状态转换为keep- alive，它所占用的缓冲区将被释放。<br />
你还需要控制超时来提高服务器性能并与客户端断开连接。按照如下编辑：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Start: Timeouts ##</li>
<li>client_body_timeout   10;</li>
<li>client_header_timeout 10;</li>
<li>keepalive_timeout     5 5;</li>
<li>send_timeout          10;</li>
<li>## End: Timeouts ##</li>
</ol>
</blockquote>
</div>
<p>1、client_body_timeout 10;-指令指定读取请求实体的超时时间。这里的超时是指一个请求实体没有进入读取步骤，如果连接超过这个时间而客户端没有任何响应，Nginx将返回一个”Request time out” (408)错误。<br />
2、client_header_timeout 10;-指令指定读取客户端请求头标题的超时时间。这里的超时是指一个请求头没有进入读取步骤，如果连接超过这个时间而客户端没有任何响应，Nginx将返回一个”Request time out” (408)错误。<br />
3、keepalive_timeout 5 5; – 参数的第一个值指定了客户端与服务器长连接的超时时间，超过这个时间，服务器将关闭连接。参数的第二个值（可选）指定了应答头中Keep-Alive: timeout=time的time值，这个值可以使一些浏览器知道什么时候关闭连接，以便服务器不用重复关闭，如果不指定这个参数，nginx不会在应 答头中发送Keep-Alive信息。（但这并不是指怎样将一个连接“Keep-Alive”）参数的这两个值可以不相同。<br />
4、send_timeout 10; 指令指定了发送给客户端应答后的超时时间，Timeout是指没有进入完整established状态，只完成了两次握手，如果超过这个时间客户端没有任何响应，nginx将关闭连接。</p>
<h3>九、控制并发连接</h3>
<p>你可以使用NginxHttpLimitZone模块来限制指定的会话或者一个IP地址的特殊情况下的并发连接。编辑nginx.conf:</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>### Directive describes the zone, in which the session states are stored i.e. store in slimits. ###</li>
<li>### 1m can handle 32000 sessions with 32 bytes/session, set to 5m x 32000 session ###</li>
<li>limit_zone slimits $binary_remote_addr 5m;</li>
<li>### Control maximum number of simultaneous connections for one session i.e. ###</li>
<li>### restricts the amount of connections from a single ip address ###</li>
<li>limit_conn slimits 5;</li>
</ol>
</blockquote>
</div>
<p>上面表示限制每个远程IP地址的客户端同时打开连接不能超过5个。</p>
<h3>十、只允许我们的域名的访问</h3>
<p>如果机器人只是随机扫描服务器的所有域名，那拒绝这个请求。你必须允许配置的虚拟域或反向代理请求。你不必使用IP地址来拒绝。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Only requests to our Host are allowed i.e. nixcraft.in, images.nixcraft.in and www.nixcraft.in</li>
<li>if ($host !~ ^(nixcraft.in|www.nixcraft.in|images.nixcraft.in)$ ) {</li>
<li>return 444;</li>
<li>}</li>
<li>##</li>
</ol>
</blockquote>
</div>
<h3>十一、限制可用的请求方法</h3>
<p>GET和POST是互联网上最常用的方法。 Web服务器的方法被定义在RFC 2616。如果Web服务器不要求启用所有可用的方法，它们应该被禁用。下面的指令将过滤只允许GET，HEAD和POST方法：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Only allow these request methods ##</li>
<li>if ($request_method !~ ^(GET|HEAD|POST)$ ) {</li>
<li>return 444;</li>
<li>}</li>
<li>## Do not accept DELETE, SEARCH and other methods ##</li>
</ol>
</blockquote>
</div>
<p>更多关于HTTP方法的介绍</p>
<ul>
<li>GET方法是用来请求，如文件<a target="_blank">http://www.mzfeng.com/index.php</a>。</li>
<li>HEAD方法是一样的，除非该服务器的GET请求无法返回消息体。</li>
<li>POST方法可能涉及到很多东西，如储存或更新数据，或订购产品，或通过提交表单发送电子邮件。这通常是使用服务器端处理，如PHP，Perl和Python等脚本。如果你要上传的文件和在服务器处理数据，你必须使用这个方法。</li>
</ul>
<h3>十二、如何拒绝一些User-Agents？</h3>
<p>你可以很容易地阻止User-Agents,如扫描器，机器人以及滥用你服务器的垃圾邮件发送者。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Block download agents ##</li>
<li>if ($http_user_agent ~* LWP::Simple|BBBike|wget) {</li>
<li>return 403;</li>
<li>}</li>
<li>##</li>
</ol>
</blockquote>
</div>
<p>阻止Soso和有道的机器人：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>## Block some robots ##</li>
<li>if ($http_user_agent ~* Sosospider|YodaoBot) {</li>
<li>return 403;</li>
<li>}</li>
</ol>
</blockquote>
</div>
<h3>十三、如何防止图片盗链</h3>
<p>图片或HTML盗链的意思是有人直接用你网站的图片地址来显示在他的网站上。最终的结果，你需要支付额外的宽带费用。这通常是在论坛和博客。我强烈建议您封锁，并阻止盗链行为。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li># Stop deep linking or hot linking</li>
<li>location /images/ {</li>
<li>valid_referers none blocked www.example.com example.com;</li>
<li>if ($invalid_referer) {</li>
<li>return   403;</li>
<li>}</li>
<li>}</li>
</ol>
</blockquote>
</div>
<p>例如：重定向并显示指定图片</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>valid_referers blocked www.example.com example.com;</li>
<li>if ($invalid_referer) {</li>
<li>rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.examples.com/banned.jpg last</li>
<li>}</li>
</ol>
</blockquote>
</div>
<h3>十四、目录限制</h3>
<p>你可以对指定的目录设置访问权限。所有的网站目录应该一一的配置，只允许必须的目录访问权限。<br />
<strong>通过IP地址限制访问</strong><br />
你可以通过IP地址来限制访问目录/admin/:</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>location /docs/ {</li>
<li>## block one workstation</li>
<li>deny    192.168.1.1;</li>
<li>## allow anyone in 192.168.1.0/24</li>
<li>allow   192.168.1.0/24;</li>
<li>## drop rest of the world</li>
<li>deny    all;</li>
<li>}</li>
</ol>
</blockquote>
</div>
<p><strong>通过密码保护目录</strong><br />
首先创建密码文件并增加“user”用户：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>mkdir /usr/local/nginx/conf/.htpasswd/</li>
<li>htpasswd -c /usr/local/nginx/conf/.htpasswd/passwd user</li>
</ol>
</blockquote>
</div>
<p>编辑nginx.conf,加入需要保护的目录：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>### Password Protect /personal-images/ and /delta/ directories ###</li>
<li>location ~ /(personal-images/.*|delta/.*) {</li>
<li>auth_basic  “Restricted”;</li>
<li>auth_basic_user_file   /usr/local/nginx/conf/.htpasswd/passwd;</li>
<li>}</li>
</ol>
</blockquote>
</div>
<p>一旦密码文件已经生成，你也可以用以下的命令来增加允许访问的用户：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>htpasswd -s /usr/local/nginx/conf/.htpasswd/passwd userName</li>
</ol>
</blockquote>
</div>
<h3>十五、Nginx SSL配置</h3>
<p>HTTP是一个纯文本协议，它是开放的被动监测。你应该使用SSL来加密你的用户内容。<br />
<strong>创建SSL证书</strong><br />
执行以下命令：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>cd /usr/local/nginx/conf</li>
<li>openssl genrsa -des3 -out server.key 1024</li>
<li>openssl req -new -key server.key -out server.csr</li>
<li>cp server.key server.key.org</li>
<li>openssl rsa -in server.key.org -out server.key</li>
<li>openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</li>
</ol>
</blockquote>
</div>
<p>编辑nginx.conf并按如下来更新：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>server {</li>
<li>server_name example.com;</li>
<li>listen 443;</li>
<li>ssl on;</li>
<li>ssl_certificate /usr/local/nginx/conf/server.crt;</li>
<li>ssl_certificate_key /usr/local/nginx/conf/server.key;</li>
<li>access_log /usr/local/nginx/logs/ssl.access.log;</li>
<li>error_log /usr/local/nginx/logs/ssl.error.log;</li>
<li>}</li>
</ol>
</blockquote>
</div>
<p>重启nginx:</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/usr/local/nginx/sbin/nginx -s reload</li>
</ol>
</blockquote>
</div>
<h3>十六、Nginx与PHP安全建议</h3>
<p>PHP是流行的服务器端脚本语言之一。如下编辑/etc/<a title="标签 PHP 下的日志" rel="tag">php</a>.ini文件：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li># Disallow dangerous functions</li>
<li>disable_functions = phpinfo, system, mail, exec</li>
<li>## Try to limit resources  ##</li>
<li># Maximum execution time of each script, in seconds</li>
<li>max_execution_time = 30</li>
<li># Maximum amount of time each script may spend parsing request data</li>
<li>max_input_time = 60</li>
<li># Maximum amount of memory a script may consume (8MB)</li>
<li>memory_limit = 8M</li>
<li># Maximum size of POST data that PHP will accept.</li>
<li>post_max_size = 8M</li>
<li># Whether to allow HTTP file uploads.</li>
<li>file_uploads = Off</li>
<li># Maximum allowed size for uploaded files.</li>
<li>upload_max_filesize = 2M</li>
<li># Do not expose PHP error messages to external users</li>
<li>display_errors = Off</li>
<li># Turn on safe mode</li>
<li>safe_mode = On</li>
<li># Only allow access to executables in isolated directory</li>
<li>safe_mode_exec_dir = php-required-executables-path</li>
<li># Limit external access to PHP environment</li>
<li>safe_mode_allowed_env_vars = PHP_</li>
<li># Restrict PHP information leakage</li>
<li>expose_php = Off</li>
<li># Log all errors</li>
<li>log_errors = On</li>
<li># Do not register globals for input data</li>
<li>register_globals = Off</li>
<li># Minimize allowable PHP post size</li>
<li>post_max_size = 1K</li>
<li># Ensure PHP redirects appropriately</li>
<li>cgi.force_redirect = 0</li>
<li># Disallow uploading unless necessary</li>
<li>file_uploads = Off</li>
<li># Enable SQL safe mode</li>
<li>sql.safe_mode = On</li>
<li># Avoid Opening remote files</li>
<li>allow_url_fopen = Off</li>
</ol>
</blockquote>
</div>
<h3>十七、如果可能让Nginx运行在一个chroot监狱</h3>
<p>把nginx放在一个chroot监狱以减小潜在的非法进入其它目录。你可以使用传统的与nginx一起安装的chroot。如果可能，那使用FreeBSD jails，Xen，OpenVZ虚拟化的容器概念。</p>
<h3>十八、在防火墙级限制每个IP的连接数</h3>
<p>网络服务器必须监视连接和每秒连接限制。PF和Iptales都能够在进入你的nginx服务器之前阻止最终用户的访问。<br />
Linux Iptables:限制每次Nginx连接数<br />
下面的例子会阻止来自一个IP的60秒钟内超过15个连接端口80的连接数。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set</li>
<li>/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60  –hitcount 15 -j DROP</li>
<li>service iptables save</li>
</ol>
</blockquote>
</div>
<p>请根据你的具体情况来设置限制的连接数。</p>
<h3>十九：配置操作系统保护Web服务器</h3>
<p>像以上介绍的启动SELinux.正确设置/nginx文档根目录的权限。Nginx以用户nginx运行。但是根目录（/nginx或者/usr /local/nginx/html）不应该设置属于用户nginx或对用户nginx可写。找出错误权限的文件可以使用如下命令：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>find /nginx -user nginx</li>
<li>find /usr/local/nginx/html -user nginx</li>
</ol>
</blockquote>
</div>
<p>确保你更所有权为root或其它用户，一个典型的权限设置 /usr/local/nginx/html/</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>ls -l /usr/local/nginx/html/</li>
</ol>
</blockquote>
</div>
<p>示例输出：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>-rw-r–r– 1 root root 925 Jan  3 00:50 error4xx.html</li>
<li>-rw-r–r– 1 root root  52 Jan  3 10:00 error5xx.html</li>
<li>-rw-r–r– 1 root root 134 Jan  3 00:52 index.html</li>
</ol>
</blockquote>
</div>
<p>你必须删除由vi或其它文本编辑器创建的备份文件：</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>find /nginx -name ‘.?*’ -not -name .ht* -or -name ‘*~’ -or -name ‘*.bak*’ -or -name ‘*.old*’</li>
<li>find /usr/local/nginx/html/ -name ‘.?*’ -not -name .ht* -or -name ‘*~’ -or -name ‘*.bak*’ -or -name ‘*.old*’</li>
</ol>
</blockquote>
</div>
<p>通过find命令的-delete选项来删除这些文件。</p>
<h3>二十、限制Nginx连接传出</h3>
<p>黑客会使用工具如wget下载你服务器本地的文件。使用Iptables从nginx用户来阻止传出连接。ipt_owner模块试图匹配本地产生的数据包的创建者。下面的例子中只允许user用户在外面使用80连接。</p>
<div>
<blockquote>
<ol title="Double click to hide line number.">
<li>/sbin/iptables -A OUTPUT -o eth0 -m owner –uid-owner vivek -p tcp –dport 80 -m state –state NEW,ESTABLISHED  -j ACCEPT</li>
</ol>
</blockquote>
</div>
<p>通过以上的配置，你的nginx服务器已经非常安全了并可以发布网页。可是，你还应该根据你网站程序查找更多的安全设置资料。例如，wordpress或者第三方程序。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/341.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>中文版putty后门事件后的几个需要注意的地方</title>
		<link>http://www.mzfeng.com/html/y2012/340.html</link>
		<comments>http://www.mzfeng.com/html/y2012/340.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 15:34:45 +0000</pubDate>
		<dc:creator>mzfeng</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[putty后门事件]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=340</guid>
		<description><![CDATA[这几天互联网上爆出中文版putty后门事件，引起技术界一片恐慌，大家都争先修改密码、修改端口。这次事件起因就是汉化出来的PUTTY给植入后门了，最主要还是这个软件是连接和管理LINUX服务器的软件。这个软件本来就很小，在网上一搜一大片，很多人都是直接下载就使用，从来都没有怀疑过会出问题；最后就是帐号密码给人家盗走了。 这次事件带来的几个问题值得我们深思: 1.大家尽量使用原官网下载软件来使用。作为国人来讲，下载使用国外软件首先考虑的还是软件是否中文版，但国外软件经过别人汉化有可能给人家植入后门或者病毒；他们可以使软件可以正常运行，同时释放病毒或者开启后门，这样对一般用户来讲很难察觉的。所以，大家尽量在官网下载，比较下载好软件后最好还是进行一下MD5效验。 2.比较常用的软件应该自己拷贝起来自己留用。一些经常使用的软件，可以复制到自己的电脑中留用，经常往外跑或者换电脑的用U盘或者是自己组建个FTP放着。不用每次都是网上搜网上DOWN.当然也可以传到现在时很多免费的网盘，云盘或者邮箱之类的网络储存。要用的时候再去自己的空间下载。 3.要养成经常更改密码的习惯。很多人把服务器弄好后直接把密码保存在软件里面；要用的时候直接联接。久了，自己还会忘记密码。作为技术人员应该经常修改密码，把比较主要的密码要做个备案。一段时候要记得修改密码。]]></description>
			<content:encoded><![CDATA[<p>这几天互联网上爆出中文版<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/putty%e5%90%8e%e9%97%a8%e4%ba%8b%e4%bb%b6" title="查看 putty后门事件 中的全部文章" target="_blank">putty后门事件</a></span>，引起技术界一片恐慌，大家都争先修改密码、修改端口。这次事件起因就是汉化出来的PUTTY给植入后门了，最主要还是这个软件是连接和管理LINUX服务器的软件。这个软件本来就很小，在网上一搜一大片，很多人都是直接下载就使用，从来都没有怀疑过会出问题；最后就是帐号密码给人家盗走了。<br />
这次事件带来的几个问题值得我们深思:<br />
1.大家尽量使用原官网下载软件来使用。作为国人来讲，下载使用国外软件首先考虑的还是软件是否中文版，但国外软件经过别人汉化有可能给人家植入后门或者病毒；他们可以使软件可以正常运行，同时释放病毒或者开启后门，这样对一般用户来讲很难察觉的。所以，大家尽量在官网下载，比较下载好软件后最好还是进行一下MD5效验。<br />
2.比较常用的软件应该自己拷贝起来自己留用。一些经常使用的软件，可以复制到自己的电脑中留用，经常往外跑或者换电脑的用U盘或者是自己组建个FTP放着。不用每次都是网上搜网上DOWN.当然也可以传到现在时很多免费的网盘，云盘或者邮箱之类的网络储存。要用的时候再去自己的空间下载。<span id="more-340"></span><br />
3.要养成经常更改密码的习惯。很多人把服务器弄好后直接把密码保存在软件里面；要用的时候直接联接。久了，自己还会忘记密码。作为技术人员应该经常修改密码，把比较主要的密码要做个备案。一段时候要记得修改密码。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/340.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>超过4G以上的ISO量产方法</title>
		<link>http://www.mzfeng.com/html/y2012/336.html</link>
		<comments>http://www.mzfeng.com/html/y2012/336.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 07:06:02 +0000</pubDate>
		<dc:creator>mzfeng</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[U盘]]></category>
		<category><![CDATA[量产]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=336</guid>
		<description><![CDATA[前阵子下载了CENTOS6.2的ISO准备在U盘进行量产，但是量产试了几次都不成功。自己有几个KINGSTON的8G U盘，都拿来试都不行。但量产其它ISO镜像又没问题，在网上找了一下，原来是ISO镜像太于4G的问题。知道问题在那就好解决了，最终量产成功。原来超过4G或4G以上的ISO镜像量产要指定ISO镜像大小，就是我们量产的时候要指定量产的CD-ROM的容量大小，比如是4.5G的ISO镜像，可以把容量设置成4.6G，这样就能量产成功了。]]></description>
			<content:encoded><![CDATA[<p>前阵子下载了CENTOS6.2的ISO准备在<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/u%e7%9b%98" title="查看 U盘 中的全部文章" target="_blank">U盘</a></span>进行<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e9%87%8f%e4%ba%a7" title="查看 量产 中的全部文章" target="_blank">量产</a></span>，但是<span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/%e9%87%8f%e4%ba%a7" title="查看 量产 中的全部文章" target="_blank">量产</a></span>试了几次都不成功。自己有几个KINGSTON的8G <span class='wp_keywordlink_affiliate'><a href="http://www.mzfeng.com/html/ytag/u%e7%9b%98" title="查看 U盘 中的全部文章" target="_blank">U盘</a></span>，都拿来试都不行。但量产其它ISO镜像又没问题，在网上找了一下，原来是ISO镜像太于4G的问题。知道问题在那就好解决了，最终量产成功。原来超过4G或4G以上的ISO镜像量产要指定ISO镜像大小，就是我们量产的时候要指定量产的CD-ROM的容量大小，比如是4.5G的ISO镜像，可以把容量设置成4.6G，这样就能量产成功了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/336.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mzfeng.com域名终于回来了</title>
		<link>http://www.mzfeng.com/html/y2012/335.html</link>
		<comments>http://www.mzfeng.com/html/y2012/335.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 01:37:01 +0000</pubDate>
		<dc:creator>mzfeng</dc:creator>
				<category><![CDATA[生活琐碎]]></category>

		<guid isPermaLink="false">http://www.mzfeng.com/?p=335</guid>
		<description><![CDATA[域名终于经过抢注回来了。。去年由于域名没有及时续费所以导致域名流失了，现在终于注册回来了。可以继续写我的Blog了。以后写篇抢注域名的介绍。]]></description>
			<content:encoded><![CDATA[<p>域名终于经过抢注回来了。。去年由于域名没有及时续费所以导致域名流失了，现在终于注册回来了。可以继续写我的Blog了。以后写篇抢注域名的介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mzfeng.com/html/y2012/335.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

