Используйте iptables для входа соединений за исключением двух адресов

Мы хотели бы использовать iptables для входа всех сетевых соединений кроме того, если соединяющийся адрес A.B.C.D или соединяющийся адрес E.F.G.H. Эти два адреса не могут быть объединены в единственный диапазон CIDR без диапазона включая адреса, которые мы действительно хотим включать. Я добираюсь отчасти там путем добавления этого правила iptables:

-I INPUT ! -s A.B.D.E -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "

Однако это все еще регистрирует соединения от E.F.G.H. Существует ли способ получить все, не регистрируясь также?

(Эти два адреса генерируют много соединений, и мы не должны регистрировать их.)

2
задан 9 December 2014 в 20:59
3 ответа

Добавьте правило или два над процитированной строкой, разрешающее A.B.C.D. или E.F.G.H., затем выполните запись в журнал ниже. iptables работает в порядке с правилами, поэтому разрешение чего-либо ранее - это конец обработки.

Это также причина, по которой вы добавляете общее "deny all" в конец большинства наборов правил брандмауэра. Если что-то не охвачено вашими правилами выше, тогда запретите это, потому что это неожиданно и, скорее всего, нежелательно.

Пример (настраивайте по мере необходимости, не просто копируйте это):

-A INPUT -s A.B.C.D -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
-A INPUT -s E.F.G.H -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "
-A INPUT -j DROP
1
ответ дан 3 December 2019 в 12:49

Другой вариант - использовать ipset .

Сначала вы создаете правильный набор IP:

ipset create DO_NOT_LOG hash:ip

Затем добавьте адреса, которые хотите исключить:

ipset add DO_NOT_LOG A.B.C.D
ipset add DO_NOT_LOG E.F.G.H

Наконец, в правиле ведения журнала iptables добавьте отрицательное совпадение:

-I INPUT -m set ! --match-set DO_NOT_LOG src -p tcp -m tcp --dport 3306 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New Connection "

! --match-set DO_NOT_LOG src означает: «Сопоставить пакеты, адрес источника которых ( src ) НЕ найден в наборе DO_NOT_LOG »

0
ответ дан 3 December 2019 в 12:49

Вы можете создать пользовательскую цепочку, которую можно назвать LOG_UNLESS, а затем сделать так:

-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j LOG_UNLESS
-A LOG_UNLESS -s 192.0.2.1 -j RETURN
-A LOG_UNLESS -s 203.0.113.2 -j RETURN
-A LOG_UNLESS -j LOG --log-level 1 --log-prefix "New Connection "
0
ответ дан 3 December 2019 в 12:49

Теги

Похожие вопросы