CentOS下使用Fail2ban来禁止指定IP访问的方法
安装和配置
fail2ban工具通过分析日志来自动 ban 入侵者的IP,下载地址在:
http://fail2ban.sourceforge.net/rpms/
找到最新版本的 rpm 包来安装,装好后,稍微根据自己的情况改一下配置就可以使用了。
复制代码
代码如下:
vi /etc/fail2ban.conf
#以 daemon 方式启动 fail2ban
background = true
#允许尝试次数
maxfailures = 3
#触发 maxfailures 之後的封锁时间(秒); 设为 -1 表示永远封锁
bantime = 3600
#以 findtime (秒) 时间内的错误记录作为 maxfailures 的计数基准
findtime = 600
#排除 IP 范围, 以空白隔开
ignoreip = 127.0.0.1 192.168.0.0/24
#不启用 mail 通知
[MAIL]
enabled = false
#修改自 VSFTPD, 未提及的部份保持原设定
[PROFTPD]
enabled = true
logfile = /var/log/proftpd/proftpd.log
failregex = no such user|Incorrect password
#未提及的部份保持原设定
[SSH]
enabled = true
logfile = /var/log/secure
service fail2ban start
这个服务启动以后,每天都能在 /var/log/fail2ban.log 中看到有攻击的肉鸡被 ban 了。
vi /etc/fail2ban.conf
#以 daemon 方式启动 fail2ban
background = true
#允许尝试次数
maxfailures = 3
#触发 maxfailures 之後的封锁时间(秒); 设为 -1 表示永远封锁
bantime = 3600
#以 findtime (秒) 时间内的错误记录作为 maxfailures 的计数基准
findtime = 600
#排除 IP 范围, 以空白隔开
ignoreip = 127.0.0.1 192.168.0.0/24
#不启用 mail 通知
[MAIL]
enabled = false
#修改自 VSFTPD, 未提及的部份保持原设定
[PROFTPD]
enabled = true
logfile = /var/log/proftpd/proftpd.log
failregex = no such user|Incorrect password
#未提及的部份保持原设定
[SSH]
enabled = true
logfile = /var/log/secure
service fail2ban start
这个服务启动以后,每天都能在 /var/log/fail2ban.log 中看到有攻击的肉鸡被 ban 了。
复制代码
代码如下:
2015-08-01 09:13:33,532 WARNING: SSH: Ban (3600 s) 205.189.197.66
2015-08-01 12:24:41,943 WARNING: SSH: Ban (3600 s) 121.52.209.5
2015-08-01 09:13:33,532 WARNING: SSH: Ban (3600 s) 205.189.197.66
2015-08-01 12:24:41,943 WARNING: SSH: Ban (3600 s) 121.52.209.5
移除被 Fail2ban 禁止的 IP
如果你已经安装并使用了 fail2ban 来保护你的 web 服务器,你也许会想知道如何在 CentOS 6、CentOS 7、RHEL 6、RHEL 7 和 Oracle Linux 6/7 中找到被 fail2ban 阻止的 IP,或者你想将 ip 从 fail2ban 监狱中移除。
要查看所有被禁止的 ip 地址,运行下面的命令:
复制代码
代码如下:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-AccessForbidden tcp -- anywhere anywhere tcp dpt:http
f2b-WPLogin tcp -- anywhere anywhere tcp dpt:http
f2b-ConnLimit tcp -- anywhere anywhere tcp dpt:http
f2b-ReqLimit tcp -- anywhere anywhere tcp dpt:http
f2b-NoAuthFailures tcp -- anywhere anywhere tcp dpt:http
f2b-SSH tcp -- anywhere anywhere tcp dpt:ssh
f2b-php-url-open tcp -- anywhere anywhere tcp dpt:http
f2b-nginx-http-auth tcp -- anywhere anywhere multiport dports http,https
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
ACCEPT tcp -- anywhere anywhere tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-NoAuthFailures (1 references)
target prot opt source destination
REJECT all -- 64.68.50.128 anywhere reject-with icmp-port-unreachable
REJECT all -- 104.194.26.205 anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
从 Fail2ban 中移除 IP
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-AccessForbidden tcp -- anywhere anywhere tcp dpt:http
f2b-WPLogin tcp -- anywhere anywhere tcp dpt:http
f2b-ConnLimit tcp -- anywhere anywhere tcp dpt:http
f2b-ReqLimit tcp -- anywhere anywhere tcp dpt:http
f2b-NoAuthFailures tcp -- anywhere anywhere tcp dpt:http
f2b-SSH tcp -- anywhere anywhere tcp dpt:ssh
f2b-php-url-open tcp -- anywhere anywhere tcp dpt:http
f2b-nginx-http-auth tcp -- anywhere anywhere multiport dports http,https
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
ACCEPT tcp -- anywhere anywhere tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-NoAuthFailures (1 references)
target prot opt source destination
REJECT all -- 64.68.50.128 anywhere reject-with icmp-port-unreachable
REJECT all -- 104.194.26.205 anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
从 Fail2ban 中移除 IP
复制代码
代码如下:
# iptables -D f2b-NoAuthFailures -s banned_ip -j REJECT
# iptables -D f2b-NoAuthFailures -s banned_ip -j REJECT