Понимание/оптимизация iptables вывод

  • Postfixadmin
  • Spamassassin
  • Голубятня
2
задан 13 February 2011 в 18:28
5 ответов

Я, вероятно, переместился бы RELATED,ESTABLISHED ... ACCEPT правило о ВХОДНОЙ цепочке к очень главной из той цепочки. Если большинство Ваших соединений не является чрезвычайно недолгим, я держал бы пари, что подавляющее большинство входящих пакетов будет частью соединения и должно быть ПРИНЯТО тем правилом.

Для получения лучшего ощущения того, где пакеты приземляются в ruleset можно выполнить это:

iptables -t filter -L -n -v

и обратите особое внимание на количества байта и пакет. Вы, вероятно, заметите, что правило, которое я упомянул выше, требовало большинства пакетов довольно большим полем. Если какие-либо другие правила соответствовали значительному количеству пакетов, Вы могли бы оптимизировать свой ruleset путем продвижения их перед менее "популярными" правилами.

Наконец, я замечаю, что Ваша ВЫХОДНАЯ цепочка имеет, ПРИНИМАЮТ политику. Это делает ПРИНЯТЬ правила о ВЫХОДНОЙ цепочке избыточными, и они должны быть удалены. Точно так же, так как Ваша ВХОДНАЯ политика цепочки является ОТБРАСЫВАНИЕМ, заключительное правило ОТБРАСЫВАНИЯ о ВХОДНОЙ цепочке является ненужным.

4
ответ дан 3 December 2019 в 10:20

В общем расположении правил так, чтобы Вы вышли из брандмауэра быстро, хорошая вещь. Если большая часть трафика к портам 80, и 3306 затем они должны, как Вы предполагаете, выше список для Входной таблицы.

Iptables работает над таблицами. Вы имеете 3, ВВОДИТЕ, ПЕРЕДАЕТЕ и ПРОИЗВОДИТЕ. Команда DROP находится во Входной таблице. Правила после ОТБРАСЫВАНИЯ для ВЫХОДНОЙ цепочки, таким образом, они будут обработаны для исходящих пакетов только. Они могли быть удалены, поскольку политика в отношении Таблицы выходных данных состоит в том, чтобы ПРИНЯТЬ, и они, ПРИНИМАЮТ правила.

0
ответ дан 3 December 2019 в 10:20
  1. Почему -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT не разделенный на НОВЫЙ / РЭЛ, EST как другие?
  2. Много из --state NEW избыточно, почему создание ЦП решает, было ли это NEW каждый раз (?). Необходимо создать дополнительную цепочку 'INPUT.NEW' и единственное использование -A INPUT -m state --state NEW -j INPUT.NEW передавать пакеты по каналу в него.
  3. INPUT.NEW затем может быть заполнен со сравнениями порта. Количество строк там может быть сокращено, если Вы использовали бы -m multiport.
  4. Принятие всего ICMP небезопасно, так как это означает не только эхо-запросы. Выберите только те ICMPs, которые необходимо хорошо позволить (это может быть как некоторые как просто эхо-запросы). И помните, что законный другой про-Тосес (TCP для, например) определенный ICMPs был бы обработан с RELATED так или иначе.
  5. Существует мало смысла (если таковые имеются) разрешение ВЫВОДА быть только NEW,RELATED,ESTABLISHED. Разрешите ему подразделение w/o.
0
ответ дан 3 December 2019 в 10:20

Хорошие взгляды. Я отбросил бы принятие на порте 20, поскольку это должно быть обработано как связанный пакет к соединению FTP. Я обычно помещал порт 123 как первая проверка для уменьшения задержки для NTP.

Поскольку ВЫХОДНАЯ цепочка только ОТБРАСЫВАЕТ или ОТКЛОНЯЕТ правила, имел бы смысл. Существующие выходные правила ничего не делают кроме дубликата политика.

Можно хотеть посмотреть счетчики и скорректировать упорядочивание правил соответственно.

Рассмотрите использование различных цепочек для новых соединений в каждом интерфейсе.

Полагайте, что вход не принял пакеты.

Используя инструмент как Shorewall для создания брандмауэра мог бы помочь получить все на месте.

0
ответ дан 3 December 2019 в 10:20

Вместо того, чтобы использовать одно явное правило на протокол/комбинацию портов, я настоятельно рекомендовал бы использовать ipset.

Сделайте 2 набора, один каждый для TCP и UDP:

ipset -N Allowed_TCP_Ports portmap --from 0 --to 65535
ipset -N Allowed_UDP_Ports portmap --from 0 --to 65535

Заполните каждый набор:

for p in $TCP_PORTS; do ipset -A Allowed_TCP_Ports; done
for p in $UDP_PORTS; do ipset -A Allowed_UDP_Ports; done

Можно затем упростить связанные с портом правила во всего 2 правила:

-A INPUT -p tcp -m set --match-set Allowed_TCP_Ports dst -j ACCEPT 
-A INPUT -p udp -m set --match-set Allowed_UDP_Ports dst -j ACCEPT 

Примечание: Я удаляю -m state --state NEW соответствия. Я имею в виду, что для? После -m state --state RELATED,ESTABLISHED правило, все пакеты являются или НОВЫМИ или НЕДОПУСТИМЫМИ.

Примечание 2: Ubuntu ipset пакет испорчен; необходимо загрузить и установить из источника. Я объяснил как в моем блоге. Можно считать его здесь: http://pepoluan.posterous.com/powertip-howto-install-ipset-on-ubuntu.

0
ответ дан 3 December 2019 в 10:20

Теги

Похожие вопросы