我刚刚了解了 CSF,喜欢它提供的记录/阻止功能。但是它无法实现所需的阻止功能。
情况如下,我有一台具有多个 IP 地址的服务器。我在一个 IP 上运行 apache,在另一个 IP 上运行 ssh(因此针对我的网站的黑客几乎没有机会攻击 ssh 或其他服务)。
在 csf.allow 中我添加了:
tcp|in|d=80|d=xx.xx.xx.xx
tcp|in|d=22|d=xx.xx.xx.xy
但是在 iptables 中,允许是在阻止之前添加的,因此它毫无用处。
Chain LOCALINPUT (1 references)
num pkts bytes target prot opt in out source destination
1 1074 92873 ACCEPT tcp -- !lo * 0.0.0.0/0 xx.xx.xx.xy tcp dpt:22
2 34401 2163K ACCEPT tcp -- !lo * 0.0.0.0/0 xx.xx.xx.xx tcp dpt:80
3 0 0 DROP all -- !lo * xx.xx.xx.hacker1 0.0.0.0/0
4 0 0 DROP all -- !lo * xx.xx.xx.hacker2 0.0.0.0/0
有办法扭转这种局面吗?
答案1
我弄清楚了如何实现这一点,我用以下内容更改了 csf.pl:
我sub linefilter
交换了 $inadd (在第 1923 行)。
原来的:
my $inadd = "-I";
if ($ad eq "deny") {
$inadd = "-A";
新的:
my $inadd = "-A";
if ($ad eq "deny") {
$inadd = "-I";
我知道原始方法是最常见的方法,但是如果您想过滤特定端口/ip,这就是解决方案。只需确保您在忽略列表中有自己的(外部)ip,或者您可以轻松地物理(或 kvm over ip 等)访问机器,这样您就不会被意外锁定!