这篇文章上次修改于 2190 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

爆破.jpg

事件来由

近期我的 Linux 服务器遭到了暴力破解攻击。截至 3.19 日共有 500+ 个 IP 尝试过,十分吓人。可惜我的密码组合是 大小写 + 数字 + 符号 的,你 TM 倒是破解出来啊)所以呢,我打算对我的服务器进行一次安全加固,顺便借这个机会好好学习学习 Linux 管理~ 博主第一次写 Linux 的文章,可能有些地方描述不够正确,希望大家给予纠正和完善,谢谢啦!

准备软件

  • iptables - 简单来讲就是一个防火墙,可以限制 IP 访问服务器
  • fail2ban - 通过检测系统日志,匹配错误信息并可执行相应的屏蔽操作

我们首先先安装这两个软件

yum install -y iptables
yum install -y fail2ban

iptablesfail2ban 开机自启动

systemctl enable fail2ban // 貌似没效果,求指教
systemctl enable iptables // 貌似没效果,求指教

设置 Fail2ban

我们需要简要的设置一下 Fail2ban,首先我们需要创建添加一个 sshd.local 文件,使用 VIM 可以直接写入保存。

vim /etc/fail2ban/jail.d/sshd.local

配置 Jails 内容,例如我的是这样的:

[sshd]
# 是否启用,不启用则为 false
enabled = true

# 如果 SSH 是其他端口,需要在这里修改
port = ssh
#action = firewallcmd-ipset

# 存储日志文件的路径
logpath = %(sshd_log)s

# 最大尝试次数
maxretry = 3

# 拦截时间
bantime = 172800

filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]

开启 iptables 服务

service iptables start

重启 Fail2ban 服务

service fail2ban restart

使用 fail2ban-client status 命令查询 Jail 是否生效

fail2ban-client status

如果开启,应该会显示一个列表出来,例如:

Status
|- Number of jail:      1
`- Jail list:   sshd

现在这样做的话,想尝试爆破的基本上来一个就能封一个了。但这还不够,因为...

修改 SSH 端口

默认的 22 端口还是特别招人打,为了降低风险,我们还是选择换一个端口吧(虽然有种东西叫做端口扫描器 2333)如果不是针对性的攻击,我看应该会少很多人去尝试爆破了。

首先使用 VIM 打开 SSHD 的配置文件

vim /etc/ssh/sshd_config

可以看到第 17 行是默认的端口设置。取消它的注释,并修改成你喜欢的端口号,例如:

Port 6333

如果你的服务器有 selinux 的话,需要关闭才可以继续。我使用的是腾讯云,发现并没有它,于是我直接重启一下 sshd 服务就生效了。

service sshd restart

然后使用新的端口号重新登录服务器,发现可以正常登录即完成配置。

使用密钥登录 SSH

如果觉得改端口逼格还不够高,那么我们可以把 SSH 改成使用密钥登录,这样子就不必担心暴力破解了,因为对方不可能有你的密钥。

首先让我们生成密钥,得到的结果分为公钥和私钥。

ssh-keygen -t rsa -b 4096

后续会询问你输入密码,可以输也可以不输(不加上的话就是直接使用密钥验证了)

等待补充...