每隔一段时间,VPS的日志里就会有几千次登录尝试,他们一般都是扫描默认的22端口,然后用密码字典破解登录,如果不幸中招,就会被用来挖矿或者其它非法操作,速度变慢不说,还可能会被你的VPS服务商因为滥用资源被禁掉机器。🐒

因此,拿到服务器的第一件事自然是看ip是否正常,然后修改SSH端口并制作密钥登录,珍爱小鸡,防止暴力破解。

首先先改掉默认的22端口

1. 编辑ssh配置文件

vi /etc/ssh/sshd_config

将 #Port 22修改为想要的端口号:0~65535,选择数值较大的比较好。

然后保存,重启ssh服务

systemctl restart sshd.service

2. 增加SElinux端口

查看SElinux状态

/usr/sbin/sestatus -v
semanage port -a -t ssh_port_t -p tcp [端口号]

查看当前SElinux 允许的ssh端口

semanage port -l | grep ssh

3. 配置防火墙

CentOS(firewalld)

首先查看防火墙状态

firewall-cmd --state

若没有启用,需要启用

systemctl start firewalld
systemctl enable firewalld

开放ssh端口,使用

firewall-cmd --permanent --zone=public --add-port=[端口号]/tcp

或者修改 /etc/firewalld/zones/public.xml 添加

<port protocol="tcp" port="3306"/><!--MySQL数据库-->

防火墙重载

firewall-cmd --reload

查看已暴露端口

firewall-cmd --permanent --list-port

或者查看添加端口是否成功

firewall-cmd --zone=public --query-port=[端口号]/tcp

先不要关闭窗口,测试能连接后再下一步,防止与小鸡失联😐

Debian(ufw)

安装ufw后首先设置默认策略

ufw default deny incoming
ufw default allow outgoing

允许指定端口连接

ufw allow [端口号]

启用ufw

ufw enable

允许特定的ip访问

ufw allow from x.x.x.x

删除规则,首先编号然后删除指定序号或者直接删除指定规则

ufw status numbered
ufw delete [序号]
或者
ufw delete allow [端口号]

查看ufw状态

ufw status

制作密钥登录

然后,要是你被盯上了( ̄▽ ̄"),该端口+设置复杂密码也不安心,这是就要设置用密钥登录,公钥加上唯一对应的私钥就稳当不少。

使用XShell制作密钥

打开XShell

修改SSH端口并使用密钥登录

看情况下一步即可,将公钥保存为文件,改名为 authorized_keys
记得最好备份密钥,用户密钥管理者-导出即可。将公钥上传到 /root/.ssh 文件夹并赋予权限

chmod 600 /root/.ssh/authorized_keys

使用ssh-keygen工具

直接在服务器上生成:

生成RSA密钥:
ssh-keygen
生成ECDSA密钥(推荐):
ssh-keygen -t ecdsa -b 521

命令执行完成后,会生成密钥对id_rsa(id_ecdsa)和id_rsa.pub(id_ecdsa.pub),其中id_rsa为私钥,做好保存,id_rsa.pub为公钥,将公钥复制到/root/.ssh/目录重命名为authorized_keys并修改权限。

最后编辑登录方式,禁止密码登录

vim /etc/ssh/sshd_config  

#PubkeyAuthentication no 改为 PubkeyAuthentication yes
#PasswordAuthentication yes 改为 PasswordAuthentication no

重启ssh服务

systemctl restart sshd.service

以上两种配置可以避免绝大多数的恶意破解,当然还有其它进阶操作,但已经足够,毕竟要是真有大佬搞你,只有关机报平安咯🍺

Tags: VPS, SSH, Linux

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.