Перейти к содержимому
Калькуляторы

stateless iptables

Здравствуйте.

Есть бордер на Centos 7.
Пытаюсь настроить stateless iptables.
Задача избавиться от переполнения nf_conntrack.
NAT не используется, адреса белые.
 

iptables -F
iptables -X
iptables -t raw -I PREROUTING -j NOTRACK
iptables -t raw -I OUTPUT -j NOTRACK
iptables -A INPUT -p tcp \! --syn -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
#
ipset -N bgp nethash
ipset -A bgp 1.1.1.1
ipset -A bgp 2.2.2.2
ipset -A bgp 3.3.3.3
ipset -A bgp 4.4.4.4
ipset -A bgp 5.5.5.5
iptables -A INPUT -p tcp --dport 179 -m set --match-set bgp src,dst -j ACCEPT


Но при таких настройках половина bgp сессий падает и висит в состоянии Connect.
Ладно если бы все сессии падали, а так неясно куда копать.
Что я делаю не так?
 

Изменено пользователем alex3179

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цитата

iptables -A INPUT -p tcp --dport 179 -j LOG --log-prefix "DST was dropped: "
iptables -A INPUT -p tcp --sport 179 -j LOG --log-prefix "SRC was dropped: "

И смотреть что дропается

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно упростить строку ниже (какой же неудобный редактор постов).

iptables -A INPUT -p tcp --dport 179 -m set --match-set bgp src -j ACCEPT

Здесь же про INPUT, зачем ещё фильтровать по dst.

Также для экспериментов заменить её на безусловный "iptables -A INPUT -p tcp --dport 179 -j ACCEPT", и посмотреть помогло ли это.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -A INPUT -p tcp --dport 179 -j LOG --log-prefix "DST was dropped: "
iptables -A INPUT -p tcp --sport 179 -j LOG --log-prefix "SRC was dropped: "
Ничего не показало, а вот
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT was dropped: "
показало дропы

Трафик нормально ходит только при
iptables -A INPUT -j ACCEPT

Если указать интерфейс, протокол или порт, то сразу дропы в OUTPUT
Хотя по дефолту iptables -P OUTPUT ACCEPT

Буду пробовать на новом ядре

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цитата

iptables -A OUTPUT -j LOG --log-prefix "OUTPUT was dropped: "
показало дропы

Аутпут вообще не при делах. Там все правила принимаются. Кроме того это не дропы, а пакеты подпадающие под правилo, каммент подразумевался для инпута с дефолтполиси дроп,

 

 

В 20.03.2023 в 23:22, Ivan_83 сказал:

А нужен ли там вообще фаервол?

Кстати да, можно просто запретить загрузку nf_conntrack и всех связанных с ним модулей и хелперов на старте.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С OUTPUT действительно это не дропы, я поторопился

iptables -A INPUT -j LOG --log-prefix "INPUT was dropped: " - вообще ничего не попадает в лог из того что надо, но трафик не ходит

А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты?
 

Изменено пользователем alex3179

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

53 minutes ago, alex3179 said:

А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты?

А авторизации нет?

Можно было бы TTL выставить низким для локальных сервисов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот еще вариант блокировки ненужного без conntrack:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:block_BGP - [0:0]
:block_out_IF - [0:0]
-A PREROUTING -p tcp -m tcp --dport 179 -j block_BGP
-A PREROUTING -p tcp -m tcp -m set --match-set LOCAL4 dst -m set --match-set save-ports dst -j DROP
-A PREROUTING -p udp -m udp -m set --match-set LOCAL4 dst -m set --match-set amplif-ports dst -j block_out_IF
-A PREROUTING -p udp -m udp --dport 123 -m u32 --u32 "0x0>>0x16&0x3c@0x8&0xff=0x2a" -j DROP
-A PREROUTING -m set --match-set flood src -j DROP
-A PREROUTING -i vlan226 -j NOTRACK
-A PREROUTING -i vlan2088 -j NOTRACK
-A PREROUTING -i vlan13 -j NOTRACK
-A block_BGP -m set --match-set bgp4 src -j ACCEPT
-A block_BGP -j DROP
-A block_out_IF -i vlan100 -j DROP
-A block_out_IF -i vlan226 -j DROP
-A block_out_IF -i vlan2088 -j DROP
-A block_out_IF -j ACCEPT
COMMIT

 

Правила в таблице raw, цепочка PREROUTING работает и для трафика приходящего на хост и на транзитный трафик, это надо учитывать. В сете bgp4 прописаны адреса bgp-пиров, в сете LOCAL4 прописаны адреса своих сетей, save-ports - порты типа 22, 161 итд, amplif-ports - порты применяемые для атаки на усиление, flood наполняет fail2ban. Интерфейсы vlan226 и vlan2088 смотрят в сторону аплинка, vlan13 смотрит в сторону локальной сети.

 

conntrack -L
conntrack v1.4.6 (conntrack-tools): 0 flow entries have been shown.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

taf_321, спасибо, попробую

Мой вариант заработал на Debian 11 (Kernel 5.10)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.