记一次服务器被黑
题记
早上起来室友在群里发消息说服务器被人黑了,还被用来挖矿了,多了一个dota3.tar.gz
的文件,又让我开始警觉。我赶紧看了一下自己的阿里云服务器,发现每天都有ip在访问ssh,心态有点爆炸,不知道是本来就很普遍,还是我被盯上了。其实挖矿已经算好的了,前不久b站的党妹服务器被植入勒索软件,服务器里面所有文件包括他的视频素材都不能打开。这篇博客记录一下我看的一些数据资料,还有提升一下服务器安全等级的过程。
如何判断服务器被爆破
针对系统漏洞攻击的黑客我也防不住,但是SSH弱密码攻击的倒是可以防一手,腾讯安全服务中心的一篇文章写道说有个组织每天攻击十万个IP,所以说受到攻击的概率还是很大的。
使用lastb
命令列出登入系统失败的用户相关信息。
我的服务器从六月一日到六月九日,9天时间有157条登入系统失败的记录!
提升服务器安全
腾讯安全服务中心有以下4条安全建议
1.用密钥登录,不要用密码登录
2.使用安全的密码策略,使用高强度密码,切勿使用弱口令,防止黑客暴力破解
3.开SSH只监听本地内网IP
4.尽量不给服务器外网IP
5.推荐部署腾讯御界高级威胁检测系统。
我这里使用修改ssh端口+密钥对登陆+禁止密码登陆的方式提升安全等级。
修改ssh端口
Step 1
注:一般需要root权限。
vim /etc/ssh/sshd_config
打开配置文件, 在#Port 22
下面添加一行Port [xxxx]
,[xxxx]
为你要修改的端口号。
|
|
保存退出之后,用systemctl restart sshd
(CentOS6系统用/etc/init.d/sshd restart
)重启SSH服务,此时你就不能再用默认的22端口访问服务器了。
Step 2
a. 如果是云服务器ECS的话,在服务器面板的安全组添加你设定的端口之后,就能用那个端口SSH访问服务器了
b. 如果是自己的服务器的话使用下面的2条命令之后,即可访问了。
iptables -I INPUT -p tcp --dport 4522 -j ACCEPT
service iptables save
此时就不再能用默认的22号端口连接,而要指定你配置的端口号。
密钥对登陆
整个过程就是在本地主机生成公钥和私钥(两个合称密钥对),然后把公钥内容给服务器,这样只有带有私钥的主机才能访问服务器。
Step 1. 本地生成密钥对
在命令行使用ssh-keygen
命令,如果是windows用户,默认是在存放在C:\Users\[用户名]\.ssh
文件夹中的,详情可参考生成/添加SSH公钥。
现在我们有id_rsa
(私钥)和id_rsa.pub
(公钥)两个文件(这是默认的文件名,如果指定了文件名,就是xxx和xxx.pub文件)。
Step 2. 配置服务器
首先确定之前有没有配置过ssh,在服务器的用户根目录使用命令ls -al
,查看有没有名为.ssh
的目录,如果没有就创建一个,并且权限设置为700.
在.ssh
目录中,创建名为authorized_keys
的文件,权限设置为600.
进入authorized_keys
文件,将本地的id_rsa.pub
的内容直接复制进authorized_keys
中,并保存。
p.s. 配置我的另一个服务器的时候遇到了个问题,用chown g-w $HOME
命令解决了。其原因是不能让所有者之外的用户对authorized_keys文件有写权限,否则,sshd将不允许使用该文件,因为它可能会被其他用户篡改。ref.ssh配置authorized_keys后仍然需要输入密码的问题
Step 3. 测试无密码连接
用任意一个ssh软件使用密钥进行连接,这里以xshell为例。
连接方式从密码改为public key(有些软件可能叫Credentials),然后导入id_rsa
文件。
然后就可以无密码连接了。
禁止密码登陆
注意:这个对所有用户都生效,而上面的密钥登陆只对某个用户生效。不过仍然可以用设置了密钥的用户登陆之后,再用su
命令,切换到其他用户上。
和修改端口一样,修改文件vim /etc/ssh/sshd_config
.
vim中:$
跳到最后一行,将PasswordAuthentication那一行改成no,保存后,同样systemctl restart sshd
更新ssh。
|
|
如果觉得不能密码登陆可能会不方便的话,也可以设置禁止root登陆的方式提高安全性,即将PermitRootLogin那一行换成no或者without-password(即仅密钥登陆root).
至此,施工完成~
参考资料
- 黑客利用SSH弱密码攻击控制Linux服务器,潜在目标约十万IP天 https://www.freebuf.com/articles/system/205384.html
- 修改ssh远程默认端口 https://www.cnblogs.com/wzstudy/p/10711104.html
- 设置禁止密码登陆 https://blog.csdn.net/superljn/article/details/81532073
- sshd_config 中 PermitRootLogin 的探讨 https://yq.aliyun.com/articles/62501