Lonely Dreamer (sanmai) wrote,
Lonely Dreamer
sanmai

redirect port with iptables

( Нештатное применение TTL )
Когда нужно выйти по SSH из сети, в которой закрыто всё кроме, например, 443 и 80 портов, легко переадресовать любой из этих портов на 22 для конкретной сети или хоста:
iptables -t nat -A PREROUTING -p tcp -s firewall.example.com \
--dport 80 -j REDIRECT --to-port 22
Но у этого способа есть существенный недостаток. Администратор закрытой сети может заинтересоваться подозрительным трафиком и зайти на сервер поинтересоваться. Там он увидит знакомое приглашение:
SSH-2.0-OpenSSH_4.7p1
И закроет наш выход в мир, в чем мы совершенно не заинтересованы.

Но выход есть. Стоит нам на клиенте увеличить TTL для всех пакетов в направлении нашего сервера:
iptables -t mangle -A POSTROUTING -p tcp -d sshserver.example.net -j TTL --ttl-set 234
А на сервере настроить переадресацию на 22 порт только для пакетов с TTL, заведомо большим типичного, например, 150:
iptables -t nat -A PREROUTING -p tcp -s firewall.example.com \
--dport 80 -m ttl --ttl-gt 150 -j REDIRECT --to-port 22
Мы получаем возможность туннелировать нужный нам трафик по шифрованному каналу, а администратор, проявив любопытство, по тому же самому порту на том же самом сервере увидит какой-нибудь совершенно безобидный сайт.
TTL также можно завысить через sysctl:
echo 234 > /proc/sys/net/ipv4/ip_default_ttl
Или добавив в /etc/sysctl.conf строчку:
net.ipv4.ip_default_ttl = 234
Наконец, можно изменить значение TTL по-умолчанию в исходниках ядра.
Tags: iptables, linux, ssh, useful
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments