Динамическое открытие порта в iptables

Материал из Викиреальностя
Перейти к: навигация, поиск

Динамическое открытие порта в iptables — механизм защиты порта, использующий файервол iptables. Заключается в том, что для того, чтобы соединиться на значимый порт, например порт для Secure Shell, необходимо сперва сделать пустой запрос на другой порт — при этом доступ разрешается только для того IP-адреса, который дал запрос: таким образом, для взлома надо знать не только логин, пароль и порт, но и порт, который используется для открытия.

[править] Скрипт

   #!/usr/bin/bash
   ipt=`which iptables`
   port=`cat /etc/ssh/sshd_config | grep Port | sed -e 's/^Port //'`
 
   $ipt -N sshp
   $ipt -A sshp -m state --state NEW -m recent --rcheck --name SSH -j ACCEPT
   $ipt -A sshp -m state --state ESTABLISHED, RELATED -j ACCEPT
   $ipt -A sshp -j DROP
 
   $ipt -A INPUT -m state --state NEW -m tcp -p tcp --dport 4815 -m recent --name SSH --set -j DROP
   $ipt -A INPUT -m state --state NEW -m tcp -p tcp --dport 16234 -m recent --name SSH --remove -j DROP
 
   $ipt -A INPUT -p tcp --dport $port -j sshp

Данный скрипт добавляет несколько правил, которые позволяют соединяться на порт SSH лишь после того, как клиент подолбится в порт 4815. Если соединение больше не нужно (например, произведено через публичный компьютер или прокси), отправка запроса на порт 16234 удалят IP-адреса из белого списка. Наличие listening приложения на портах не обязательно.

[править] См. также

Динамическое открытие порта в iptables относится к темам: