前些时谈了一下如何屏蔽对网站服务器的扫描,属于前台防御。后来 Felix 发了一篇 blog 提到将多次尝试 SSH 登录失败的 IP ban 掉,才想起来去看一下日志,没想到后院起火了。
查看日志文件:
$ sudo cat /var/log/auth.log |
没想到满屏满屏的往下刷,全是:
来统计一下有多少人在暴力破解我的 root 密码吧:
- $ sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
- 470 222.122.52.150
- 411 123.15.36.218
- 139 177.8.168.48
- 20 74.81.83.226
- 18 77.108.112.131
- 2 95.58.255.62
- 1 218.28.79.228
- 1 188.132.163.154
|
很明显我禁用了 root 登录,人家也不是那么笨,开始暴力猜用户名:
- $ sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more
- 3190 218.28.79.228
- 646 222.122.52.150
- 172 123.15.36.218
- 65 177.8.168.48
- 4 222.76.211.149
|
某个人尝试了 3000 多次,好吧,lovelucy 这个小博客真有那么 valuable 么。。为了防范于未然,我们可以做些配置,让 VPS 服务器更加安全。
1、修改 SSH 端口,禁止 root 登陆
修改/etc/ssh/sshd_config文件
- $ sudo vi /etc/ssh/sshd_config
- Port 4484 #一个别人猜不到的端口号
- PermitRootLogin no
-
- $ sudo /etc/init.d/ssh restart
|
2、禁用密码登陆,使用 RSA 私钥登录
Amazon EC2 服务器本来就是只允许使用私钥登录的,但是这样的话我如果想在别的电脑上临时 SSH 上来,又没带私钥文件的情况下,就很麻烦。所以我又手动开启了密码验证登录。不管怎样,这一条还是先列出来吧!
- # 在客户端生成密钥
- $ ssh-keygen -t rsa
- # 把公钥拷贝至服务器
- $ ssh-copy-id -i .ssh/id_rsa.pub server
- # 也可以手动将.shh/id_rsa.pub拷贝至服务器用户目录的.ssh中,记得修改访问权限
- # $ scp .shh/id_rsa.pub server:~/.ssh
- # 在服务器中
- $ cd ./.ssh/
- $ mv id_rsa.pub authorized_keys
- $ chmod 400 authorized_keys
- $ vi /etc/ssh/sshd_config
- RSAAuthentication yes #RSA认证
- PubkeyAuthentication yes #开启公钥验证
- AuthorizedKeysFile .ssh/authorized_keys #验证文件路径
- PasswordAuthentication no #禁止密码认证
- PermitEmptyPasswords no #禁止空密码
- UsePAM no #禁用PAM
-
- # 最后保存,重启
- $ sudo /etc/init.d/ssh restart
|