Можно ли подделать успешное TCP-соединение с помощью iptables?

Большинство доменов любого значимого размера имеют машину, предназначенную исключительно для почты, поэтому mail.example.com.

Мне также нужно создать соответствующий CNAME?

Нет, вам нужна запись A для mail.main.dom. Записи MX всегда должны указывать на A. Распространенной ошибкой является указание записи MX на CNAME.

С синтаксисом Bind:

main.dom.        IN  MX     10  mail.main.dom.
mail.main.dom.   IN  A          1.2.3.4

Или, если вы хотите обслуживать все на одной машине:

main.dom.        IN  A          1.2.3.4
main.dom.        IN  MX     10  main.dom.
www.main.dom.    IN  CNAME      main.dom.

Дополнительные примечания:

  • Плохая идея устанавливать приоритет MX равным 1. Если в какой-то момент вам понадобится экстренная при перенаправлении почты вы можете добавить MX с более высоким приоритетом, скажем, 5.
  • По той же причине вы не должны устанавливать слишком высокий TTL для MX. Что-то вроде 3600 достаточно велико, чтобы не забить ваш DNS, но достаточно мало, чтобы вы могли вносить изменения в экстренной ситуации (изменения должны распространяться менее чем за час).
  • Приоритет 0 работает, но по техническим причинам его не использовать.
1
20.07.2018, 00:28
2 ответа

send a syn back but forget the connection?

Это означает генерировать SYN/ACK, но не отслеживать соединение.

Не совсем так.


Первым делом :Почему?

Если SYN относится к закрытому порту, то либо:

Если SYN направлен на открытый порт, то либо:

  • разрешить серверу (службе )обрабатывать запрос по своему усмотрению.

  • Помогите серверу с SYNPROXY.

    Предотвращение SYN-флуда с помощью SYNPROXY

    Который на самом деле пытается защитить сервер от SYN -ACK Flood DDoS-атаки. Это не то же самое, о чем вы спрашиваете, и быть не может. Не может быть двух объектов (server и iptables ), одновременно отвечающих с помощью SYN/ACK на один и тот же пакет. Это либо одно, либо другое.

Но SYNPROXY умен. Как это работает (и еще немного):

При использовании SYNPROXY клиенты прозрачно подключаются к SYNPROXY. Таким образом, 3 -способа рукопожатия TCP сначала происходят между клиентом и SYNPROXY :

.
  • Клиенты отправляют TCP SYN на сервер A

  • На брандмауэре,когда этот пакет приходит, он помечается как UNTRACKED

  • НЕОТСЛЕЖИВАЕМЫЙ TCP SYN-пакет затем передается SYNPROXY

  • SYNPROXY получает это и отвечает (как сервер A )с TCP SYN+ACK (UNTRACKED)

  • Клиент отвечает TCP ACK (, отмеченным как INVALID или UNTRACKED в iptables ), который также передается SYNPROXY

  • Как только клиент подключается к SYNPROXY, SYNPROXY автоматически инициирует трехстороннее -TCP-подтверждение с реальным сервером, подделывая пакет SYN, чтобы реальный сервер увидел, что первоначальный клиент пытается подключиться:

  • SYNPROXY отправляет TCP SYN на реальный сервер A. Это НОВОЕ соединение в iptables, которое происходит в цепочке OUTPUT. Исходный IP-адрес пакета — это IP-адрес клиента

  • .
  • Реальный сервер А отвечает SYN+ACK клиенту

  • SYNPROXY получает это и отвечает серверу ACK. Теперь соединение помечено как УСТАНОВЛЕННОЕ

  • .
  • Как только соединение установлено, SYNPROXY покидает поток трафика между клиентом и сервером

Таким образом, SYNPROXY можно использовать для любого вида TCP-трафика. Его можно использовать как для незашифрованного, так и для зашифрованного трафика, так как он не мешает самому контенту.

Сказав все это...

Вы не можете установить SYNPROXY на порт без сервера (это не сработает ).

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

Python -Scapy -Показать все ваши порты как открытые

Связанные:

Syn cookies типа не работают

2
27.01.2020, 23:14

Можно сделать несколько не очень приятных вещей; может быть вставлен пакет RST, который, если задействованные хосты не имеют необычных и настраиваемых конфигураций брандмауэра, RST приведет к закрытию соединения. Другим методом было бы принять соединение, но затем каким-то образом удалить запись о состоянии; это может выглядеть примерно так

...
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --syn -m tcp --dport 22 -j ACCEPT
...

возможно также с ведением журнала (для работы через сканер журналов, такой какsec.pl)или какой-либо другой модуль, который с установленным conntrack-toolsзапускает команду, аналогичную

conntrack -D -s 192.0.2.42

после того, как 192.0.2.42 подключился через ssh, удалить запись в таблице состояний для этого IP.

2
27.01.2020, 23:14

Теги

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