linux服务器(nginx或者apache)限制IP访问的方法

近段时间一直饱受垃圾评论的攻击,服务器一度负载太高而宕机,参见:WordPress垃圾评论防御记。开始试了很多方法都不能很好的解决问题,最后通过屏蔽垃圾评论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`= 'spam'
执行好了之后,导出这些IP,保存csv格式,然后直接用Excle打开,排序,去重,就得到唯一的垃圾评论IP了。

得到垃圾评论了之后就可以按照上面的方式操作了。

apache环境下

空间支持 .htaccess

<Limit GET HEAD POST> 

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 

</Limit>
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 ACCEPT
-A INPUT -j DROP
COMMIT

iptables 限制ip访问

通过iptables限制9889端口的访问(只允许192.168.1.201、192.168.1.202、192.168.1.203),其他ip都禁止访问
iptables -I INPUT -p tcp --dport 9889 -j DROP
iptables -I INPUT -s 192.168.1.201 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.202 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.203 -p tcp --dport 9889 -j ACCEPT

 

如果你之前的防火墙设置了永久关闭,则需要解除

chkconfig --list 查看启动服务,找到要关闭服务名
chkconfig --level 235 服务名 off 【在等级3和5为开机运行服务】

系统运行级别有0—6,就在/etc/inittab中的0-6

    等级0表示:表示关机

    等级1表示:单用户模式

    等级2表示:无网络连接的多用户命令行模式

    等级3表示:有网络连接的多用户命令行模式

    等级4表示:不可用

    等级5表示:带图形界面的多用户模式

    等级6表示:重新启动2011/10/26

时间: 2024-12-29 03:24:30

linux服务器(nginx或者apache)限制IP访问的方法的相关文章

linux服务器(nginx或者apache)限制IP访问

 近段时间一直饱受垃圾评论的攻击,服务器一度负载太高而宕机,参见:WordPress垃圾评论防御记.开始试了很多方法都不能很好的解决问题,最后通过屏蔽垃圾评论IP的方式,算是解决了这个问题,当然这个方法不是最好的,但是确实是非常实用的方法. 然后一些朋友就问我是怎么屏蔽这些垃圾评论的IP的,以及能否共享这些垃圾评论的IP,还有朋友问怎么提取自己博客的垃圾评论的IP,这个稍稍讲解下,高手略过,我也是个菜鸟. nginx环境下 新建 denyip.conf 文件,在服务器/usr/local/ngi

Linux服务器如何静禁止某些IP访问?

问题描述 Linux服务器如何静禁止某些IP访问? Linux服务器通过命令式的方式的如何禁止某些IP的访问?求详细指导 解决方案 请参考http://dengqsintyt.iteye.com/blog/2018005 解决方案二: 那我要封杀115.239.212.1到255写法:iptables -I INPUT -s 115.239.212.0/255 -j DROP 是不是这样写哦? 解决方案三: iptables 光写命令可能没有保存吧,需要写成sh脚本,然后启动后自动执行.

Nginx禁止用户真实IP访问的方法配置

做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描.拉取.注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables . Nginx 的deny指令或者是程序来ban掉这些恶意请求.   而对于套了一层 CDN 或代理的网站,这些方法可能就失效了.尤其是个人网站,可能就一台VPS,然后套一个免费的CDN就行走在互联网了.并不是每个CDN都能精准的拦截各种恶意请求的,更闹心的是很多CDN还不支持用户在CDN上添加BAN规则,比如腾讯云CDN...   因此,就有了本文的

如何开放azure上的linux服务器的端口供外网访问

问题描述 如何开放azure上的linux服务器的端口供外网访问 我有一个在azure上的linux服务器,在linux服务器上运行了程序,在服务器上通过浏览器访问localhost:8080/login.html能够访问我运行的程序,我现在想对外网开放8080端口.达到在外网访问程序的目的,既在外网通过浏览器登录:ip(服务器对外ip):8080/login.html访问我的程序.该怎么实现呢? 解决方案 这个简单,在你的 azure 门户上点虚拟机,选择你的虚拟机,然后再配置中找到endpo

Nginx中禁止使用IP访问网站的配置实例_nginx

国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用I

Linux环境Nginx与Apache HTTP性能对比测试

今天看到killkill作者关于Linux环境Nginx与http://www.aliyun.com/zixun/aggregation/14417.html">Apache HTTP性能对比测试,很受启发,特别转载过来与大家一起分享,虽然在Linux系统下Nginx与Apache各有所长,但在大压力,大访问量,大数据的情况下的确要比Apache的表现要好!详情请看文中的详细性能对比测试结果! 下载并编译安装,我的编译过程有点特别: 1.去除调试信息,修改$nginx_setup_path

asp.net实现拒绝频繁的IP访问的方法_实用技巧

本文实例讲述了asp.net实现拒绝频繁的IP访问的方法.分享给大家供大家参考,具体如下: 首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.Web.SessionState; using System.Configuration; namespace MyHttp

Nginx防止直接用IP访问Web服务器的设置方法_nginx

官方文档中提供的方法: If you do not want to process requests with undefined "Host" header lines, you may define a default server that just drops the requests: 复制代码 代码如下: server { listen 80 default_server; server_name _; return 444; } 说白了就是只要是访客用ip访问就直接重置4

nginx与apache限制ip连接数和带宽方法

 1,配置nginx.conf 代码如下 http{ ............. limit_zone   one  $binary_remote_addr  10m;  //我记得默认配置就有,只不过是注释掉了,如果没有加一下 ..............  server{  .................  location {  .........  limit_conn one 20;          //连接数限制  limit_rate 500k;            //带