前两天找小布要了一台美国的vps,打算部署我的代理项目。检查系统日志/var/log/secure的时候,发现几乎每秒都有ssh连接失败的记录,这明显是有黑客在对主机尝试暴力破解ssh密码。 (⊙o⊙)…额,以前我自己也都没留意过这个日志,赶紧去看了下我自己的阿里云,发现也有一些ssh登录失败的记录,好在没有小布这台这么密集。这也吓的我赶紧查了一下怎么样有效地防止服务器被暴力破解。 一、封杀多次验证失败的ip 你可以自己写个脚本扫描ssh登录日志,判断某个ip多次尝试登录失败后,将其写入/etc/hosts.deny或iptables来拒绝该ip的访问。不过本着避免重复制造轮子原则,网上有不少开源的脚本程序帮忙做这件事了,比如fail2ban、denyhost。 二、使用认证登录而不是账号密码登录 当手头的服务器多起来的时候,你会发现,使用ras认证的方式进行ssh免密码登录是多么方便。同时认证登录也比简单的密码更安全。因此一个非常有效的防暴力破解的方法就是设置ssh认证登录,然后关闭ssh账号密码登录。亚马逊主机默认就是这么干的,不允许ssh的账号密码登录,只允许非root用户进行认证登录,root账号必须由非root账号认证登录后使用su – 来提权。 1. 将本地机器的ssh公钥(通过ssh-keygen生成,在$HOME/.ssh/目录下)写到服务器的~/.ssh/authorized_keys文件中: # funway-macbook_air ssh-rsa AAABXB*** *** *** ***VMAJLB your-email@163.com 另外,建议将.ssh目录与authorized_keys文件的读写权限设置为如下(并非权限越高越好,我试过在centos 7生成的authorized_keys默认权限为664,反而无法登录,提示Permission