linux试密码3次则屏蔽ip,linux centos封锁多次ssh密码错误的主机IP

封锁多次ssh密码错误的主机IP

.建立脚本内容

$ cat /home/cnscn/sh/ssh_scan_crontab.sh

#!/bin/bash

# Author

http://jabin.cublog.cn

# Modify cnscn

http://cnscn2008.cublog.cn

# Modify xinyv

#设置时区

export LC_ALL=UTC

# 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数, 并用Iptables阻止之

SCANNER=$(awk

‘BEGIN{ tm=strftime(“%b %e %H:%M”,systime()-60);}  $0 ~ tm &&

/Failed password/ && /ssh2/ {print $(NF-3)}’ /var/log/secure |sort|uniq -c |awk

‘{print $1″=”$2;}’)

for i in $SCANNER

do

echo $i

# 取认证失败次数

NUM=`echo $i|awk -F= ‘{print $1}’`

# 取其 IP 地址

IP=`echo $i|awk -F= ‘{print $2}’`

# 若其在失败次数超过 5 次且之前没有被阻断过,那么添加一条策略将其阻断,并记录日志

if [ $NUM -gt 5 ] && [ -z "`/sbin/iptables -vnL INPUT|grep $IP`" ]

then

/sbin/iptables -I INPUT -s $IP -j DROP

echo “/sbin/iptables -I INPUT -s $IP -j DROP” >> /home/cnscn/sh/ssh_scan_iptables.sh

echo “`date` $IP($NUM)” >> /var/log/scanner.log

fi

done

#End of Script

.把下面脚本放入/etc/crontab

#扫描ssh密码猜测次数超过5次的记录

* * * * *  root /home/cnscn/sh/ssh_scan_crontab.sh >/dev/null 2>&1

.把脚本/home/cnscn/sh/ssh_scan_iptables.sh加入到开机启动的myiptables.sh防火墙脚本

$ cat myiptables.sh

#!/bin/bash

#chkconfig: 345 85 15

#description: my iptables rules, which can auto run when system start

# This is a script

# Edit by liwei, cnscn

# establish a static firewall

#网络接口

interdevice=”eth0″

#端口

#21       ftp

#15022    sshd

#25       smtp

#53       named

#80       http

#110      pop3

#外界可以访问的端口

Open_ports=”21 20 22 80″

#可以外出的端口,其它端口都可以外出

Allow_ports=”21 20 80 ”

#清除所有以前设置的规则

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

#执行非法IP阻止规则

/home/cnscn/sh/ssh_scan_iptables.sh

#允许211.167.xxx.xxx, 防止自己输入错误而导致的IP被封锁

/sbin/iptables -I INPUT -s 211.167.xxx.xxx -j ACCEPT

#定义每一个网络接口规则

for eths in $interdevice ; do

#接受所有的,来源不是网络接口$interdevice的数据(对不是eths端口则放行)

#iptables -A INPUT -i ! $eths -j ACCEPT

#定义外界可以访问的端口规则(–dport)

for Port in $Open_ports ; do

iptables -A INPUT -i $eths -p tcp –dport $Port -j ACCEPT

iptables -A INPUT -i $eths -p udp –dport $Port -j ACCEPT

done

#给不应该进入我们机器的数据,一个欺骗性的回答

iptables -A INPUT -i $eths -p tcp -j REJECT –reject-with tcp-reset

iptables -A INPUT -i $eths -p udp -j REJECT –reject-with icmp-port-unreachable

done

#forbidden ping

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

#End of Script

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值