禁止恶意ip连接服务器

本文最后更新于:2024年9月16日 下午

实现原理

由于 /var/log/auth.log 会记录所有用户的登录信息,通过提取 Failed password 类型的连接ip,然后将其加入 /etc/hosts.deny 文件,就可以禁止该ip再次连接。

具体步骤

1.首先确保安装了python

2.然后在 /home 目录下 touch bannedip.py ,写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
with open("/etc/hosts.deny") as f:
deny = f.read().split("\n")

with open("/var/log/auth.log") as f:
log = f.read().split("\n")

ipset = set()

for each in log:
if 'Failed password' in each:
ip = each.split(' from ')[1].split(' port ')[0]
writein = 'ALL: ' + ip
ipset.add(writein)

with open('/etc/hosts.deny', 'a') as f:
for each in ipset:
if each not in deny:
print(each)
f.write(each + '\n')

3.创建定时任务,每5分钟执行一次

1
2
crontab -e
*/5 * * * * python /home/bannedip.py

4.手动将自己的ip(段)加入白名单 /etc/hosts.allow ,不然万一输错密码,把自己也关在外边就不好玩啦


禁止恶意ip连接服务器
https://andyppang.github.io/2021/04/08/禁止恶意IP连接服务器/
作者
PL
发布于
2021年4月8日
许可协议