使用 csf 防火墙来有效阻止小规模 DDOS

之前我写过一篇文章,购买了VPS之后你应该做足的安全措施,这里边介绍了如何安装 csf 防火墙,其实很简单就几条命令,不过,由于当时我的无知,导致实际上csf 防火墙并没有真正生效,原因是 csf 和 ufw 一样都是 iptables 脚本,它们处在同一层级,是互相冲突的。

所以,在配置 csf 防火墙时,你应该先执行命令  ufw disable 来关闭 ufw

然后,我们安装 csf 防火墙:

安装完成后,安装需要的环境:

ok之后,执行命令来检查防火墙的状态: perl /usr/local/csf/bin/csftest.pl ,如果输出如下,那么防火墙的执行应该就没什么问题了:

测试 csf 可以正常工作

首先我们要做最基本的配置,来配置 csf 的放行端口,千万记得不能把 22 端口给断了,不然你就再见吧。

当然,csf 一旦安装好,是默认放行常见端口的,所以,我们做的只是去掉不用的。另外,csf 默认工作在测试模式,这样的话如果你真把自己关在外面了,没关系,五分钟后规则会清空的。

下面我们来编辑  vi /etc/csf/csf.conf :

默认情况下,放行的端口如下:

这里我根据我的需要,做了精简:

当然,我的服务器还支持 IPv6,所以需要继续往下翻,找到 IPv6 的配置,再来一遍:

然后是添加防御规则,阻止日常少量的 ddos,当然,量大了的话还得靠硬件了对吧?

找到字段  PORTFLOOD ,做如下规则:

这里规则是说分别对端口 22,80,443做策略(以IP为单位):

  • 如果 22 端口某 IP 在 300 秒内发起 5 个以上链接,就 ban;
  • 如果 80 或 443 端口某 IP 在 5 秒内发起 20 个以上链接,就 ban。

ban 的时间默认是 1800 秒。

然后,csf 还有个功能是在 ban 了 IP 之后发邮件通知你,我们对如下字段做修改,加入自己的邮件地址:

由于 lfd 还会发送可疑进程监控,如果你觉得烦,可以提前把你的进程加入白名单,编辑 /etc/csf/csf.pignore ,按照格式在末尾补充就可以了,比如我服务器跑了 nginx,php,我知道这不是可疑进程,那么就这样写:

这样,我们的防火墙就配置好了,保存好配置后就可以尝试重启一波:

记得先用检测命令查看配置是否正确: perl /usr/local/csf/bin/csftest.pl

然后使用命令  csf -r 来重启防火墙,如果没什么致命问题,那说明防火墙正常工作了。至于这句:

就让他  disabled 即可。

还有一个问题你可能会遇到,就是提示你 lfd 启动但崩溃了,这是正常的,在测试模式, lfd 不启动。

重新编辑  /etc/csf/csf.conf 配置文件,在第一行,把 1 改为 0:

保存后重启防火墙 csf -r 这时候防火墙就已经正常运行了。

使用命令启动 csf 和附带的 lfd:

通过查看 /var/log/lfd.log 可以看到 csf 防火墙的所有行为,比如 ban 了哪个 IP 之类的。

如果要添加白名单,那么就编辑  /etc/csf/csf.allow ,ip地址一行一个;

如果要手动添加黑名单,那么就编辑 /etc/csf/csf.deny ,也是一行一个,不过,这里边也会有规则自动添加的数据;

另外,你也可以添加忽略列表,列表中的 IP 地址不会被规则判断,但如果在黑名单中也存在,就会被阻止: /etc/csf/csf.ignore

这样,你的服务器应该就更坚固了 :)

参考文献

如何在Ubuntu上安装和配置CSF防火墙

How To Install and Configure Config Server Firewall (CSF) on Ubuntu

linux csf 防火墙 防止少量的ddos cc攻击很有效

How to disable send an email: lfd on server: Suspicious process running under user

CSF not sending emails.

“使用 csf 防火墙来有效阻止小规模 DDOS”的3个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注