防止ssh的暴力破解

最近登陆服务器的时候,发现有很多未知的ssh登录尝试。CentOS系统中ssh登录的日志文件在/var/log/secure。使用cat /var/log/secure | grep Failed | tail -50可以查看最近的50条记录。我查看这个文件的时候发现有一个ip尝试了7000次登录,并且在我登录期间仍然在不停进行尝试,真是丧心病狂,令人发指。必须要采取措施限制这些奇怪的行为。

修改SSH默认端口

ssh的默认端口是22,修改端口会增加被破解的障碍。

  1. 首先选一个你喜欢的端口,只要没被占用就可以。然后在防火墙中打开这一端口。
  2. sshd的配置文件位于/etc/ssh/sshd_config,修改端口设置之后重启sshd服务。
    大多数情况下到这一步端口已经修改好了。但是有些主机商(比如linode)会要求使用semanger声明修改。
  3. (Option) 安装 policycoreutils-python:yum install policycoreutils-python,执行semanage port -a -t ssh_port_t -p tcp $PORT
  4. 运行ss -tnlp | grep ssh查看端口是否正确。

    自动封禁多次登录失败的IP

    将多次登录失败的IP添加到/etc/hosts.deny文件。
    创建一个脚本:/usr/local/bin/autodeny.sh

在命令行中运行crontab -e,添加一行:*/10 * * * * sh /usr/local/bin/autodeny.sh,每十分钟自动执行一次。当登录失败超过10次之后IP会被加入黑名单。记得同时将你常用的IP添加到/etc/hosts.allow文件中,以免出现乌龙。