Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 526676 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1065 : 05 Марта 2011, 01:25:29 »
Я правильно понял что что-то обеспечивает пересылку пакетов с уровня приложений?

Такое предположение подтверждается вот этой записью из лога:
IPT OUTPUT packet died: IN= OUT=wlan0 SRC=193.45.3.145 DST=192.168.8.2 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=80 DPT=60074 WINDOW=0 RES=0x00 ACK RST URGP=0

Но почему тогда пакеты идут и через цепочку FORWARD (а они идут - видно по счётчику)

И почему после очистки таблицы NAT заканчивается? Всего правил навтыкал вот таких (кстати, с ними интернета тупо нет):
Chain INPUT (policy ACCEPT 1 packets, 126 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 BAD_TCP_PACKETS  tcp  --  any    any     anywhere             anywhere           
    0     0 ACCEPT     all  --  lo     any     127.0.0.0/8          anywhere           
    0     0 ACCEPT     all  --  lo     any     ip-xxx-xxx-xxx-xxx.spark-rostov.ru  anywhere           
    0     0 ACCEPT     all  --  lo     any     192.168.8.1          anywhere           
    0     0 ACCEPT     all  --  wlan0  any     192.168.8.0/24       anywhere           
    0     0 ACCEPT     all  --  any    any     anywhere             ip-xxx-xxx-xxx-xxx.spark-rostov.ru state RELATED,ESTABLISHED
    0     0 TCP_PACKETS  tcp  --  eth0   any     anywhere             anywhere           
    0     0 UDP_PACKETS  udp  --  eth0   any     anywhere             anywhere           
    0     0 LOG        all  --  any    any     anywhere             anywhere            limit: avg 3/min burst 3 LOG level debug prefix `IPT INPUT packet died: '

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 BAD_TCP_PACKETS  tcp  --  any    any     anywhere             anywhere           

Chain OUTPUT (policy ACCEPT 1 packets, 309 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 BAD_TCP_PACKETS  tcp  --  any    any     anywhere             anywhere           
    0     0 ACCEPT     all  --  any    any     127.0.0.0/8          anywhere           
    0     0 ACCEPT     all  --  any    any     ip-xxx-xxx-xxx-xxx.spark-rostov.ru  anywhere           
    0     0 ACCEPT     all  --  any    any     192.168.8.1          anywhere           
    0     0 LOG        all  --  any    any     anywhere             anywhere            limit: avg 3/min burst 3 LOG level debug prefix `IPT OUTPUT packet died: '

Chain ALLOWED (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 DROP       tcp  --  any    any     anywhere             anywhere           

Chain BAD_TCP_PACKETS (3 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN state NEW reject-with tcp-reset
    0     0 LOG        tcp  --  any    any     anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW LOG level warning prefix `NEW without SYN:'
    0     0 DROP       tcp  --  any    any     anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW

Chain ICMP_PACKETS (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp source-quench
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp echo-reply
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp parameter-problem

Chain TCP_PACKETS (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ALLOWED    tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh

Chain UDP_PACKETS (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:ntp
    0     0 DROP       udp  --  eth0   any     anywhere             255.255.255.255     udp dpts:loc-srv:netbios-ssn


Пользователь решил продолжить мысль 05 Марта 2011, 01:35:46:
Да и вообще, мучаешься - пытаешься честно разобраться, а в ответ получаешь такое в логах:

IPT OUTPUT packet died: IN= OUT=lo SRC=109.171.121.233 DST=xxx.xxx.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=37636 DPT=53878 WINDOW=0 RES=0x00 ACK RST URGP=0


Из всего что я изучил за 2 дня следуюет, что пакета такого быть не может, так как:
1 Цепочку OUTPUT проходят только пакеты исходящие от меня
2 ip источника, это ip с которого отправлен пакет.

пакет невозможен на основании уже этих 2 правил, что там говорить о том, что плучатель я (у исходящего-то пакета...)
« Последнее редактирование: 05 Марта 2011, 01:35:46 от dr.Faust »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1066 : 05 Марта 2011, 01:48:04 »
Для просмотра правил существует команда iptables-save
Пакет нелогичен, но не невозможен. IP источника, на который ты ссылаешься, это всего лишь адрес отправителя, указанный в заголовке пакета. От кого РЕАЛЬНО пришел пакет - никто не знает.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1067 : 05 Марта 2011, 08:15:49 »
Как работает NAT?!!!11
Nat работает через таблицу nat, а не через таблицу filter, которая выводится по умолчанию "iptables -L"

sudo iptables -t nat -nvLЗдесь найдёте ответ.

Пользователь решил продолжить мысль [time]Sat Mar  5 08:20:46 2011[/time]:
А за пересылку отвечает цепочка ....

А вообще, чтобы разобраться возьмите картинку организации iptables, представьте себя пакетом, и ходите по этой картинке, многие вопросы отпадут.
Мне, даже учитывая мою паталогическую лень читать, очень помог материал в wiki
« Последнее редактирование: 05 Марта 2011, 08:21:53 от fisher74 »

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1068 : 05 Марта 2011, 10:25:58 »
Логично.
И ответ мне не нравиться:
 88069 9126K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0 

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1069 : 05 Марта 2011, 12:29:12 »
чем не нравится? тем, что всем пакетам выходящим с интерфейса eth0 будет подмениваться source-адрес на адрес этого интерфейса? Это правильно для шлюза между домашней сетью и глобалом. Иначе пакет не найдёт обратоного пути (если конечно вообще не дропнется на маршрутизаторах провайдера)

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1070 : 05 Марта 2011, 14:46:01 »
Вот тем и не нравится, что ВСЕ, да ещё и маскарадятся...

Вот и объяснение пакетам типа:
IPT OUTPUT packet died: IN= OUT=lo SRC=109.171.121.233 DST=xxx.xxx.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=37636 DPT=53878 WINDOW=0 RES=0x00 ACK RST URGP=0

Правильно же?

Правильно я понимаю, что в том правиле достаточно поменять источник на 192.168.8.0/24 ?
А по хорошому, MASQUERADE ещё заменить SNAT xxx.xxx.xxx.xxx ?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1071 : 05 Марта 2011, 14:47:03 »
Вот тем и не нравится, что ВСЕ, да ещё и маскарадятся...
Ответ в соседней теме.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1072 : 06 Марта 2011, 09:20:57 »
Помогите, всё-таки разобраться. Очень хочется.
И вот пока man читаю или очередное HOW-TO или какой-нибудь скрипт всё вроде ясно.
И ка пакеты идут, и как проходят цепочки и как правила работают, но дьявол в деталях и как только доходит до практики, куча мелких вопросов хоронит всю до того понятную логику, а интернет перестаёт работать.

Вот мои вопросы, которые ставят меня в тупик:
0 У меня eth0 смотрит в интернет на постоянном IP 86.110.МОЙ.IP, wlan0 (192.168.8.1) в домашнюю сетку (это ещё не вопрос :) )

1 Откуда берутся пакеты вида:
IPT OUTPUT packet died: IN= OUT=lo SRC=10.84.29.108 DST=86.110.МОЙ.IP LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=14181 DPT=60950 WINDOW=0 RES=0x00 ACK RST URGP=0 в цепочке OUTPUT? Для меня решительно непонятно тут следующие:
        1.1 если мои IP это 86.110.МОЙ.IP, 192.168.8.1 и 127.0.0.1, а цепочку OUTPUT проходят только локально исходящие пакеты, то как там появляется пакте с SRC отличным от трёх вышеперечисленных IP?
        1.2 Откуда вообще в моём случае беруться IP из диапазона 10.х.х.х?
        1.3 Почему пакет в котором ни один из IP не 127.0.0.1 отправляется через интерфейс lo?
        1.x Ну и что с этими пакетами делать? (из того что это ACK - это видимо ответ на мою попытку установить соединение, а значит его надо пропустить, но с кем и какое приложение пытается установить соединение через lo да ещё и на адрес несуществующей локалки и кто блин ему отвечает?)

2  Откуда мог взяться пакет:
IPT OUTPUT packet died: IN= OUT=wlan0 SRC=89.208.136.153 DST=192.168.8.2 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=80 DPT=43107 WINDOW=0 RES=0x00 ACK RST URGP=0 в цепочке OUTPUT, если я не пытался установить никаких соединений с машиной 192.168.8.2?
        2.1 Почему у него внешний IP если этот пакет идёт через OUTPUT? Я ожидал бы увидеть его в FORWARD, но не тут...

3 Почему "нет интернета" если третьим и последним видом заблокированных пакетов являются пакеты вида:
IN=eth0 OUT= MAC=00:18:f3:fb:34:42:00:1b:d5:64:88:bf:08:00 SRC=189.18.69.106 DST=86.110.МОЙ.IP LEN=131 TOS=0x00 PREC=0x80 TTL=105 ID=15263 PROTO=UDP SPT=46702 DPT=58878 LEN=111? При этом пинги идут, nslookup получает адреса, а странички в опере не грузятся.
        3.1 Что это вообще за пакет бегающий по непривилегированным портам?
        3.x Надо ли их разрешить?

4 Этот вопрос уже по iptables - сто случается с пакетом если он был отправлен на проверку в пользовательскую цепочку и не попал ни под одно правил в ней? Он будет выброшен или вернётся в вызвавшую цепочку?

Есть ещё пара вопросов по скриптам которые приводились в этой теме, но я собираюсь найти на них ответы сам, когда пойму, то что ещё не понимаю...
« Последнее редактирование: 06 Марта 2011, 09:25:55 от dr.Faust »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1073 : 06 Марта 2011, 13:59:43 »
4 Этот вопрос уже по iptables - сто случается с пакетом если он был отправлен на проверку в пользовательскую цепочку и не попал ни под одно правил в ней? Он будет выброшен или вернётся в вызвавшую цепочку?
Пакеты никогда не выбрасываются, если только ты сам их не выбросил. Вернётся в вызывавшую.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1074 : 06 Марта 2011, 14:25:54 »
Вот ещё вопрос, уже по идеологии настройки - правильно ли первым же правилом пропустить весь траф по уже открытым соединениям: -A INPUT -p all --state ESTABLISHED,RELATED -j ACCEPT ?
И вопрос уже по этому правилу (оно не моё - взял из одного из скриптов) - а зачем там опция -p all, разве ICMP и UDP имеют состояние и могут относится к соединениям - у них же вроде нет сессии?
« Последнее редактирование: 06 Марта 2011, 14:29:06 от dr.Faust »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1075 : 06 Марта 2011, 14:27:07 »
Правильно.
-p all там лишнее.
Да, могут относиться.
Например, icmp ответ port unreachable на попытку соединения по tcp.
« Последнее редактирование: 06 Марта 2011, 14:31:05 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1076 : 06 Марта 2011, 14:29:11 »
По каким маршрутам трафик можно разрешить сразу же, т.е. не проверяя его? Например разрешить весь трафик через интерфейс lo это безопасно?

Спасибо, AnrDaemon.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1077 : 06 Марта 2011, 14:32:30 »
По каким маршрутам трафик можно разрешить сразу же, т.е. не проверяя его? Например разрешить весь трафик через интерфейс lo это безопасно?

Спасибо, AnrDaemon.

https://forum.ubuntu.ru/index.php?topic=99586.0
Правила под первым спойлером.
Практически база любой настройки.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dr.Faust

  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1078 : 06 Марта 2011, 14:46:29 »
Там вы выпускаете весь трафик совершенно спокойно.
На оффтопик я так не делал - вдруг враг уже внутри.
Это вообще нормально? Или это допущение? Или обратное паранойя?

И ещё, почему conntrack, а не state? Чем-то лучше или пофиг?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1079 : 06 Марта 2011, 15:03:59 »
Там вы выпускаете весь трафик совершенно спокойно.
На оффтопик я так не делал - вдруг враг уже внутри.
Это вообще нормально? Или это допущение? Или обратное паранойя?

Это не Windows. Тут "вдруг" ничего не происходит. И, у меня нет приложений, которые я не ставил. Так что даже с учётом моей паранойи, меня это не беспокоит.

Цитировать
И ещё, почему conntrack, а не state? Чем-то лучше или пофиг?
В данном конкретном случае - без разницы. Просто я предпочитаю более современную версию модуля.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.024 секунд. Запросов: 21.