背景
在知乎看到一些人说,如果22端口放开,会被别人暴力扫描和破解。我去看了下自己服务器的登录日志,发现每分钟都有人在尝试登录,不过登录失败了。想了想,要把自己服务器的登录方式修改,包括端口和校验方式。
网络世界犹如三体中的黑暗森林,如果公开ip地址,就会被别人不断攻击。
目标
- 排查服务器是否被入侵
- 增强服务器登录安全能力
排查服务器是否被入侵
1 | sudo su #root 运行 |
增强服务器登录安全能力
修改默认用户名
因为选择了ubuntu系统,腾讯云默认用户名为 ubuntu,不安全。现在修改为新用户名。
修改方式为使用 usermod,groupmod修改,但因为登录时使用ubuntu登录,不能修改自己,因此需要先创建一个临时用户,用临时用户进行修改。修改完成后,需要将临时用户删除
1 | ---------------ubuntu身份---------------- |
修改 ssh 登录端口
俗话说,22 端口是不能暴露的,暴露就等着被攻击吧。将 ssh 端口修改成其它端口,可极大提高服务安全。
- 修改 ssh配置文件 /etc/ssh/sshd_config
1
2
3
4
5
6
7
8
9sudo vim /etc/ssh/sshd_config #随便一个大于1024端口,比如6789
-------------/etc/ssh/sshd_config------------------
Port 6789
-------------shell-------------------------
sudo systemctl restart ssh # 重启ssh,加载新配置
ss -an | grep 6789 # 查看是否修改成功 - 腾讯云服务器-防火墙放开 6789 端口,关闭22端口。
使用密钥登录服务器
- 本地生成密钥对,如果已经生成可以跳过,避免覆盖
1
2----------在本地执行
ssh-keygen -t rsa # 一直按enter,会在~/.ssh 目录下生成私钥id_rsa和id_rsa.pub公钥 - 上传本地公钥到服务器
1
2
3
4
5
6
7
8
9
10----------云服务器
生成目录 /home/newname/.ssh/authorized_keys
mkdir -P
上传公钥到服务器
如果服务器.ssh目录不存在,则 mkdir -p /home/newname/.ssh 新建
因为服务器上没有authorized_keys,因此直接覆盖;如果有,需要使用追加的方式增加
执行后需要保证.ssh目录有700权限和authorized_keys有600权限
前面修改了ssh端口,此处需要带上
scp -P 6789 ~/.ssh/id_rsa.pub newname@server_ip:/home/newname/.ssh/authorized_keys - 服务器开启密钥登录
1
2
3
4
5
6
7
8
9
10-------云服务器
sudo vim /etc/ssh/sshd_config # 打开ssh配置文件
-------sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
-------云服务器
sudo service sshd restart
验证本地重新登录,发现已经不需要输入密码,直接登录,证明实现了密钥登录 - 关闭密码登录(可选)
1
2
3
4
5
6
7
8------云服务器
sudo vim /etc/ssh/sshd_config # 打开ssh配置文件
------sshd_config
PasswordAuthentication no
------云服务器
sudo service sshd restart
总结
到此为止,能做的服务器登录安全配置都加上了,同时也实现了免密登录。
参考文档
技术|如何判断 Linux 服务器是否被入侵?
Linux中修改用户名
Linux SSH 端口修改
技术|使用公钥/私钥对设定免密的 Linux 登录方式