[Iptables] NF_CONNTRACK

Добрый день всем. Насколько я понимаю то соединение по протоколу TCP устанавливается обменом 3 пакетов SYN -> ACK -> ACK …. -> FIN после чего соединение становится ESTABLISHED. В Iptables есть модуль который отслеживает состояния соединений и на основе правил принимается решение о дальнейшей судьбе пакета.
Вопрос собственно состоит в том достаточно ли для защиты от посягательств извне -A INPUT -ppp0 -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT для tcp соединений? Может ли каким нибудь образом TCP соединение стать ESTABLISHED если первый пакет исходит не от меня а из интернетов?
Хочу применить данную политику дабы не писать мильён правил. Так по моему гораздо проще, все соединения которые инициализируются мной - пропускаются (-j ACCEPT), все что пришло извне дропается за исключением нескольких конкретно прописанных правил.
Для UDP :
-A INPUT -i ppp0 -p udp –some-sport –some-dport -j ACCEPT
….
-A INPUT -i ppp0 -p udp -j DROP
Я на верном пути? Гуру подскажите.
http://gazette.linux.ru.net/rus/article … orial.html
крайне рекомендую распечатать. отличное руководство.
по сабжу: немного непонятно. давай подробнее, что нужно сделать? что извне пускать, что нет. и где ты находишься? немного сбивает с толку
если первый пакет исходит не от меня а из интернетов
если ты в локалке - зачем тогда
-i ppp0 -p udp -i ppp0 -p udp -j ACCEPT
и почему два раза :)
cac2s
http://gazette.linux.ru.net/rus/articles/iptables-tutorial.html
крайне рекомендую распечатать. отличное руководство.
по сабжу: немного непонятно. давай подробнее, что нужно сделать? что извне пускать, что нет. и где ты находишься? немного сбивает с толку


А существующие правила я с помощью libastral.so сгенерил? Читал я туториал. Я просто хотел удостовериться.
Одна сетевуха с интерфейсами ppp0 (ADSL) и собственно eth0. Нужно все выпускать и аццептить соединения которые инициалиризовались моей машиной и которые уходят через ppp0 в интернеты. А пускать нужно только на 80 порт и еще несколько для которых прописаны правила отдельные. Тобишь цель создать политику для TCP соединений чтобы извне пускать только то что открыто, все остальное дропать. Инициализированные мной соединения будут иметь статус ESTABLISHED и будут аццептится. Ведь так гораздо проще чем писать правило на каждое приложение и их порты.


Kernel_panic
если первый пакет исходит не от меня а из интернетов

cac2s
если ты в локалке - зачем тогда
-i ppp0 -p udp -i ppp0 -p udp -j ACCEPT
и почему два раза :)
Два раза потому что как я понял порядок записи правил очень важен.
Открываем нужный порт по UDP, остальное дропаем, так как CONNTRACK естественно не может работать с UDP и для него свои политики.
Вторым правилом все остальное по UDP дропаем. Если поменять местами, то iptables заблокирует весь UDP траффик и следующее правило не будет обрабатвываться. Возможно я ошибаюсь.
kernel_panic
А существующие правила я с помощью libastral.so сгенерил? Читал я туториал.
либо читал невнимательно/“для галочки”, либо лень-матушка переборола, ибо все просто:
# политики по умолчанию (INPUT, FORWARD - запрещено всё, кроме того, что разрешено)
iptables -P INPUT DROP
iptables -P FORWARD DROP
# разрешаем весь исходящий трафик
iptables -P OUTPUT ACCEPT
# пускаем входящие пакеты установленных и связанных соединий
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# разрешаем входящие пакеты для 127.0.0.1
iptables -A INPUT -i lo -j ACCEPT
# пускаем http
iptables -A INPUT -p tcp -i ppp0 --dport 80 -j ACCEPT
...
# и т.д.

kernel_panic
Два раза потому что как я понял порядок записи правил очень важен.
Открываем нужный порт по UDP, остальное дропаем, так как CONNTRACK естественно не может работать с UDP и для него свои политики.
Вторым правилом все остальное по UDP дропаем. Если поменять местами, то iptables заблокирует весь UDP траффик и следующее правило не будет обрабатвываться. Возможно я ошибаюсь.
я имел ввиду, конкретно в строке -i ppp0 -p udp -i ppp0 -p udp -j ACCEPT дважды указываешь интерфейс и протокол
Прочитай еще раз первый пост. Я не спрашивал как это сделать.
Да, и state это гумно мамонта.
P.S. про повторяющиеся интерфейсы конечно же опечатка
kernel_panic
Прочитай еще раз первый пост. Я не спрашивал как это сделать.
Да, и state это гумно мамонта.
P.S. про повторяющиеся интерфейсы конечно же опечатка
какие мы нервные! :) для начала глаза открой шире:
kernel_panic
Нужно все выпускать и аццептить соединения которые инициалиризовались моей машиной и которые уходят через ppp0 в интернеты.
# политики по умолчанию (INPUT, FORWARD - запрещено всё, кроме того, что разрешено)
iptables -P INPUT DROP
iptables -P FORWARD DROP
# разрешаем весь исходящий трафик
iptables -P OUTPUT ACCEPT
kernel_panic
Тобишь цель создать политику для TCP соединений чтобы извне пускать только то что открыто, все остальное дропать. А пускать нужно только на 80 порт и еще несколько для которых прописаны правила отдельные.
# пускаем http
iptables -A INPUT -p tcp -i ppp0 --dport 80 -j ACCEPT
kernel_panic
Инициализированные мной соединения будут иметь статус ESTABLISHED и будут аццептится.
как iptables должен тебя “узнавать”? по ip/mac/etc.? или, может быть, ты имеешь ввиду доступ к 80-му порту с localhost? никто угадывать не будет.
повторю: либо прочти мануал и сам сделай, либо перестань выкукоживаться и нормально сформулируй задачу с _полным_ описанием сети, и чётко сформулированными требованиями.

з.ы.:
kernel_panic
Да, и state это гумно мамонта.
необоснованный выхлоп. не более
Никогда я не умел нормально объяснять….
 
Зарегистрироваться или войдите чтобы оставить сообщение.