alex3179 Posted March 20, 2023 (edited) · Report post Здравствуйте. Есть бордер на 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. Ладно если бы все сессии падали, а так неясно куда копать. Что я делаю не так? Edited March 20, 2023 by alex3179 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 20, 2023 · Report post Цитата 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: " И смотреть что дропается Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rm_ Posted March 20, 2023 · Report post Можно упростить строку ниже (какой же неудобный редактор постов). 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", и посмотреть помогло ли это. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted March 20, 2023 · Report post А нужен ли там вообще фаервол? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex3179 Posted March 21, 2023 · Report post 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 Буду пробовать на новом ядре Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 21, 2023 · Report post Цитата iptables -A OUTPUT -j LOG --log-prefix "OUTPUT was dropped: " показало дропы Аутпут вообще не при делах. Там все правила принимаются. Кроме того это не дропы, а пакеты подпадающие под правилo, каммент подразумевался для инпута с дефолтполиси дроп, В 20.03.2023 в 23:22, Ivan_83 сказал: А нужен ли там вообще фаервол? Кстати да, можно просто запретить загрузку nf_conntrack и всех связанных с ним модулей и хелперов на старте. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex3179 Posted March 21, 2023 (edited) · Report post С OUTPUT действительно это не дропы, я поторопился iptables -A INPUT -j LOG --log-prefix "INPUT was dropped: " - вообще ничего не попадает в лог из того что надо, но трафик не ходит А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты? Edited March 21, 2023 by alex3179 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted March 21, 2023 · Report post 53 minutes ago, alex3179 said: А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты? А авторизации нет? Можно было бы TTL выставить низким для локальных сервисов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
taf_321 Posted March 22, 2023 · Report post Вот еще вариант блокировки ненужного без 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. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex3179 Posted March 22, 2023 · Report post taf_321, спасибо, попробую Мой вариант заработал на Debian 11 (Kernel 5.10) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...