alex3179 Posted March 20, 2023 Posted March 20, 2023 (edited) Здравствуйте. Есть бордер на 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
pppoetest Posted March 20, 2023 Posted March 20, 2023 Цитата 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
rm_ Posted March 20, 2023 Posted March 20, 2023 Можно упростить строку ниже (какой же неудобный редактор постов). 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
Ivan_83 Posted March 20, 2023 Posted March 20, 2023 А нужен ли там вообще фаервол? Вставить ник Quote
alex3179 Posted March 21, 2023 Author Posted March 21, 2023 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
pppoetest Posted March 21, 2023 Posted March 21, 2023 Цитата iptables -A OUTPUT -j LOG --log-prefix "OUTPUT was dropped: " показало дропы Аутпут вообще не при делах. Там все правила принимаются. Кроме того это не дропы, а пакеты подпадающие под правилo, каммент подразумевался для инпута с дефолтполиси дроп, В 20.03.2023 в 23:22, Ivan_83 сказал: А нужен ли там вообще фаервол? Кстати да, можно просто запретить загрузку nf_conntrack и всех связанных с ним модулей и хелперов на старте. Вставить ник Quote
alex3179 Posted March 21, 2023 Author Posted March 21, 2023 (edited) С OUTPUT действительно это не дропы, я поторопился iptables -A INPUT -j LOG --log-prefix "INPUT was dropped: " - вообще ничего не попадает в лог из того что надо, но трафик не ходит А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты? Edited March 21, 2023 by alex3179 Вставить ник Quote
Ivan_83 Posted March 21, 2023 Posted March 21, 2023 53 minutes ago, alex3179 said: А как без фаервола? Светить в мир 22, 161, 179, 2601, 2605 порты? А авторизации нет? Можно было бы TTL выставить низким для локальных сервисов. Вставить ник Quote
taf_321 Posted March 22, 2023 Posted March 22, 2023 Вот еще вариант блокировки ненужного без 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
alex3179 Posted March 22, 2023 Author Posted March 22, 2023 taf_321, спасибо, попробую Мой вариант заработал на Debian 11 (Kernel 5.10) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.