Хакер обходить iptables


9

(переміщено з SO)

У мене є iptables, що захищають sip-сервер. Він блокує всі IP-адреси, крім тих, які я спеціально відкрив, і, здається, працює майже для всіх. Я перевірив з безлічі ip-адрес, які не перелічені білим кольором, і всі вони потрапляють як слід.

АЛЕ я підібрав "хакера", який, здається, може обійти правила iptables. Його зондування INVITE вдається зробити це, і я не маю уявлення як, або що це було навіть можливо. За 10 років я цього раніше не бачив.

Я гадаю, що це повинно бути щось, що я зробив, але я не бачу цього.

iptables, створені так (MYIP визначено вгорі - відредаговано):

iptables -F
iptables -X
iptables -N ALLOWEDSIP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -d $MYIP --dport 22 -j ACCEPT
iptables -t filter -A INPUT -j ALLOWEDSIP

# This is my white list.
iptables -A ALLOWEDSIP -j RETURN

Тепер, маючи НІЧОГО в дозволі, все, що я повинен бути в змозі зробити, це SSH в (що я можу). Якщо я кидаю дзвінки на це, всі вони опускаються. Але Wireshark показує мені це (мій ip відредагований):

89.163.146.25 -> x.x.x.x SIP/SDP 805 Request: INVITE sip:521088972597572280@x.x.x.x |
x.x.x.x -> 89.163.146.25 SIP 417 Status: 100 Giving a try |
x.x.x.x -> 89.163.146.25 SIP 875 Status: 407 Proxy Authentication Required |

Його дзвінки потрапили у мій перемикач, і, хоча ACL відхилила його, вони ніколи не повинні туди потрапляти. Більше нічого не проникає. Витягаючи волосся. Хтось знає?

Для повноти, ось результат iptables -L:

# iptables -L --line-numbers -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       10   640 ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
2        0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
3        0     0 ACCEPT     tcp  --  any    any     anywhere             <redacted>.com  tcp dpt:6928
4        0     0 ALLOWEDSIP  all  --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6 packets, 544 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain ALLOWEDSIP (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 RETURN     all  --  any    any     anywhere             anywhere

РЕДАКТУВАТИ: щойно це бачили з провідного шквалу. Чи могли вони робити щось жахливе, як встановити інший спосіб, ніж грати за встановленим правилом? Можливо, вони грають на якійсь дірі у ЗВ'ЯЗАНІ?

89.163.146.25 -> <redacted> RTCP 806 Source port: tag-pm  Destination port: sip

EDIT 2: тут є ключовим моментом UDP. Коли я встановив OpenSIPS слухати лише TCP, проблема, схоже, відходить. Жодна їхня спроба більше не проходить, хоча вони надсилають більше таких повідомлень "тегів". Не пояснює, чому пакети навіть дістаються до відкритих вікон. iptables повинні були зупинити їх першими. Хочеться знати, що я тут зробив неправильно.

РЕДАКТ 3: Якщо я видаляю ПОВ'ЯЗАНІ, я припиняю відповідати на них, тож це щось стосується. Але я думаю, що мені потрібно пов'язане. Якісь поради щодо вирішення проблем?


1
ESTABLISHEDповинні працювати на UDP. Схоже, пакет передає потік і приймає відповіді на (вихідні) запити. У ваших "хакерів" є статичні IP-адреси? ;-) Якщо так, перевірте / proc / net / nf_conntrack, щоб побачити, що таблиця стану містить про них, коли вони наразі / не / підключені ... RELATED- це більш хитра штука ... Не знаю, що це робить для SIP . Чи має modprobeможливо показати модуль ipt_sip або що - то навантажувати , що буде робити «чарівні» речі?
Марки

@Marki - дякую за цю пораду. / proc / net / nf_conntrack не існує (centos 7), тому мені потрібно з’ясувати, що / чому / де.
Девід Уайлі

2
"conntrack-tools" - це річ, яку можна встановити з репо, тоді запущений "conntrack -L", схоже, перераховує їх. Збираюся подивитися, що це дає. Типовий, однак, він зупинився. Сподіваюся, просто пауза.
Девід Уайлі

1
Якщо це можливо: Спробуйте обмежити RELATEDдо -p icmp. Можливо, це вирішує це (або це підходяща робота, навколо якої не потрібно від вас читати про помічників, які займаються контратакою).
банальний

1
Ви переплутали речі навколо, додавши ланцюжок. Якщо ланцюги ACCEPT перевіряються перед вашим спеціальним дозволеним дозволом, то ALLOWEDSIP може бути марним.
Перемогти

Відповіді:


1

Єдине правдоподібне пояснення того, як це могло б працювати, - це те, що діючі дейтаграми UDP якимось чином передаються --state ESTABLISHED,RELATED.

Враховуючи, що UDP є протоколом без громадянства, я сумніваюся, що stateмодуль має ефективне відстеження за ним.

Щоб вирішити проблему, я обмежую перевірку стану протоколом TCP:

-A INPUT -m tcp -m state -p tcp --state ESTABLISHED,RELATED -j ACCEPT`

І попередньо відфільтруйте ALLOWEDSIPпротокол UDP (а краще, і порт призначення):

iptables -t filter -A INPUT -m udp -p udp --dport 5060 -j ALLOWEDSIP

-2

Ви можете звести нанівець. Це повинно обійти iptables.

route add 89.163.146.25 gw 127.0.0.1 lo

Перевір це

netstat -nr

АБО

route -n

Він хоче забити дірку будь-якого нового нападника, а не просто заблокувати цього.
Зденек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.