目录

记一次服务器被黑

题记

早上起来室友在群里发消息说服务器被人黑了,还被用来挖矿了,多了一个dota3.tar.gz的文件,又让我开始警觉。我赶紧看了一下自己的阿里云服务器,发现每天都有ip在访问ssh,心态有点爆炸,不知道是本来就很普遍,还是我被盯上了。其实挖矿已经算好的了,前不久b站的党妹服务器被植入勒索软件,服务器里面所有文件包括他的视频素材都不能打开。这篇博客记录一下我看的一些数据资料,还有提升一下服务器安全等级的过程。

如何判断服务器被爆破

针对系统漏洞攻击的黑客我也防不住,但是SSH弱密码攻击的倒是可以防一手,腾讯安全服务中心的一篇文章写道说有个组织每天攻击十万个IP,所以说受到攻击的概率还是很大的。

使用lastb命令列出登入系统失败的用户相关信息。

我的服务器从六月一日到六月九日,9天时间有157条登入系统失败的记录!

image-20200609150631079
lastb

提升服务器安全

腾讯安全服务中心有以下4条安全建议

1.用密钥登录,不要用密码登录

2.使用安全的密码策略,使用高强度密码,切勿使用弱口令,防止黑客暴力破解

3.开SSH只监听本地内网IP

4.尽量不给服务器外网IP

5.推荐部署腾讯御界高级威胁检测系统。

我这里使用修改ssh端口+密钥对登陆+禁止密码登陆的方式提升安全等级。

修改ssh端口

Step 1

注:一般需要root权限。

vim /etc/ssh/sshd_config打开配置文件, 在#Port 22下面添加一行Port [xxxx],[xxxx]为你要修改的端口号。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
Port 4522
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

保存退出之后,用systemctl restart sshd(CentOS6系统用/etc/init.d/sshd restart)重启SSH服务,此时你就不能再用默认的22端口访问服务器了。

Step 2

a. 如果是云服务器ECS的话,在服务器面板的安全组添加你设定的端口之后,就能用那个端口SSH访问服务器了

image-20200609152649355
添加安全组

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文件。

image-20200609164346003
测试无密码连接

然后就可以无密码连接了。

禁止密码登陆

注意:这个对所有用户都生效,而上面的密钥登陆只对某个用户生效。不过仍然可以用设置了密钥的用户登陆之后,再用su命令,切换到其他用户上。

和修改端口一样,修改文件vim /etc/ssh/sshd_config.

vim中:$跳到最后一行,将PasswordAuthentication那一行改成no,保存后,同样systemctl restart sshd更新ssh。

1
2
3
4
5
UseDNS no
AddressFamily inet
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication no

如果觉得不能密码登陆可能会不方便的话,也可以设置禁止root登陆的方式提高安全性,即将PermitRootLogin那一行换成no或者without-password(即仅密钥登陆root).

至此,施工完成~

参考资料