1、禁止所有用户使用密码登录,只允许密钥登录
sed -i s/"PasswordAuthentication yes"/"PasswordAuthentication no"/ /etc/ssh/sshd_config
注意:需要先生成密钥,配置测试没有问题再禁止所有用户使用密码登录
2、自定义一个远程登录端口
sed -i '/Port 22/i\Port 1234' /etc/ssh/sshd_config
3、重启服务
systemctl restart sshd #centos7为例
#crontab -e # 配置每10分钟运行一次
添加
*/10 * * * * /bin/bash /root/brute_force_detection.sh
** Ubuntu和CentOS都可以使用 **
#!/bin/bash
# SSH exception remote login forbid script
cat /etc/redhat-release > /dev/null 2>&1
if [ $? -eq 0 ];then
ROUTE=/var/log/secure
else
ROUTE=/var/log/auth.log
fi
cat $ROUTE | awk '/Failed/{print $(NF-3)}' |grep "[[:digit:]]" | sort | uniq -c | awk '{print $2"="$1}' > secure.txt
VALUE=1
for i in `cat secure.txt`
do
IP=`echo $i | awk -F= '{print $1}'`
NUM=`echo $i | awk -F= '{print $2}'`
if [ $NUM -gt $VALUE ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done
awk ‘/Failed/{print $(NF-3)}’
使用awk筛选包含Failed的行,打印倒数第4个元素的内容,数组默认从0开始,所以是NF-3
grep “[[:digit:]]”
只打印数字,否则会匹配到倒数第4个元素为Connection的情况
/etc/hosts.allow和/etc/hosts.deny文件
一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务