shell脚本结合iptables防端口扫描的实现方法

发布时间:2021-07-27 22:30:23 作者:chen
来源:亿速云 阅读:278

这篇文章主要讲解了“shell脚本结合iptables防端口扫描的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell脚本结合iptables防端口扫描的实现方法”吧!

网上有现在的防端口工具,如psad、portsentry,但觉得配置有点麻烦,且服务器不想再装一个额外的软件。所以自己就写了个shell脚本实现这个功能。基本思路是:使用iptables的recent模块记录下在60秒钟内扫描超过10个端口的IP,并结合inotify-tools工具实时监控iptables的日志,一旦iptables日志文件有写入新的ip记录,则使用iptables封锁源ip,起到了防止端口扫描的功能。

1、iptables规则设置

新建脚本iptables.sh,执行此脚本。

代码如下:

IPT="/sbin/iptables"
$IPT --delete-chain
$IPT --flush

#Default Policy
$IPT -P INPUT DROP  
$IPT -P FORWARD DROP 
$IPT -P OUTPUT DROP

#INPUT Chain
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
$IPT -A INPUT -p tcp --syn -m recent --name portscan --rcheck --seconds 60 --hitcount 10 -j LOG
$IPT -A INPUT -p tcp --syn -m recent --name portscan --set -j DROP
#OUTPUT Chain
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

#iptables save
service iptables save
service iptables restart


注意:17-18行的两条规则务必在INPUT链的最下面,其它规则自己可以补充。

2、iptables日志位置更改

编辑/etc/syslog.conf,添加:

代码如下:

kern.warning /var/log/iptables.log


重启syslog

代码如下:

/etc/init.d/syslog restart



3、防端口扫描shell脚本

首先安装inotify:

代码如下:

yum install inotify-tools


保存以下代码为ban-portscan.sh

代码如下:

btime=600 #封ip的时间
while true;do
    while inotifywait -q -q -e modify /var/log/iptables.log;do
        ip=`tail -1 /var/log/iptables.log | awk -F"[ =]" '{print $13}' | grep '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'`
        if test -z "`/sbin/iptables -nL | grep $ip`";then
            /sbin/iptables -I INPUT -s $ip -j DROP
            {
            sleep $btime && /sbin/iptables -D INPUT -s $ip -j DROP
            } &
        fi
    done
done


执行命令开始启用端口防扫描

代码如下:

nohup ./ban-portscan.sh &

感谢各位的阅读,以上就是“shell脚本结合iptables防端口扫描的实现方法”的内容了,经过本文的学习后,相信大家对shell脚本结合iptables防端口扫描的实现方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 目标端口扫描方法总结
  2. linux防墙iptables详细介绍、配置方法与案例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

shell iptables

上一篇:shell脚本怎么实现监控php-fpm并自动重启服务

下一篇:CSS怎么解决无空格的字母、数字过长不自动换行的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》