文章目录
SSH端口暴露在公网上很可能被黑客扫描,并尝试登入系统。这种攻击基本每天都在发生。
- 首先要检查SSH端口是否被攻击,主要检查检查失败登录。
一、检查攻击来源
btmp文件会记录SSH端口登录失败的信息,包括尝试的用户名、IP地址和时间等信息。
btmp为二进制文件,文件路径为/var/log/btmp。
- 查看文件btmp
使用命令lastb可以查看文件btmp的信息,参数-n可以指定显示数量。
shell
lastb -n 10 | tac
- 查看攻击者IP及攻击次数
shell
lastb | awk '{ print $3}' | sort | uniq -c | sort -n
- 查看攻击者尝试的用户名
shell
lastb | awk '{ print $1}' | sort | uniq -c | sort -n
- 分析攻击者
对攻击次数第一的IP进行分析。
shell
# 查看攻击开始时间
lastb | grep 137.184.155.125
# 查看攻击终止时间
lastb | grep 137.184.155.125 | tac
# 查看IP地理位置
curl ipinfo.io/137.184.155.125
二、防范措施
- 修改SSH端口
修改SSH端口可以避免广撒网式的端口扫描及后续的攻击。
shell
# 打开文件sshd_config
vim /etc/ssh/sshd_config
# 修改参数Port
# 修改前:
#port 22
# 修改后:
port 8500
# 重启SSH守护程序
systemctl restart sshd
- 设置复杂密码
设置密码为字母+数字+符号组合,提升暴力破解难度。
- 使用私钥登录
- Fail2ban+firewallcmd-ipset
个人比较推荐第四种方式,这种方式也是成本较低的抵御服务器入侵的方式,针对大量攻击行之有效。
三、Fail2ban+firewallcmd-ipset
Fail2ban是一个用于自动封禁恶意访问者的工具,而firewallcmd-ipset则是与firewalld集成的工具,用于管理IP集合和规则。下面是将Fail2ban与firewallcmd-ipset结合使用的具体步骤:
安装Fail2ban:
首先,确保你的系统中安装了Fail2ban。如果没有安装,你可以使用包管理器进行安装。例如,在基于RPM的系统(如Fedora或CentOS)上,可以使用sudo yum install fail2ban命令进行安装。
安装firewalld:
如果你的系统还没有安装firewalld,你需要先安装它。在基于RPM的系统上,可以使用sudo yum install firewalld命令进行安装。
配置Fail2ban:
Fail2ban的配置文件位于/etc/fail2ban/目录下。你可以复制默认的jail.conf文件并命名为jail.local,以便进行自定义配置。
powershell
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 接下来,编辑jail.local文件,并添加或修改以下参数:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
其中,ignoreip参数用于指定不受Fail2ban监控的IP地址或地址段。bantime参数定义了IP被禁止的时长,单位是秒。findtime定义了查找失败登录尝试的时间范围。maxretry定义了在此时间范围内允许的失败尝试次数。banaction定义了执行封禁操作的命令,这里使用的是firewallcmd-ipset。
配置firewalld以使用fail2ban:
为了让firewalld能够与Fail2ban协同工作,你需要配置firewalld来加载Fail2ban创建的IP集合。编辑/etc/firewalld/firewalld.conf文件,并添加或修改以下行:
powershell
rich_rules_file="/etc/firewalld/rich-rules.conf"
# 这将告诉firewalld加载/etc/firewalld/rich-rules.conf文件中的规则。
# 重启服务:
# 完成上述配置后,重启Fail2ban和firewalld服务,以使更改生效。
sudo systemctl restart fail2ban
sudo systemctl restart firewalld
测试配置:
最后,你可以尝试触发Fail2ban的封禁机制,以测试配置是否生效。例如,如果你配置Fail2ban监控SSH登录失败尝试,你可以尝试多次使用错误的凭据登录SSH。如果配置正确,你应该会在指定的bantime后被禁止登录。
如果你熟悉1Panel或者宝塔等面板,配置起来会更加快捷,这里提供的解决方案仅供参考,希望对你有用!