Назад | Перейти на главную страницу

Разрешение определенных портов на определенных интерфейсах / IP с помощью CSF

Я только что узнал о CSF, и мне нравятся возможности ведения журнала / блокировки, которые он мне дает. Однако это не делает желаемой блокировки.

Ситуация следующая, у меня есть сервер с несколькими 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           

Есть ли способ исправить это?

Я понял, как это сделать, я изменил 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 и т. Д.) Доступ к машине, чтобы вас случайно не заблокировали!