Путаница с правилами iptables, nat PREROUTING

. Я изо всех сил пытаюсь понять, что именно делает этот набор правил iptables.

Порт 22 получает пакет И порт 2222 также получает его копию? Или пакет перенаправляется на порт 2222, пропуская порт 22? Может кто-нибудь объяснить мне, что делает этот набор правил в деталях? заранее спасибо!

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 2222
0
задан 11 November 2021 в 20:33
1 ответ

№Только локальный процесс, прослушивающий порт 2222, получит пакет. Если он ответит, произойдет обратная трансляция, и исходящий пакет responseбудет отправлен через порт 22.

Четвертое правило заставит любыевстретившиеся пакеты, предназначенные для порта 22, перенаправлять на ваш локальный порт 2222, даже если они не предназначались. быть для этой машины. Поскольку у вас нет других критериев соответствия, это будет так для всех, кроме соединений, исходящих с этой машины.

По сути, это перехватывает любой сквозной трафик SSH. Если кто-то настроит эту систему в качестве своего шлюза и попытается подключиться к любой службе SSH за пределами локальной сети, вместо этого он подключится к вашей службе, работающей на порту 2222. Если они уже установили доверие (имеют реальный ключ сервера в файле known_hostsили он правильно опубликован с помощью DNSSEC), их попытка будет отклонена их клиентом с надлежащим предупреждением о продолжающемся манипулировании. атака посередине (на что, по сути, и похоже это правило).

Пожалуйста, обратитесь к диаграмме потока пакетов Netfilter.

Кстати, вам не нужновключать переадресацию ip в этом случае, потому что пакет не нужно пересылать (даже если его нужно пересылать, если не было правило REDIRECT). А с цепочкой FORWARDничего делать не нужно, потому что она не проходима. Таким образом, первая и вторая команды избыточны.После таблицы natпакет перенаправляется на локальную машину; когда принимается решение о маршрутизации, пакет отправляется в цепочку INPUT. Здесь вы можете управлять этим пакетом, и пакет уже будет переведен на порт 2222, поэтому правило в вашей третьей команде верное.

2
ответ дан 12 November 2021 в 05:29

Теги

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