ssh防暴力破解

前两天找小布要了一台美国的vps,打算部署我的代理项目。检查系统日志/var/log/secure的时候,发现几乎每秒都有ssh连接失败的记录,这明显是有黑客在对主机尝试暴力破解ssh密码。

屏幕快照 2016-05-14 上午3.24.24

(⊙o⊙)…额,以前我自己也都没留意过这个日志,赶紧去看了下我自己的阿里云,发现也有一些ssh登录失败的记录,好在没有小布这台这么密集。这也吓的我赶紧查了一下怎么样有效地防止服务器被暴力破解。

一、封杀多次验证失败的ip

你可以自己写个脚本扫描ssh登录日志,判断某个ip多次尝试登录失败后,将其写入/etc/hosts.deny或iptables来拒绝该ip的访问。不过本着避免重复制造轮子原则,网上有不少开源的脚本程序帮忙做这件事了,比如fail2bandenyhost

二、使用认证登录而不是账号密码登录

当手头的服务器多起来的时候,你会发现,使用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 denied)

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

 

2. 修改服务器的sshd配置文件/etc/ssh/sshd_config:

# 基于密码验证的方式登录(默认为yes),改为no
PasswordAuthentication no

# 基于公钥验证的方式登录(默认即为yes)
PubkeyAuthentication yes

# root用户远程登录(默认为yes),改为no
PermitRootLogin no

修改后使用service sshd restart命令重启sshd守护进程即可生效。

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top