这篇文章上次修改于 2006 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
事件来由
近期我的 Linux 服务器遭到了暴力破解攻击。截至 3.19 日共有 500+ 个 IP 尝试过,十分吓人。可惜我的密码组合是 大小写 + 数字 + 符号 的,你 TM 倒是破解出来啊)所以呢,我打算对我的服务器进行一次安全加固,顺便借这个机会好好学习学习 Linux 管理~ 博主第一次写 Linux 的文章,可能有些地方描述不够正确,希望大家给予纠正和完善,谢谢啦!
准备软件
- iptables - 简单来讲就是一个防火墙,可以限制 IP 访问服务器
- fail2ban - 通过检测系统日志,匹配错误信息并可执行相应的屏蔽操作
我们首先先安装这两个软件
yum install -y iptables
yum install -y fail2ban
让 iptables
和 fail2ban
开机自启动
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
后续会询问你输入密码,可以输也可以不输(不加上的话就是直接使用密钥验证了)
等待补充...
已有 12 条评论
好文!我用 CloudCone 也会受到暴力破解... 无奈只能修改端口... 话说 BT 面板真好用!
暴力破解是已知用户名的情况吧?禁用root什么的可不可以呢?如果是用 Paul 这个用户名的话,最好还是不要服务器登陆名和用户名一样吧 😂
学习到了
实现开机自启动,
1.将执行程序拷贝一份放到/etc/init.d/下
2.执行systemctl enable *
3.可使用chkconfig --list查看是否配置成功
生命在于折腾~~
@小轲 大不了重装 2333 🤣
自从升级了面板就有这个提示了,不知道是真是假
@芝麻 以 Linux 系统的 Log 为准吧
我的服务器只是在升级面板后才提示。平时没有。
我觉得还是密钥简单粗暴。。
(顺便那个看板娘可以加个关闭按钮吗,在手机上发表评论会很蛋疼
@tcdw 但是手机连接就很麻烦了...
@Paul 好吧,我在手机上用 JuiceSSH。。