如何在FreeBSD 11.1上安装Blacklistd

・4 分钟阅读

介绍

任何连接到互联网的服务都是恶意攻击或无授权访问的潜在目标,有类似fail2bansshguard的工具,但是这些工具是有限的,因为它们只是解析日志文件,Blacklistd采取了不同的方法,像SSH这样的修改过的守护进程能够直接连接到blacklistd,然后添加新的防火墙规则。

步骤1:PF (Firewall )

若要创建最小规则集,请编辑/etc/pf.conf,使它如下所示:


set skip on lo0
scrub in on vtnet0 all fragment reassemble

anchor"blacklistd/*" in on vtnet0

block in all
pass out all keep state
antispoof for vtnet0 inet

pass in quick on vtnet0 inet proto icmp all icmp-type echoreq
pass in quick on vtnet0 proto tcp from any to vtnet0 port 22

现在让PF自动启动,编辑/etc/rc. conf :


pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"

但是,你还需要首先做一个额外的事情: 测试你的规则以确保一切都正确,为此,请使用以下命令:


pfctl -vnf /etc/pf.conf

如果此命令报告错误,请返回并修复错误!

现在,重新启动服务器确保一切正常工作:shutdown -r now

第二步:Blacklistd

IP被屏蔽24小时。这是默认值,可以在/etc/blacklistd中更改:


# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h

编辑/etc/rc.conf以启用Blacklistd:


blacklistd_enable="YES"
blacklistd_flags="-r"

使用以下命令启动Blacklistd:


service blacklistd start

步骤3:SSH

我们需要做的最后一件事是告诉sshd通知blacklistd ,将UseBlacklist yes添加到/etc/ssh/sshd_config文件,现在用service sshd restart重启SSH 。

最后一步

最后,尝试使用无效密码登录到你的服务器。

要获取所有阻止的IP,请使用以下命令之一:


blacklistctl dump -bw
 address/ma:port id nfail last access
 150.x.x.x/32:22 OK 3/3 2017/x/x 04:43:03
 115.x.x.x/32:22 OK 3/3 2017/x/x 04:45:40
 91.x.x.x/32:22 OK 3/3 2017/x/x 07:51:16
 54.x.x.x/32:22 OK 3/3 2017/x/x 12:05:57

pfctl -a blacklistd/22 -t port22 -T show
 54.x.x.x
 91.x.x.x
 115.x.x.x
 150.x.x.x

要删除已阻止的IP,必须使用命令pfctl ,例如:


pfctl -a blacklistd/22 -t port22 -T delete <IP>

请注意,blacklistctl仍然显示IP被屏蔽!这是正常的,在将来的版本中会删除。

Hrh profile image