nixp.ru v3.0

29 мая 2017,
понедельник,
10:46:57 MSK

DevOps с компанией «Флант»
anonymous написал 23 сентября 2005 года в 15:12 (1251 просмотр) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Добрый день, всем! Есть линуксовый роутер, через него ходят напрямую в инет через маскарад несколько пользователей с разных внутренних айпи. При превышении лимита мне необходимо блокировать пользователя по айпи на роутере.

Никак не могу понять, как прибить уже установленные соединения посредством iptables. Все новые соединения отрубаются, а уже установленные — нет (аська например).

Делаю такую вещь:

/sbin/iptables -I INPUT -s 192.168.1.15 -j DROP

/sbin/iptables -I INPUT -d 192.168.1.15 -j DROP

/sbin/iptables -I OUTPUT -s 192.168.1.15 -j DROP

/sbin/iptables -I OUTPUT -d 192.168.1.15 -j DROP

/sbin/iptables -I FORWARD -s 192.168.1.15 -j DROP

/sbin/iptables -I FORWARD -d 192.168.1.15 -j DROP

Запускаю tcpdump, а там:

17:09:44.370922 IP 192.168.1.15.1309 > ahp-m01.blue.aol.com.http: P 410:618(208) ack 472 win 64164

17:09:44.371930 IP ahp-m01.blue.aol.com.http > 192.168.1.15.1294: . ack 235 win 16384

До кучи ещё и бродкасты, arp-запросы и т.д. пролезают:

16:24:00.797476 IP 192.168.1.15.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST

16:21:53.117428 arp who-has 192.168.1.5 tell 192.168.1.15

16:20:58.274426 IP 192.168.1.15.1259 > server-1.domain: 47478+ SOA? comp1.main.server. (34)

Подскажите, как это можно исправить.

Dr. Evil

во-первых, если ты ставишь флаг -I, то после цепочки надо указать место, где она расположиться, например 1. У тебя правила, которые ты вбил, находятся ниже тех, что ты прописал ранее (если я не прав, переходи к совету 2)

во-вторых, покажи iptables- L

fly4life

iptables -L ничем не поможет =(.

Дело в том, что информация об установленных соединениях находится в conntrack-таблице (/proc/net/ip_conntrack). Как удалить оттуда нужную запись, я, например, не знаю =(. Если только перезагрив маршрутизатор. Но таким образом связь разорвётся у всех =(.

Dr. Evil

Саш, а если он эти правли поместит в начало каждой из цепочек, то соединение порвется… у меня так было.

anonymous
Dr._Evil
во-первых, если ты ставишь флаг -I, то после цепочки надо указать место, где она расположиться, например 1. У тебя правила, которые ты вбил, находятся ниже тех, что ты прописал ранее (если я не прав, переходи к совету 2)

во-вторых, покажи iptables- L

Нет, правила находятся ниже:

# /sbin/iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

DROP all — anywhere 192.168.1.15

DROP all — 192.168.1.15 anywhere

Chain FORWARD (policy DROP)

target prot opt source destination

DROP all — anywhere 192.168.1.15

DROP all — 192.168.1.15 anywhere

#другие правила

#…

ACCEPT all — anywhere 192.168.1.15

ACCEPT all — 192.168.1.15 anywhere

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

DROP all — anywhere 192.168.1.15

DROP all — 192.168.1.15 anywhere

anonymous

Да, совсем забыл.

ip роутера 192.168.1.7, ip компа 192.168.1.7.

Соединtys компы через коммутатор.

Dr. Evil

не! так не пойдет!

«iptables-save -c» давай!

Curu3MyHg
kuzmichnn
ip роутера 192.168.1.7, ip компа 192.168.1.7

?

точно? ;)

kuzmichnn

Не вопрос:

# /sbin/iptables-save -c

# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:19 2005

*mangle

:PREROUTING ACCEPT [1973319:895991352]

:INPUT ACCEPT [129953:44731192]

:FORWARD ACCEPT [1830944:837449142]

:OUTPUT ACCEPT [115769:41202170]

:POSTROUTING ACCEPT [1943693:878336157]

COMMIT

# Completed on Fri Sep 23 17:38:20 2005

# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:20 2005

*filter

:INPUT ACCEPT [129954:44731232]

:FORWARD DROP [7339:376963]

:OUTPUT ACCEPT [115361:41170958]

[0:0] -A INPUT -d 192.168.1.15 -j DROP

[0:0] -A INPUT -s 192.168.1.15 -j DROP

[0:0] -A FORWARD -d 192.168.1.15 -j DROP

[42:2064] -A FORWARD -s 192.168.1.15 -j DROP

[30533:21546103] -A FORWARD -d 192.168.1.33 -j ACCEPT

[28192:4819406] -A FORWARD -s 192.168.1.33 -j ACCEPT

[9780:6734669] -A FORWARD -d 192.168.1.1 -o eth0 -j ACCEPT

[10067:812714] -A FORWARD -s 192.168.1.1 -i eth0 -j ACCEPT

[0:0] -A FORWARD -d 192.168.1.21 -o eth0 -j ACCEPT

[0:0] -A FORWARD -s 192.168.1.21 -i eth0 -j ACCEPT

[114785:66095037] -A FORWARD -s 192.168.1.15 -j ACCEPT

[92639:17230102] -A FORWARD -d 192.168.1.15 -j ACCEPT

[8129:603271] -A FORWARD -s 192.168.1.0/255.255.255.0 -o eth2 -p tcp -m tcp --dport 5190 -j ACCEPT

[19807:8868442] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

[0:0] -A FORWARD -s 192.168.1.0/255.255.255.0 -d 64.12.0.0/255.255.0.0 -p tcp -m tcp --dport 5190 -m state --state RELATED,ESTABLISHED -j ACCEPT

[0:0] -A FORWARD -s 192.168.1.0/255.255.255.0 -d 205.188.0.0/255.255.0.0 -p tcp -m tcp --dport 5190 -m state --state RELATED,ESTABLISHED -j ACCEPT

[18:864] -A FORWARD -s 192.168.1.97 -d 195.98.32.202 -i eth0 -j ACCEPT

[0:0] -A FORWARD -s 195.98.32.202 -d 192.168.1.97 -o eth0 -j ACCEPT

[202:9696] -A FORWARD -s 192.168.1.4 -d 195.98.32.202 -i eth0 -j ACCEPT

[0:0] -A FORWARD -s 195.98.32.202 -d 192.168.1.4 -o eth0 -j ACCEPT

[0:0] -A FORWARD -s 213.177.96.8 -o eth0 -p tcp -m tcp --dport 1337 -j DROP

[0:0] -A FORWARD -s 213.177.96.221 -o eth0 -p tcp -m tcp --dport 1337 -j DROP

[0:0] -A FORWARD -s 193.125.70.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 194.190.176.0/255.255.240.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 195.122.224.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 195.98.32.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 212.92.128.0/255.255.192.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 217.118.93.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 81.18.132.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 194.84.54.128/255.255.255.192 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 194.84.135.0/255.255.255.128 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 194.84.156.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 194.84.212.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 195.151.72.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 195.151.74.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 212.176.99.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 212.176.104.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 213.24.236.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 217.23.16.0/255.255.240.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 217.106.142.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 62.76.114.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 62.76.248.0/255.255.252.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 81.18.147.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 212.193.200.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 212.67.0.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 82.208.64.0/255.255.192.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A FORWARD -s 213.177.96.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT

[0:0] -A OUTPUT -s 192.168.1.15 -j DROP

[0:0] -A OUTPUT -d 192.168.1.15 -j DROP

COMMIT

# Completed on Fri Sep 23 17:38:20 2005

# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:20 2005

*nat

:PREROUTING ACCEPT [109306:19478043]

:POSTROUTING ACCEPT [10793:806388]

:OUTPUT ACCEPT [3599:257509]

[23912:1259007] -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth2 -j MASQUERADE

COMMIT

# Completed on Fri Sep 23 17:38:20 2005

Кстати, уже стало лучше -

теперь есть только исходящие от 192.168.1.15 и бродкасты.

17:47:31.631830 IP 192.168.1.15.2280 > ahp-d01.blue.aol.com.http: S 850261937:850261937(0) win 64240

17:47:36.663024 IP 192.168.1.15.2281 > ahp-d02.blue.aol.com.http: S 954201668:954201668(0) win 64240

17:47:40.434929 arp who-has 192.168.1.83 tell 192.168.1.15

17:47:40.453972 arp who-has 192.168.1.68 tell 192.168.1.15

Понятно, что исходящие из-за того, что DROP в конце цепочки, что странно, должен быть в начале — добавлял то одинаково:

# /sbin/iptables -I FORWARD -s 192.168.1.15 -j DROP

# /sbin/iptables -I FORWARD -d 192.168.1.15 -j DROP

# /sbin/iptables -I INPUT -s 192.168.1.15 -j DROP

# /sbin/iptables -I INPUT -d 192.168.1.15 -j DROP

# /sbin/iptables -I OUTPUT -d 192.168.1.15 -j DROP

# /sbin/iptables -I OUTPUT -s 192.168.1.15 -j DROP

kuzmichnn

Ошибся, arp запросы.

Genie

iptables -A … добавляет в конец цепочки

iptables -I … добавляет в начало цепочки

кроме того, если тебе надо бсросить (закрыть) уже установленные соединения, то, imho, проще перегрузить соответствующий conntrac модуль. впрочем, можно и явно запретить установленные соединения: iptables -I ${цепочка} -m state --state ESTABLISHED -j RESET … (или около того)

fly4life
Genie
кроме того, если тебе надо бсросить (закрыть) уже установленные соединения, то, imho, проще перегрузить соответствующий conntrac модуль.

Угу, это как в случае с перезагрузкой — сбросятся все установленные соединения.

Genie
впрочем, можно и явно запретить установленные соединения: iptables -I ${цепочка} -m state --state ESTABLISHED -j RESET … (или около того)

Действия 'RESET' у iptables нету ведь. Серёг, скорее -j REJECT --reject-with tcp-reset. Однако дейсвтвие 'REJECT' работает аналогичным образом, что и 'DROP’, с одним лишь отличием. Действие 'REJECT' посредством единственного своего ключа --reject-with выдает сообщение об ошибке на хост, передавший пакет.

Так что, может и не прокатить. Хотя попробовать стОит.

kuzmichnn

Увы, и это не помогает:(

Genie

запрети в таблице nat маскарадирование пакетов для этого хоста.

kuzmichnn

И это не помогло:( Валит на асечный сайт ивсё тут:(

# /usr/sbin/tcpdump host 192.168.1.15

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

17:21:12.994992 arp who-has 192.168.1.5 tell 192.168.1.15

17:21:23.567409 arp who-has 192.168.1.68 tell 192.168.1.15

17:21:28.575759 IP 192.168.1.15.1168 > router-2.domain: 1503+ A? login.icq.com. (31)

17:21:28.577442 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240

17:21:30.109357 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240

17:21:30.110531 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240

17:21:31.401930 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240

17:21:33.111849 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240

17:21:33.111855 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240

17:21:37.436982 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240

17:21:39.146924 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240

17:21:39.146930 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240

Genie

так. стоп. ты на внутреннем же интерфейсе смотришь?

ну так и правильно должно ловиться.

(если ты хочешь, чтобы они не приходили на рутер, то тебе надо сделать, чтобы они не исходили из того 192.168.1.15. что, собственно, делается несколько не на этом компе, а?)

если я правильно ошибаюсь, у тебя eth2 — внешний интерфейс. поэтому и смотри на нём. правда, не уверен, что там будут пакеты с этим адресом, так как они уде будут промаскарадены.

kuzmichnn

Всё правильно, eth0 — локалка, а eth2 — внешний интерфейс. Смотрю на локалке. Действительно, на внешнем интерфейсе они будут промаскаражены.

Тут вот в чём дело — использую биллинговую систему TA Billing.

Она обсчитывает статистику с локальных интерфейсов.

Есть скрипт для отрубания пользователей при превышении трафика. Он то как раз и даёт команды iptables. Но он запускается каждый раз когда от/к пользователю приходит хоть один пакетик. В результате считалка валит iptables безумным количеством команд и связь не работает. На внешнем интерфейсе TA Billing не считает.:(

Какие есть идеи?