起因
2018 年 12 月 22 日,手里一个 VPS 被攻击了。
1C1G5M CentOS 7.0 x86_64位 BGP多线
第一次碰到 DDOS 之外的直球攻击虽然很蠢,想想还有点小激动。cat /var/log/secure 查日志攻击时间是从 12/21 23:47:11 到 12/22 18:39:46。
破解方式是直接暴力跑字典尝试 root 密码,一开始差点笑出声,后来想想室友的习惯,突然理解了攻击者。
下水道摸多了再怎么瞎也碰得到死耗子的,没有安全审计的私人机器,加上零安全意识的学生之类的人还挺多的,什么 abc123 总是有的。
退一步说,就算密码稍微复杂点,如果长时间没人管,大不了挂上十天半个月,总有一天试得出来。
虽然他这效率属实有点低,我发现的时候
| |
共 11872 次,平均 5.72 秒一次……
反正这个测试机也没有重要数据,改个端口意思一下就行了。
CentOS 7 修改 SSH 端口号
新增端口
vim /etc/ssh/sshd_config 可以看到:
# 前略
#Port 22
# 后略
虽然注释掉了,但我这台机器 ssh 登录端口仍然是 22。
这是因为如果不特别指定另外端口则默认使用端口 22。
vim yyp 复制一行出来,把注释都去掉:
Port 22
Port 12345
保留 22 是留一条后路,否则万一配置哪里出了问题 22 端口也登录不上了,那就就很尴尬了。
最好挑 10000 ~ 65535 之间的高位端口,10000 以下容易跟其他各种乱七八糟常用不常用的进程占用的端口冲突。
配置防火墙
firewall-cmd --permanent --query-port=12345/tcp查看防火墙端口状态,如果回显no说明 12345 端口没有放通,open itfirewall-cmd --permanent --add-port=12345/tcp应该回显successfirewall-cmd --reload重载防火墙策略firewall-cmd --permanent --query-port=12345/tcp再看一次,这次应该回显yes了,防火墙配置完成
重启使能修改
| |
测试
- 直接尝试通过 12345 端口登录 ssh
- 通过 22 端口成功登录后
ssh root@localhost -p 12345测试 12345 端口 netstat -lnp|grep 12345查看端口占用,如果没有回显说明没有被占用
如果这里失败大概率是因为没有设置好 SELinux。
设置 SELinux
如果测试没问题可以跳过这一步
sestatus检查 SELinux 状态- 如果第一行不是
SELinux status: enabled,vi /etc/selinux/config并设置SELINUX=enforcing再重启服务器以启用 SELinux semanage port -l | grep ssh查看 ssh 端口- 没有安装
semanage就yum install policycoreutils-python安装 semanage port -a -t ssh_port_t -p tcp 12345开放 12345 的 ssh 端口
关闭默认端口
成功了就可以放心关闭 22 端口了,vim /etc/ssh/sshd_config:
Port 22
Port 12345
注释掉 22:
#Port 22
Port 12345
systemctl restart sshd 重启 ssh 服务即可。