什么要这么做

在云大规模爆发的这个时代,基本上人人可以随意购买一个VPS玩玩,做个博客,搞个论坛啥的,丰富一下自己的业余生活也顺便拓展一下IT知识;

如果购买了一个vps,那么对于其安全性一定要重视,在默认情况下,如果你经常查看ssh的日志,就会发现有很多尝试登陆被拒绝的,网上有很多人通过批量扫描一些弱加密vps尝试通过常规的用户名和密码登录,一旦成功了,那么你的vps就可能成为别人的利器,行话叫肉鸡;然后别人就可以通过你的机器做一些非法的事情,万一被追踪到,首先查到的就是你的vps,然后通过其服务商,继而查到你的信息…

安全是相对的,没有绝对的安全的,但是可以做些设置,来改变一些默认的安全策略,提高主机的安全性,如果你的vps上放了你的博客,论坛之类的,那么最好还是配合一下Fail2ban,来屏蔽登陆失败的IP

首先应该改变一下ssh,因为这是对外的唯一窗口(web console是对内的),肉鸡扫描也是针对ssh的比较多

如果你打算修改ssh的端口号,那么就一定要遵循顺序,否则就会把自己关到门外,vps后台都救不了你

生成密钥

使用普通用户登录,非常不建议使用root登陆

简单做法

[hai@lb01 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hai/.ssh/id_rsa): 
# 自动生成密钥的路径,.ssh为隐藏目录
Created directory '/home/hai/.ssh'.
Enter passphrase (empty for no passphrase): 
# 给密钥输入一个暗语(密码)
Enter same passphrase again: 
# 确认暗语
Your identification has been saved in /home/hai/.ssh/id_rsa.
# 私钥文件,下载保存好后,可删除服务器的私钥文件
Your public key has been saved in /home/hai/.ssh/id_rsa.pub.
# .pub的为公钥文件
The key fingerprint is:
SHA256:FcG4XuyXzgAMYodfXo2NBc/Cwc5njsq7gFbNjlY0au8 hai@lb01
The key's randomart image is:
+---[RSA 2048]----+
|     .   +=O.    |
|    + o o.*=o    |
|   . + =o*+ o    |
|      .==o=.o    |
|      +.S+ = .   |
|     + =. + +    |
|    o +.o. =     |
|   . . oo   o    |
|        Eo       |
+----[SHA256]-----+

自定义生成密钥

ssh-keygen -b 4096 -t rsa -f server
# -b 密钥位数,最小768位,默认2048位
# -t 密钥类型 rsa ecdsa ed25519 rsa1
# -f 指定文件名称
# 生成的密钥文件服务器端会自动增加 .pub后缀区分
# 生成的文件会在当前目录下,但不会创建.ssh目录

目录权限

#.ssh目录权限最少600
chmod 700 .ssh
chmod 644 .ssh/authorized_keys #可自定义文件名,与AuthorizedKeysFiles保持一致

常规配置

vim /etc/ssh/sshd_config
port #应该使用一个1024-65535之间的随机端口,防扫描
AddressFamily #取值范围:any inet(ipv4) inet6(ipv6)
ListenAddress 0.0.0.0 #默认监听所有地址(ipv4),如果你有固定IP的话,一般用于堡垒机地址
ListenAddress :: #默认监听所有地址(ipv6)
LogLevel info #日志等级
#增加
AllowUsers Zhangsan #只允许这些用户登录,跟随用户名,多个名称用空格间隔,默认允许所有用户登录
Protocol 2 #使用ssh2协议
ServerKeyBits 4096 #指定密钥位数
PermitRootLogin no #默认开启,建议关闭root直接登录
#PubkeyAuthentication yes #使用密钥文件登陆,建议开启
AuthorizedKeysFiles .ssh/authorized_keys #密钥文件路径,和生成的公钥文件名一致
PasswordAuthentication no #开启密码登陆,建议关闭,只用密钥登陆
PermitEmptyPassword no #使用空密码登陆,默认关闭,建议开启
AllowGroups #后面直接跟/etc/passwd中主组名称,默认允许全部

重启ssh

为了稳妥起见,不把自己关到门外,建议端口号先保持默认22,打开密码登陆PasswordAuthentication yes,以测试各个的修改和防火墙是否无误,如有不妥,还可以修改
重启命令

sudo systemctl restart sshd

加入防火墙

sudo firewall-cmd --add-port=自定义的端口/tcp --permanent
sudo firewall-cmd --reload

如果以上都没有问题,那么在修改默认端口号(1024-65535)之间;然后关闭密码登陆PasswordAuthentication no;然后重启sshd服务,在不断开刚刚的ssh连接情况下,新建一个ssh连接测试

如果以上都没有问题,那么最后一步在执行删除防火墙里面的ssh

重点
一定要以上测试无误,否则就会被关到门外,部分vps服务器的web控制台是无需22端口的,但是如果是基于22端口的话,就得发工单解决了

移除防火墙的默认ssh策略

sudo firewall-cmd --remove-service=ssh --permanent
sudo firewall-cmd --reload

最后

如果vps还是有大量的扫描(取决于你的网段),则可以配合fail2ban来让登陆失败的IP失败一次即永久屏蔽

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 × 2 =