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