
文章插图
如果你运行的服务器有面向公众的 SSH 访问,你可能遇到过恶意登录尝试 。本文介绍了如何使用两个实用程序来防止入侵者进入我们的系统 。• 来源:linux.cn • 作者:Hobbes1069 • 译者:Xingyu.Wang •
(本文字数:9124,阅读时长大约:11 分钟)
如果你运行的服务器有面向公众的 SSH 访问,你可能遇到过恶意登录尝试 。本文介绍了如何使用两个实用程序来防止入侵者进入我们的系统 。
为了防止反复的 ssh 登录尝试,我们来看看 fail2ban 。而且,如果你不经常旅行,基本上停留在一两个国家,你可以将 FirewallD 配置为只允许 从你选择的国家访问。
首先,让我们为不熟悉这些应用程序的人员介绍一些术语,以完成这项工作:
fail2ban:一个守护进程,用于禁止发生多次认证错误的主机 。fail2ban 将监控 SystemD 日志,以查找对任何已启用的“ 监狱(jail)”的失败的验证尝试 。在达到指定失败次数后,它将添加一个防火墙规则,在配置的时间内阻止该特定 IP 地址 。
FirewallD:一个带有 D-Bus 接口的防火墙守护进程,提供动态防火墙 。除非你另行决定使用传统的 iptables,否则你已经在所有支持的 Fedora 和 centos 上安装了 FirewallD 。
假定前提
- 主机系统有一个互联网连接,并且要么是直接暴露在互联网上,要么是通过 DMZ(这两个都是非常糟糕的想法,除非你知道你在做什么),要么是有一个端口从路由器转发过来 。
- 虽然大部分的内容可能适用于其他系统,但本文假设当前系统是 Fedora(31 及以上)或 RHEL/CentOS 8 版本 。在 CentOS 上,你必须用 sudo dnf install epel-release 启用 Fedora EPEL 仓库 。
很有可能已经有某个 Firewalld 区已经允许 SSH 访问,但 sshd 服务本身默认没有启用 。要手动启动它,并且不在启动时永久启用它:
$ sudo systemctl start sshd或者在系统启动时启用,并同时启动它:$ sudo systemctl enable --now sshd下一步就是安装、配置、启用 fail2ban 。和往常一样,安装可以通过命令行完成:$ sudo dnf install fail2ban安装完毕后,下一步就是配置“监狱”(你要以设置的任何阈值监视并禁止的服务) 。默认情况下,IP 会被禁止 1 小时(这其实不够长) 。最好的做法是使用 *.local 文件覆盖系统默认值,而不是直接修改 *.config 文件 。如果我们查看我的 jail.local,我们可以看到:# cat /etc/fail2ban/jail.local[DEFAULT]# "bantime" is the number of seconds that a host is banned.bantime = 1d# A host is banned if it has generated "maxretry" during the last "findtime"findtime = 1h# "maxretry" is the number of failures before a host get banned.maxretry = 5换成通俗的语言讲,就是在过去一小时内尝试 5 次后,该 IP 将被封禁 1 天 。对于多次被封的 IP,也可以选择增加封禁时间,但这是另一篇文章的主题 。下一步是配置“监狱” 。在本教程中显示的是 sshd,但其他服务的步骤大致相同 。在 /etc/fail2ban/jail.d 中创建一个配置文件 。这是我的文件:
# cat /etc/fail2ban/jail.d/sshd.local[sshd]enabled = true就这么简单! 很多配置已经在为 Fedora 构建的软件包中处理了(提示:我是当前的维护者) 。接下来启用并启动 fail2ban 服务:$ sudo systemctl enable --now fail2ban希望没有立即出错,如果没有,请使用下面的命令检查 fail2ban 的状态:$ sudo systemctl status fail2ban如果它没有错误地启动,应该是这样的:$ systemctl status fail2ban● fail2ban.service - Fail2Ban ServiceLoaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)Active: active (running) since Tue 2020-06-16 07:57:40 CDT; 5s agoDocs: man:fail2ban(1)Process: 11230 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)Main PID: 11235 (f2b/server)Tasks: 5 (limit: 4630)Memory: 12.7MCPU: 109msCGroup: /system.slice/fail2ban.service└─11235 /usr/bin/Python3 -s /usr/bin/fail2ban-server -xf startJun 16 07:57:40 localhost.localdomain systemd[1]: Starting Fail2Ban Service…Jun 16 07:57:40 localhost.localdomain systemd[1]: Started Fail2Ban Service.Jun 16 07:57:41 localhost.localdomain fail2ban-server[11235]: Server ready如果是刚刚启动的,fail2ban 不太可能显示任何有意思的信息,但要检查 fail2ban 的状态,并确保“监狱”被启用,请输入:
推荐阅读
- 如何解密 Linux 版本信息
- 干水果茶做法配方,杨梅水果茶的做法和配方
- 高通推出全球首个5G和人工智能机器人平台,30+公司参与生态建设
- SpringBoot下使用定时任务的方式全揭秘
- IDEA首次使用配置
- 福建白茶产地有哪些,安吉白茶和福建白茶有什么区别
- 服务器|中科院回应停用知网:近千万续订费太贵 将用万方和维普替代
- 大飞机|东航事故机型复飞首趟航班满员:失事飞机相邻批次客机仍维检和评估
- 红海产品和蓝海产品的区别 什么是蓝海产品和红海产品
- 凤凰茶业匠心十年,匠心十年
