[root@5kohi ~]# crontab -l
* * * * * sh /home/shells/iptables_auto_accept_ssh_source_ip.sh
[root@5kohi ~]# cat /home/shells/iptables_auto_accept_ssh_source_ip.sh
#!/bin/bash
# 该脚本基于centos7操作系统
# 建议禁用firewalld服务,启用iptables服务
# yum install -y iptables-services
# systemctl disable firewalld.service
# systemctl start firewalld.service
# systemctl enable iptables.services
# systemctl start iptables.services
# 修改iptables默认配置文件 /etc/sysconfig/iptables
# 修改sshd监听端口后,要同时修改防火墙配置,比如我使用的是tcp 2222端口
# -A INPUT -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT
# 修改INPUT和FORWARD默认规则为DROP
# -A INPUT -j DROP
# -A FORWARD -j DROP
# 改完配置记得重启下服务
# systemctl restart iptables.services
# 将该脚本添加到计划任务中,每分钟执行一次
# * * * * * sh /home/shells/iptables_auto_accept_ssh_source_ip.sh
# 对于当前成功登录ssh的来源IP,放行所有端口
w \
| grep pts \
| awk '{print $3}' \
| while read sIP
do
/usr/sbin/iptables-save \
| grep '\-A INPUT \-s '$sIP'/32 -j ACCEPT' &>/dev/null \
|| /usr/sbin/iptables -I INPUT -s $sIP -j ACCEPT
done
# 当某IP退出ssh登录后,删除之前的放行策略
/usr/sbin/iptables-save \
| grep '\-A INPUT \-s .*/32 -j ACCEPT' \
| awk -F ' |/' '{print $4}' \
| while read sIP
do
w \
| grep $sIP &>/dev/null \
|| /usr/sbin/iptables -D INPUT -s $sIP -j ACCEPT
done