Лучше ли устанавливать -j REJECT или -j DROP в iptables?

Пример правил iptables для вики-файлов archlinux:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable COMMIT # Completed on Sun Mar 17 14:21:12 2013 

Несколько дней назад мой друг спросил меня, почему существует REJECT в последних трех правилах. Он сказал мне, что вместо этого должен быть DROP , и он упомянул что-то о лучшей безопасности в случае DROP .

Итак, у меня есть два вопроса:

  1. Что делают три правила?

  2. Разве это имеет значение, когда я кладу туда DROP на место REJECT --reject-with ? Если да, какая разница?

One Solution collect form web for “Лучше ли устанавливать -j REJECT или -j DROP в iptables?”

Что делают три правила?

Эти 3 правила кажутся довольно понятными:

  1. Отклонить входящие UDP-пакеты с сообщением ICMP «Недоступный порт»
  2. Отклонить входящие TCP-пакеты с «tcp reset»
  3. Отклонить входящие пакеты (любого другого протокола) с сообщением ICMP «протокол недоступен»

Если вы ищете более подробную информацию (о UDP / TCP-пакетах, ICMP), вам нужно вникнуть в сетевые документы и, возможно, и man iptables .

Разве это имеет значение, когда я кладу туда DROP на место REJECT –reject-with? Если да, может кто-то объяснить мне разницу, я буду очень благодарен.

Это имеет значение. И, вопреки распространенному мнению, DROP не обеспечивает лучшую безопасность, чем REJECT . Это неудобно для законных пользователей, и это не защищает от вредоносных. В этом сообщении подробно объясняются рассуждения:

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

Общей причиной использования DROP, а не REJECT, является отказ от предоставления информации о том, какие порты открыты, однако отбрасывание пакетов дает точно столько же информации, сколько и отказ.

С помощью REJECT вы выполняете сканирование и классифицируете результаты в «установлено соединение» и «отклонено соединение».

С помощью DROP вы классифицируете результаты в «установленное соединение» и «время ожидания соединения».

Самый тривиальный сканер будет использовать вызов «connect» операционной системы и будет ждать завершения одной попытки подключения до начала следующего. Этот тип сканера значительно замедлится, если вы упадете пакеты. Однако, если атака устанавливает тайм-аут в 5 секунд на попытку подключения, можно сканировать каждый зарезервированный порт (1..1023) на машине всего за 1,5 часа. Сканирование всегда автоматизировано, и злоумышленнику все равно, что результат не будет немедленным.

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

ВЫВОД

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

  • iptraf показывает трафик на UDP / 443, почему?
  • Отключить порт неисправной программы
  • Ответы от многоадресной рассылки 255.255.255.255
  • Массовая блокировка IP-адресов
  • Недоступный пункт ICMP
  • Какие порты необходимы и, как правило, должны быть разрешены в системе Linux?
  • Tcpdump - подсчет исходящих и входящих пакетов UDP
  • TPROXY для перенаправления UDP на произвольные порты
  • как перенаправить весь UDP-трафик на VPN-клиент VPN с помощью UFW
  • TCP-потоки, сосуществующие с UDP при использовании SFQ (стохастическая честная очередь)
  • Является ли какое-либо решение для создания интерактивного TCP / UDP-сервера под Linux?
  • Interesting Posts

    8G RAM и SSD – насколько большой должен быть обмен?

    Как искать видеофайлы на Ubuntu?

    Есть ли команда Linux, которая ничего не делает, но никогда не выходит?

    Рекомендации по хорошим решениям MTA / groupware?

    Эквивалент Unix / Linux для проверки обхода байпаса Windows

    ssh немедленно завершается сообщением Terminated

    Что делает «текст» точно в Bash? Может ли он использоваться в Zsh?

    проблема с glib при установке Midnight Commander на centOS

    Почему мой веб-браузер всегда загружает страницу .php, а не показывает его?

    как использовать xrandr для зеркального отображения только части моего главного экрана?

    Анализ HTTP-ответа с помощью оболочки

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

    Ввод сетевого интерфейса в беспорядочный режим (не режим монитора)

    iptables, как блокировать клиентов друг друга

    Пакеты, необходимые для работы звука

    Linux и Unix - лучшая ОС в мире.