动态防火墙
- 需解决的问题
- 项目使用
- 1. 使用
-
- 2 创建service自启动
-
- 3. 如果使用自己的服务器编译
- 原理简介
需解决的问题
使用腾讯云/阿里云服务器时,登录时经常会出现There were XX failed login attempts since the last success,并且这个数量经常成百上千,那么该如何预防境外IP的尝试登录和国内IP的尝试登录次数呢?
可以设置一个动态防火墙,自动监控IP所属的国家地区等,并记录登录时间、失败次数,将非正常访问的IP地址添加到防火墙中
屏蔽指定地区、国家的IP
- 建议先将ssh接收端口更改为非22端口
vi /etc/ssh/sshd_config
更改为其他端口 XX
并执行 semanage port -a -t ssh_port_t -p tcp XX
再重启 systemctl restart sshd.service
ssh登录时指定 -p 指定端口
项目使用
1. 使用
1.1 下载
项目链接:DynamicIpTables
在release中下载DynamicIpTables.tar
,内含可执行文件DynamicIpTables
和config.yaml
1.2 运行
以下执行都是在CentOS 7.6的操作系统下执行的,其它操作系统可能需要自己重新编译为适合自己系统的DynamicIpTables
,参考第3点,另仅适合使用iptables作为防火墙表的系统
执行 nohup ./DynamicIpTables -c config.yaml &
就运行了
执行 tail -f dynamic_log.txt
可实时查看日志
1.3有关配置
secure_log: /var/log/secure
log_file: /var/log/dynamiciptables.log
allow_ip:
- 127.0.0.1
- 202.197.74.82
- 119.28.22.215
rules:
-
port: -1
country: 中国
regionName:
city:
time: 120
count: 5
-
port: -1
country:
regionName:
city:
time: 1
count: 0
2 创建service自启动
可以nohup ./DynamicIpTables -c config.yaml &
启动,也可以创建service
2.1 创建
vi /etc/systemd/system/dynamiciptables.service
,内容如下,其中执行路径改成自己的
[Unit]
Description=dynamic ip tables daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/path/to/DynamicIpTables -c /path/to/config.yml
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
2.2 运行
启动前应先将刚才nohup启动的进程kill掉,ps -aux| grep DynamicIpTables
获取到进程id再kill
systemctl enable dynamiciptables
systemctl start dynamiciptables
3. 如果使用自己的服务器编译
pyinstaller -F DynamicIpTables.py
将会生成一个build和一个dist的文件夹
生成的可执行为文件在dist中
ps:运行时用ps查看进程会发现有两个进程,原因是当指明-F参数构建时,程序被解压缩到一个临时目录并从那里运行。第二个进程是实际的程序,而第一个进程是在程序退出或崩溃后清理临时目录。因此, 去除 -F参数时, 就可以显示一个进程, 但是如果只有一个进程,那么在崩溃的情况下就无法清理临时目录
原理简介
监控/var/log/secure
文件变化,记录每个ip登录失败的次数和时间,在线查询IP所处国家和地区,符合设置规则的加入至防火墙(iptables)中,程序由Python编写
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)