<?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>深度VPS &#187; 限制</title>
	<atom:link href="http://www.deepvps.com/tag/%E9%99%90%E5%88%B6/feed" rel="self" type="application/rss+xml" />
	<link>http://www.deepvps.com</link>
	<description>专注VPS技术，关注前端技术</description>
	<lastBuildDate>Sat, 04 Feb 2023 14:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux服务器 限制IP访问</title>
		<link>http://www.deepvps.com/linux-deny-ip.html</link>
		<comments>http://www.deepvps.com/linux-deny-ip.html#comments</comments>
		<pubDate>Thu, 17 Apr 2014 13:52:42 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS安全]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[限制]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=1447</guid>
		<description><![CDATA[近段时间博主一直饱受垃圾评论的攻击，服务器一度负载太高而宕机。开始试了很多方法都不能很好的解决问题，最后通过屏蔽垃圾评论IP的方式，算是解决了这个问题，当然这个方法不是最好的，但是确实是非常实用的方法。
然后一些朋友就问我是怎么屏蔽这些垃圾评论的IP的，以及能否共享这些垃圾评论的IP，还有朋友问怎么提取自己博客的垃圾评论的IP，这个稍稍讲解下。
第一，nginx环境下
新建 denyip.conf 文件，在服务器/usr/local/nginx/conf目录下的nginx.conf里面，加上
include denyip.conf;
将屏蔽的IP放到 denyip.conf 里面
deny 110.83.0.0/16;
deny 110.84.111.0/24;
deny 110.85.124.56;
保存之后将 denyip.conf 上传到/usr/local/nginx/conf目录下，弄好之后记得重启nginx。
上面我列举了3中屏蔽类型，第一行的是屏蔽110.83.*.*的所有IP，第二行的是屏蔽110.84.111.*的所有IP，第三行是只屏蔽110.85.124.56这个IP。
第一行的屏蔽的范围较大，很容易误拦，第三行的疲敝最稳妥，但是IP越多导致文件会很大，也不算太可取，第二行的方式是我目前使用的，好处坏处介于2这之间，大家可以自由选择。
垃圾评论IP的收集
有人问我如何收集这些垃圾评论IP的，其实很简单，一个SQL就搞定，然后Excle处理下。
首先安装Akismet插件，这个插件会把垃圾评论标记为spam，只安装这一个就可以了，其他任何防评论插件请勿安装。
SELECT `comment_author_IP` FROM `wp_comments` WHERE `comment_approved`= &#8217;spam&#8217;
执行好了之后，导出这些IP，保存csv格式，然后直接用Excle打开，排序，去重，就得到唯一的垃圾评论IP了。
得到垃圾评论了之后就可以按照上面的方式操作了。
第二，apache环境下
空间支持 .htaccess
&#60;Limit GET HEAD POST&#62;
order allow,deny
deny from 110.85.104.152
deny from 110.85.113
deny from 110.85.113.0/24
deny from 110.87
deny from 110.87.0.0/16
deny from 110.86.167.210 110.86.184.181
deny from 110.86.185.0/24 110.86.187.0/24
allow from all
&#60;/Limit&#62;
apache下关于限制IP的写法比较多种，IP开始的第一行，是最普通的限制唯一IP，第二行跟第三行表达的内容是一样的，限制110.85.113.* 下所有的IP；第四五行也是一样的，限制110.87.*.* 下所有的IP；第六行是限制这2个IP，第7行就是显示这两个IP段；注意多个IP限制时用空格分开。
目前我收集的垃圾评论的IP
经过大约一周时间的统计，目前收集了一批垃圾评论的IP，用纯真IP批量跑了这些IP，其中以福建莆田市的居多，美国的也不少。如果你也饱受垃圾评论的攻击，可以用用这个方法和IP，我会定期更新IP数据的。
第三，iptables IP限制访问 指定IP访问
只允许指定的一个IP访问服务器
vi /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 165.232.121.17 -j [...]]]></description>
			<content:encoded><![CDATA[<p>近段时间博主一直饱受垃圾评论的攻击，服务器一度负载太高而宕机。开始试了很多方法都不能很好的解决问题，最后通过屏蔽垃圾评论IP的方式，算是解决了这个问题，当然这个方法不是最好的，但是确实是非常实用的方法。</p>
<p>然后一些朋友就问我是怎么屏蔽这些垃圾评论的IP的，以及能否共享这些垃圾评论的IP，还有朋友问怎么提取自己博客的垃圾评论的IP，这个稍稍讲解下。<span id="more-1447"></span></p>
<p>第一，nginx环境下</p>
<p>新建 denyip.conf 文件，在服务器/usr/local/nginx/conf目录下的nginx.conf里面，加上</p>
<p>include denyip.conf;</p>
<p>将屏蔽的IP放到 denyip.conf 里面</p>
<p>deny 110.83.0.0/16;</p>
<p>deny 110.84.111.0/24;</p>
<p>deny 110.85.124.56;</p>
<p>保存之后将 denyip.conf 上传到/usr/local/nginx/conf目录下，弄好之后记得重启nginx。</p>
<p>上面我列举了3中屏蔽类型，第一行的是屏蔽110.83.*.*的所有IP，第二行的是屏蔽110.84.111.*的所有IP，第三行是只屏蔽110.85.124.56这个IP。</p>
<p>第一行的屏蔽的范围较大，很容易误拦，第三行的疲敝最稳妥，但是IP越多导致文件会很大，也不算太可取，第二行的方式是我目前使用的，好处坏处介于2这之间，大家可以自由选择。</p>
<p>垃圾评论IP的收集<br />
有人问我如何收集这些垃圾评论IP的，其实很简单，一个SQL就搞定，然后Excle处理下。</p>
<p>首先安装Akismet插件，这个插件会把垃圾评论标记为spam，只安装这一个就可以了，其他任何防评论插件请勿安装。</p>
<p>SELECT `comment_author_IP` FROM `wp_comments` WHERE `comment_approved`= &#8217;spam&#8217;<br />
执行好了之后，导出这些IP，保存csv格式，然后直接用Excle打开，排序，去重，就得到唯一的垃圾评论IP了。</p>
<p>得到垃圾评论了之后就可以按照上面的方式操作了。</p>
<p>第二，apache环境下</p>
<p>空间支持 .htaccess</p>
<p>&lt;Limit GET HEAD POST&gt;</p>
<p>order allow,deny</p>
<p>deny from 110.85.104.152</p>
<p>deny from 110.85.113</p>
<p>deny from 110.85.113.0/24</p>
<p>deny from 110.87</p>
<p>deny from 110.87.0.0/16</p>
<p>deny from 110.86.167.210 110.86.184.181</p>
<p>deny from 110.86.185.0/24 110.86.187.0/24</p>
<p>allow from all</p>
<p>&lt;/Limit&gt;<br />
apache下关于限制IP的写法比较多种，IP开始的第一行，是最普通的限制唯一IP，第二行跟第三行表达的内容是一样的，限制110.85.113.* 下所有的IP；第四五行也是一样的，限制110.87.*.* 下所有的IP；第六行是限制这2个IP，第7行就是显示这两个IP段；注意多个IP限制时用空格分开。</p>
<p>目前我收集的垃圾评论的IP<br />
经过大约一周时间的统计，目前收集了一批垃圾评论的IP，用纯真IP批量跑了这些IP，其中以福建莆田市的居多，美国的也不少。如果你也饱受垃圾评论的攻击，可以用用这个方法和IP，我会定期更新IP数据的。<br />
第三，iptables IP限制访问 指定IP访问</p>
<p>只允许指定的一个IP访问服务器</p>
<p>vi /etc/sysconfig/iptables</p>
<p>*filter<br />
:INPUT ACCEPT [0:0]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [0:0]</p>
<p>-A INPUT -s 165.232.121.17 -j ACCEPT<br />
-A INPUT -j DROP<br />
COMMIT</p>
<p>iptables 限制ip访问</p>
<p>通过iptables限制9889端口的访问（只允许192.168.1.201、192.168.1.202、192.168.1.203）,其他ip都禁止访问<br />
iptables -I INPUT -p tcp &#8211;dport 9889 -j DROP<br />
iptables -I INPUT -s 192.168.1.201 -p tcp &#8211;dport 9889 -j ACCEPT<br />
iptables -I INPUT -s 192.168.1.202 -p tcp &#8211;dport 9889 -j ACCEPT<br />
iptables -I INPUT -s 192.168.1.203 -p tcp &#8211;dport 9889 -j ACCEPT</p>
<p>如果你之前的防火墙设置了永久关闭，则需要解除</p>
<p>chkconfig &#8211;list 查看启动服务，找到要关闭服务名<br />
chkconfig &#8211;level 235 服务名 off 【在等级3和5为开机运行服务】</p>
<p>系统运行级别有0—6，就在/etc/inittab中的0-6</p>
<p>等级0表示：表示关机</p>
<p>等级1表示：单用户模式</p>
<p>等级2表示：无网络连接的多用户命令行模式</p>
<p>等级3表示：有网络连接的多用户命令行模式</p>
<p>等级4表示：不可用</p>
<p>等级5表示：带图形界面的多用户模式</p>
<p>等级6表示：重新启动2011/10/26</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/linux-deny-ip.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>KLOXO的使用用的2个小技巧</title>
		<link>http://www.deepvps.com/kloxo-two-skill.html</link>
		<comments>http://www.deepvps.com/kloxo-two-skill.html#comments</comments>
		<pubDate>Fri, 16 Apr 2010 04:17:54 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS控制面板]]></category>
		<category><![CDATA[Kloxo]]></category>
		<category><![CDATA[泛域名]]></category>
		<category><![CDATA[绑定]]></category>
		<category><![CDATA[限制]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=398</guid>
		<description><![CDATA[[KLOXO]更改FTP文件列表显示1998个文件的限制
实际上是2000个，还有2个分别是.和..
编辑文件/etc/xinetd.d/pureftp
其中的server_args段有这么一项
-L2000:8
2000是指限制的显示文件个数，将这个值加大即可，比如改成200000.
不要把这个选项去掉，PUREFTPD默认的好像就是2000个。。
编辑完保存退出。
执行下面的命令：
service xinetd restart
重启xinetd后生效。KLOXO为了节省资源，用的XINETD方式启动pureftpd。

[KLOXO] IP访问&#38;泛域名绑定&#38;未绑定域名访问
根据我们的经验，在实际使用中，客户大概会有以下几种要求：
1，绑定特定域名，使用绑定的域名进行访问。（绝大多数情况）
2，输入IP地址进行访问。
3，绑定泛域名解析。
4，设置所有未绑定，但是已经解析到这个IP的域名访问指定目录。
以下设置均针对Lighttpd环境。
1，绑定特定域名，使用绑定的域名进行访问。
略
2，输入IP地址进行访问。
Kloxo首页&#62;资源&#62;IP地址&#62;具体IP&#62;配置域名&#62;设置需要使用IP访问的站点所绑定的域名。
（该域名必须已经解析到这个IP上，注意是否有带www。）
3，绑定泛域名解析。
Kloxo首页&#62;域名&#62;具体域名&#62;解压/扩展&#62;主机别名&#62;添加别名“*”（星号）
4，设置所有未绑定，但是已经解析到这个IP的域名访问指定目录。
mkdir /home/admin/default
chown admin:admin /home/admin/default
编辑/etc/lighttpd/lighttpd.conf
将
server.document-root = &#8220;/home/kloxo/httpd/default/&#8221;
改为
server.document-root = &#8220;/home/admin/default/&#8221;
在后面添加下面的内容（如果不需要运行PHP可以略过）
fastcgi.server = (&#8220;.php&#8221; =&#62;(( &#8220;socket&#8221; =&#62; &#8220;/var/tmp/lighttpd/php.socket.default.&#8221; + var.PID,
&#8220;bin-path&#8221; =&#62; &#8220;/usr/bin/lxsuexec&#8221;,
&#8220;min-procs&#8221; =&#62; 0,
&#8220;max-procs&#8221; =&#62; 1,
&#8220;bin-environment&#8221; =&#62; (
&#8220;MUID&#8221; =&#62; &#8220;1006&#8243;,
&#8220;GID&#8221; =&#62; &#8220;1006&#8243;,
&#8220;TARGET&#8221; =&#62; &#8220;/usr/bin/php-cgi&#8221;,
&#8220;NON_RESIDENT&#8221; =&#62; &#8220;0&#8243;,
&#8220;PHP_FCGI_CHILDREN&#8221; =&#62; &#8220;0&#8243;,
&#8220;PHP_FCGI_MAX_REQUESTS&#8221; =&#62; &#8220;100000000&#8243;
),
&#8220;max-load-per-proc&#8221; =&#62; 1000,
&#8220;idle-timeout&#8221; =&#62; 3
))
)
]]></description>
			<content:encoded><![CDATA[<h5>[KLOXO]更改FTP文件列表显示1998个文件的限制</h5>
<p>实际上是2000个，还有2个分别是.和..</p>
<p>编辑文件/etc/xinetd.d/pureftp<br />
其中的server_args段有这么一项<br />
-L2000:8<br />
2000是指限制的显示文件个数，将这个值加大即可，比如改成200000.<br />
不要把这个选项去掉，PUREFTPD默认的好像就是2000个。。<br />
编辑完保存退出。<br />
执行下面的命令：<br />
service xinetd restart<br />
重启xinetd后生效。KLOXO为了节省资源，用的XINETD方式启动pureftpd。<br />
<span id="more-398"></span></p>
<h5>[KLOXO] IP访问&amp;泛域名绑定&amp;未绑定域名访问</h5>
<p>根据我们的经验，在实际使用中，客户大概会有以下几种要求：<br />
1，绑定特定域名，使用绑定的域名进行访问。（绝大多数情况）<br />
2，输入IP地址进行访问。<br />
3，绑定泛域名解析。<br />
4，设置所有未绑定，但是已经解析到这个IP的域名访问指定目录。</p>
<p>以下设置均针对Lighttpd环境。</p>
<p>1，绑定特定域名，使用绑定的域名进行访问。<br />
略</p>
<p>2，输入IP地址进行访问。<br />
Kloxo首页&gt;资源&gt;IP地址&gt;具体IP&gt;配置域名&gt;设置需要使用IP访问的站点所绑定的域名。<br />
（该域名必须已经解析到这个IP上，注意是否有带www。）</p>
<p>3，绑定泛域名解析。<br />
Kloxo首页&gt;域名&gt;具体域名&gt;解压/扩展&gt;主机别名&gt;添加别名“*”（星号）</p>
<p>4，设置所有未绑定，但是已经解析到这个IP的域名访问指定目录。</p>
<blockquote><p>mkdir /home/admin/default<br />
chown admin:admin /home/admin/default<br />
编辑/etc/lighttpd/lighttpd.conf<br />
将<br />
server.document-root = &#8220;/home/kloxo/httpd/default/&#8221;<br />
改为<br />
server.document-root = &#8220;/home/admin/default/&#8221;<br />
在后面添加下面的内容（如果不需要运行PHP可以略过）<br />
fastcgi.server = (&#8220;.php&#8221; =&gt;(( &#8220;socket&#8221; =&gt; &#8220;/var/tmp/lighttpd/php.socket.default.&#8221; + var.PID,<br />
&#8220;bin-path&#8221; =&gt; &#8220;/usr/bin/lxsuexec&#8221;,<br />
&#8220;min-procs&#8221; =&gt; 0,<br />
&#8220;max-procs&#8221; =&gt; 1,<br />
&#8220;bin-environment&#8221; =&gt; (<br />
&#8220;MUID&#8221; =&gt; &#8220;1006&#8243;,<br />
&#8220;GID&#8221; =&gt; &#8220;1006&#8243;,<br />
&#8220;TARGET&#8221; =&gt; &#8220;/usr/bin/php-cgi&#8221;,<br />
&#8220;NON_RESIDENT&#8221; =&gt; &#8220;0&#8243;,<br />
&#8220;PHP_FCGI_CHILDREN&#8221; =&gt; &#8220;0&#8243;,<br />
&#8220;PHP_FCGI_MAX_REQUESTS&#8221; =&gt; &#8220;100000000&#8243;<br />
),<br />
&#8220;max-load-per-proc&#8221; =&gt; 1000,<br />
&#8220;idle-timeout&#8221; =&gt; 3<br />
))<br />
)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/kloxo-two-skill.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>真正实现限制SSH单用户登录</title>
		<link>http://www.deepvps.com/limit-a-single-user-login-ssh.html</link>
		<comments>http://www.deepvps.com/limit-a-single-user-login-ssh.html#comments</comments>
		<pubDate>Fri, 09 Apr 2010 15:35:21 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS管理维护]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[单用户]]></category>
		<category><![CDATA[限制]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=372</guid>
		<description><![CDATA[功能： 实现root之外的用户只能登录一个ssh
使用方法： 用root权限在后台(比如screen里)运行这个脚本
#!/usr/bin/perl -w
use strict;
sub main
{
    my @lines = `ps -eo user,pid,etime,cmd &#124; grep sshd`;
    my $users;
    for my $line (@lines) {
        if(my ($user, $pid, $etime, $cmd) = $line =~ /^([^s]+)s+(d+)s+([^s]+)s+(sshd:.+)$/) {
            next if($user eq &#8216;root&#8217;);
            my $proc = {&#8216;pid&#8217;, $pid, &#8216;etime&#8217;, $etime, &#8216;cmd&#8217;, $cmd};
  [...]]]></description>
			<content:encoded><![CDATA[<p>功能： 实现root之外的用户只能登录一个ssh<br />
使用方法： 用root权限在后台(比如screen里)运行这个脚本<span id="more-372"></span></p>
<blockquote><p>#!/usr/bin/perl -w<br />
use strict;<br />
sub main<br />
{<br />
    my @lines = `ps -eo user,pid,etime,cmd | grep sshd`;<br />
    my $users;<br />
    for my $line (@lines) {<br />
        if(my ($user, $pid, $etime, $cmd) = $line =~ /^([^s]+)s+(d+)s+([^s]+)s+(sshd:.+)$/) {<br />
            next if($user eq &#8216;root&#8217;);<br />
            my $proc = {&#8216;pid&#8217;, $pid, &#8216;etime&#8217;, $etime, &#8216;cmd&#8217;, $cmd};<br />
            push @{$users-&gt;{$user}}, $proc;<br />
        }<br />
    }<br />
    for my $key(keys(%$users)) {<br />
         my @sshs = sort {<br />
            my ($lb, $la) = (length($b-&gt;{&#8216;etime&#8217;}), length($a-&gt;{&#8216;etime&#8217;}));<br />
            if($lb == $la) {<br />
                $b-&gt;{&#8216;etime&#8217;} cmp $a-&gt;{&#8216;etime&#8217;};<br />
            } else {<br />
                $lb &lt;=&gt; $la;<br />
            }<br />
        } @{$users-&gt;{$key}};<br />
        for (1 .. 1) { shift @sshs; };<br />
        for my $ssh (@sshs) {<br />
            kill 9, $ssh-&gt;{&#8216;pid&#8217;};<br />
        }<br />
    }<br />
}<br />
while(1) {<br />
    main;<br />
    sleep 3;<br />
}</p></blockquote>
<p>转自：<a href="http://www.hostloc.com" target="_blank">全球主机交流论坛</a>   greensnow</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/limit-a-single-user-login-ssh.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
