sshd_config配置 SSH限制登陆失败IP多次登陆


SSH安全是服务器运维的重中之重,实际运用中常常有些家伙喜欢尝试扫描破解密码,限制登录IP和加入尝试密码错误两次后自动封锁IP后会安全一些
限制IP和加入尝试密码错误封IP
1 编辑/etc/hosts.allow
添加 sshd:192.168.2.1:allow 192.168.2.1是允许的IP
或者 sshd:192.168.2.:allow 192.168.2.是2段
添加  sshd:all:deny 禁止其他IP登录  这行也可以加在/etc/hosts.deny
2 编辑/etc/ssh/sshd_config
添加  allowusers   xxxx@192.168.2.1 xxxx是允许的用户名
重启SSH
自动屏蔽多次尝试密码的用户
写脚本从日志中筛选出登录失败2次以上的用户添加到iptables禁止
脚本-网上找的。
#!/bin/sh
#### 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数
SCANNER=`grep "$(date -d -1min|awk '{print substr($0,10,7)}')" /var/log/secure|awk '/Failed/{print $(NF-3)}'|awk -F":" '{print $NF}'|grep -v from|sort|uniq -c|awk '{print $1"="$2;}'`
echo $SCANNER
for i in $SCANNER
do
# 取认证失败次数
NUM=`echo $i|awk -F= '{print $1}'`
# 取其 IP 地址
IP=`echo $i|awk -F= '{print $2}'`
echo $NUM
echo $IP
# 若其在失败次数超过 2 次且之前没有被阻断过,那么添加一条策略将其阻断,并记录日志
if [ $NUM -gt 2 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -s $IP -m state --state NEW,RELATED,ESTABLISHED -j DROP
echo "`date` $IP($NUM)" >> /var/log/scanner.log
fi
done  
#执行方式
#chmod 755 /root/jinzhiip.sh
#vi /etc/crontab
#*/1 * * * * root /root/jinzhiip.sh
#用 crond 来运行,1 分钟运行 1 次
#运行效果
#iptables -vnL INPUT
#查看日志#cat /var/log/scanner.log
#清除所有拦截
#iptables -F
###########################
ssh独立日志配置
vi /etc/ssh/sshd_config
SyslogFacility local3
/etc/init.d/sshd restart
vi /etc/syslog.conf
local3.info             /var/log/sshd.log
/etc/init.d/syslog restart
###########################
允许ssh登陆的用户
vi /etc/ssh/sshd_config
AllowUsers root
###########################
禁止密码登陆,强制证书登陆
vi /etc/ssh/sshd_config
PasswordAuthentication no
UsePAM no

###########################
ssh连接过慢
常见的原因是因为server的sshd会去DNS查找访问client IP的hostname (反向解析)
vi /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no