Обсуждение:Подробная настройка iptables

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск

Чумовая статейка. С кучей наворотов непонятных. Может поискать чего попроще для статьи "Iptables для новичков"? :) Где будет объяснено что такое: интерфейсы, NAT, гейты, бродкасты, маски... А эту переименуем в "Продвинутый Iptables". Или во что-нибудь такое.. А то тут написано про pppoe хитрющий. У русскоязычных более распространено либо модемы, тоесть просто ppp, либо локалки, где все немного проще..

--Delph 07:08, 9 Ноя 2004 (GMT)

Содержание

[править] раздел определений

я так полагаю, что для того что бы народ понимал о чем речь мы будет создавать определения, где по русски будут описаны термины, что это такое и как это работает, потому как ppp - eth - pppoe и прочее по сути дела только вариант физической передачи сигнала, а на логическом уровне просто устройство передачи данных между компьютером и проводом.

в этой статье в дальнейшем добавим какими именами обозначается разные девайсы применительно к текущим реалиям и все будет понятно

[править] А я бы добавил вот такое

Не в дополнение к этой статье, я как материал для "ваще новичков" (каковым являюсь): имеем два интефейса eth0 - смотрит в сеть провайдера eth1 - смотрит в локальную сеть

# Определяем политики
iptables -P INPUT DROP
# разрешаем "внутриутробный"(loopback) трафик
iptables -A INPUT -i lo -j ACCEPT
# разрешаем icmp type 8
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# на сетевом интерфейсе локальной сети молчком "не пущаем"
# tcp -порты со 137 по 139
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 137:139 -j DROP
# udp -порты со 137 по 139
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p udp --dport 137:139 -j DROP
# tcp -порт 445
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 445 -j DROP
# tcp -порт 1900
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 1900 -j DROP
# а остальное - "на здоровье"!
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -j ACCEPT
# на сетевом интерфейсе сети провайдера "не пущаем" кроме того, что сами попросили
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset
# на сетевом интерфейсе сети провайдера "притворяемся" "наш_номер_IP_у_провайдера"
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to "наш_номер_IP_у_провайдера"

[править] Попытаюсь сделать статью легче

Пожалуй попытаюсь сделать статью полегче...для новичков.Рассмотрим некоторые чумовые модули(owner,multiport,random и прочее) и сократим количество листингов.А то я нормально знаю iptables,но в этих листингах теряю сознание и падаю :)
GTBe@r

[править] Это перевод?

Если это перевод (ну, по крайней мере, начиналась как перевод), то неплохо было бы добавить ссылку на английскую статью в конце -- Nelud 18:16, 6 октября 2005 (GMT)

Линк на оригинальную статью указан слева под навигационными блоками, там где сказано "на других языках" ΩDmitri 02:52, 7 октября 2005 (GMT)

[править] `which iptables` ?

может в первом и последующих листингах $IPTABLES, $IPT, etc. присваивать `which iptables`, а не '/sbin/iptables'? 8)

нет, это совершенно неправильно. Абисняю: команда which - это утилита чисто для удобства пользователя. Она просто показывает полный путь к команде, НО к той команде, которая и так запускается без указания пути! Т.е. присвоить значение `which iptables` - это всё равно, что присвоить прсто iptables -- Nelud 06:34, 11 августа 2006 (UTC)

[править] не понятно про /etc/init.d/iptables

Что-то мне совершенно непонятно как соотносятся получвшийся скрипт с сервисом /etc/init.d/iptables. Вот мы написали скрипт, а дальше что с ним делать? Запихать его в /etc/conf.d/local.start? Или в /var/lib/iptables/rules-save? Или запустить а потом сделать /etc/conf.d/iptables save? Как будет наиболее правильно? -- Nelud 05:44, 11 августа 2006 (UTC)

В порядке продолжения обсуждения данного вопроса. Я не нашёл как правильно, но я понял, как не правильно:
  1. Просто сделать /etc/conf.d/iptables save нельзя. Потому что, во-первых, в скрипте задаются переменные sysctl. А во вторых, мы теряем гибкость - ведь в нашем скрипте IP-адреса и маски сетей ВЫЧИСЛЯЮТСЯ, а при сохранении правил через /etc/conf.d/iptables save они запишутся жёстко.
  2. Записать скрипт в /var/lib/iptables/rules-save тоже нельзя. Т.к. в этом файле не может содержаться шелл-скрипт, а только правила iptables.
  3. Записать скрипт в /etc/conf.d/local.start в принципе можно, но не всё так просто. Посмотрите как устроен /etc/conf.d/iptables: в нём содержится строчка "before net" - и это правильно! Мы должны запускать фильтр до поднятия сетевых интерфейсов. А local.start запускается после их поднятия, и следовательно, мы будем некоторое время беззащитны. Но даже если мы заставим запускаться скрипт до net-сервисов, то он не будет работать! Ведь для правильного вычисления всех переменных в нём (IP-адресов и т.д.) требуется, чтобы интерфейсы уже были запущены.
И всё таки как запускать фильтр правильно? Вот что я думаю по этому поводу. Конечно же его надо разбить на две части. Первая часть будет запускаться до поднятия сетевых интерфейсов и здесь будут очищаться все цепочки и задаваться запретительные политики. Вторая - после. Причём оформить получившиеся две части надо в виде /etc/init.d/-скриптов. Как пример можно посмотреть en:HOWTO_Iptables_for_newbies#Another_iptables_startup_script
-- Nelud 05:47, 17 августа 2006 (UTC)

[править] всё просто и гениально

На самом деле скрипт приведён для примера. Я почитав эту статью понял чтои как, а потом вбил руками все цепочки, позвал /etc/init.d/iptables save а все нужны зихера с sysctl прописал в /etc/sysctl.conf. ИМХО это самый правильный вариант.

--MooSE 06:54, 17 августа 2006 (UTC)


[править] народ, я что-то пропустил?

кто так исковеркал этот текст? зачем было трогать то, что было уже переведено? там же соблюдался единый стиль изложения, а сейчас десяток человек повставляло по одной фразе и в результате винегрет.

вот блин.... вся работа насмарку...

Fank 06:43, 27 октября 2006 (UTC)

[править] мдааа, для телепатов переводите чтоль?

Модуль ip_conntrack необходим для "statefull" фильтрования, то есть для отслеживания соединений. - какого фильтрования?, каких соединений?, куда соединений?, какого отслеживания? ничего не понятно.

внутренний IP сетевого интерфейса сервера, что и логично - досвиданИя русскАя язЫка!

IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE - что эти строчки обозначают? вы пытаетесь объяснять или учите людей копировать/вставить?

Babaz 22:16, 27 октября 2006 (UTC)

[править] Ошибки...

Я так понимаю, статьи такого рода продвинутые пользователи уже не читают, они рассчитаны на новичков. Поэтому можно попытаться задать глупый вопрос :) В статье говорится что правила записываем в /var/lib/iptables/rules-save, а в обсуждениях уже оказывается что туда писать нельзя :) Ну это ладно... Вопрос следующий - после перезапуска iptables ругается что была ошибка сохранения, rules-save стал нулевой длины. Куда это все делось? И как исправить ошибку, если даже переустановка iptables не помогает? И зачем писать в rule-save, если команда iptables save запомнит конфигурацию, которую только что "натыкали" независимо от того, каким скриптом это выполнялось?

Личные инструменты