在公司运维的生产环境中,我们发现有人在破解你的root密码。那么任何才能让被人不能破解你的密码,并且访问其他服务可以正常使用。

  1. 查看TCP连接
    netstat -an|grep -i es
  2. 用于统计登录失败次数,及登录的IP信息
    tail -n 100 /var/log/secure |grep "Failed password"|awk '{print $11}'|sort|uniq -c|sort -nr
  • 解决方案1:
    在iptables中添加规则:

vim /etc/sysconfig/iptables

-A INPUT -s 【IP信息】 -j DROP 禁止该IP访问任何端口

/etc/init.d/iptables restart 重新启动iptables

  • 测试: 攻击者为10.0.0.52 被攻击者为10.0.0.51
    企业中如何防止他人破解你的密码
    从上图可以看出,该ip不能在访问,已经被拒绝

  • 方案2:脚本实现防止破解服务器密码
    #!/bin/bash
    #auto drop ssh failed IP address
    #定义变量
    SEC_FILE=/var/log/secure
    #如下为截取secure文件恶意ip远程登录22端口,大于等于4次就写入防火墙,禁止以后再登录服务器22端口,egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"是匹配IP的意思,[0-9]表示任意的一个数,{1,3}表示匹配1-3次
    IP_ADDR=tail -n 100 /var/log/secure |grep "Failed password"|egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -nr|uniq -c|awk '$1>=4 {print $2}' $SEC_FILE
    IPTABLE_conf=/etc/sysconfig/iptables

echo
cat <<EOF
+++++++++++++welcome to use login drop failed ip+++++++++++
EOF

for i in echo $IP_ADDR
do
#查看iptables配置文件是否还有提取的IP信息
cat $IPTABLE_conf|grep $i >/dev/null
if [ $? -ne 0 ];then
sed -i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABE_conf
else
echo "This is $i is exist in iptables,please exit......"
fi
done
/etc/init.d/iptables restart