本文发自 http://www.binss.me/blog/measures-prevent-ssh-enumeration-attrack-to-vps/,转载请注明出处。
最近在Do上弄了台VPS,由于是第一次弄VPS,所以非常担心什么被黑啊什么被抓鸡什么的,于是跑去问师兄,师兄说放心啦没人会这样做的我用了一年多了还好好的云云,于是我登进去后架了个梯子后就洗洗睡了。结果第二天起来发现端口被5个不同IP各扫了几百次。
我靠,人与人之间的信任呢?也就那么几个小时就那么多人扫我端口,吓的我赶紧还原了系统。然后开始GOOGLE如何防止SSH暴力登录,经过一天的学习和配置,查看日志,感觉好多了。在此分享下过程。
-
修改SSH默认端口
vi /etc/ssh/sshd_config
找到port这一行,将后面的数字修改为非22非重要服务占用端口的数字。
这样可以加大SSH端口扫描的难度,不会被一扫一个准。
-
禁止root登录
root账户常常是他们重点扫描的目标,一来用户名已确定而且肯定存在,而来权限大用的爽,所以我们最好禁止root登录。
在此之前,我们先要创建一个新用户binsite用于以后登录。
# 创建用户组binsite addgroup binsite # 创建用户binsite,属于binsite用户组,且创建用户目录/home/binsite useradd -d /home/binsite -m -s /bin/bash -g binsite -G sudo,adm,root binsite # 修改密码 passwd binsite
然后就可以禁止root登录了。
vi /etc/ssh/sshd_config
修改PermitRootLogin为no。
-
使用SSH Key SSH Key分为公钥和私钥,把公钥放在VPS上,只有当你持有对应的私钥时才能通过SSH登录到VPS上。
首先在本机生成SSH Key:
ssh-keygen -t rsa
按enter后询问你时候设置passphrase(类始于二次验证密码),设定后用SSH Key登录时必须输入该密码验证才能登录。
然后会在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)。
然后把公钥部署到VPS上:
cat ~/.ssh/id_rsa.pub | ssh [your.username]@[your.ip.address] "cat >> ~/.ssh/authorized_keys"
注:如果部署到非root用户下,这里可能会失败。像我部署的时候就一直permisson deny。最后是直接在VPS上建立~/.ssh/authorized_keys文件并把本地id_rsa.pub内容粘帖进去,然后修改.ssh目录权限为700,authorized_keys权限为600。
部署后再次登录,会默认使用SSH Key登录,然后我们就可以禁用密码登录:
vi /etc/ssh/sshd_config
修改PasswordAuthentication为no。
-
终极大招 安装denyhosts或fail2ban。他们可以ban掉多次登录失败的ip等等等等,非常强大。
由于VPS的系统选择了ubuntu 14.04,用apt-get已经找不到denyhosts,所以选择了fail2ban。
安装过程:
sudo apt-get update sudo apt-get install fail2ban
安装完后,复制配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
可以根据需要修改配置文件。
fail2ban最大的好处就是可以自己写配置写规则,然后想怎么ban就怎么ban。由于我是菜鸟,就直接使用了默认配置,感兴趣的童鞋请查看官方文档:
http://www.fail2ban.org/wiki/index.php/Main_Page
哭了,写这篇文章写了一个下午结果不小心关掉网页全没了。现在你看到的就是又花了一个小时码出来的精简版本。T T
1F 西红柿炒蛋 5 years, 11 months ago 回复
偶然发现了这个博客,这个登陆的表情好萌啊
2F laixintao 5 years, 7 months ago 回复
既然用证书登陆了,直接将密码登陆给禁用掉好了
3F binss MOD 5 years, 7 months ago 回复
回复 [2F] laixintao:如果能确保不丢私钥的话,也可以这样做呢
4F Dubhe 5 years, 5 months ago 回复
我学一下,用户我的谷歌云搭建。 不过 公钥私钥我没弄明白怎么应用。
我要是换了一个别的linux咋办呢