Назад | Перейти на главную страницу

Используйте iptables для пересылки ssh

Я нашел несколько руководств о том, как это сделать, но ни один из них не работал: /

Моя установка:

Файерволл - доступен из Интернета - eth0: xxx.xxx.xxx.xxx (общедоступный IP-адрес) - eth1: 192.168.1.1

СЕРВЕР - доступен из ФЕЙЕРВАЛЛА - eth0: 192.168.1.5

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

ping и ssh от ФЕЙЕРВАЛА на СЕРВЕР работает. ping и ssh с СЕРВЕРА на ФЕЙЕРВЕР также работают (хотя вход в систему разрешен только с открытым ключом, а СЕРВЕР не разрешен ...)

ping и ssh отовсюду до БЕЙДВОЕЛА работает.

Переадресация IP включена:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Публикация моих iptables-rules не имеет большого смысла, потому что ни одно из правил не сработало (использовалось PREROUTING, POSTROUTING, FORWARD ...) и нет других правил.

Да, мой брандмауэр ничего не блокирует. Но это не о безопасности (пока).

Я перепробовал все, что нашел на первых страницах: https://www.google.de/search?q=iptables+forward+ssh

Какие-либо предложения?

С уважением, Йенс

ОБНОВИТЬ Вот результат tcpdump -n -i any после использования команды Khaled iptables:

15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0

Я бы предположил, что во второй строке будет что-то вроде ... IP 192.168.1.1.45678> 192.168.1.5.22 ...

Эти две строки повторяются несколько раз, поскольку мой ssh-клиент несколько раз пытается подключиться. Но ответа нет.

2-е обновление Маршруты сервера (192.168.1.5): Вот. Я только что добавил маршрут

public-firewall-ip  255.255.255.255      192.168.1.1     192.168.1.5       1

но это не имеет никакого эффекта. На сервере работает Win XP с установленным cygwin sshd. Я не упоминал об этом раньше, потому что ssh от брандмауэра на сервер работает нормально. Но когда дело доходит до маршрутизации, я чувствую, что Windows несколько ограничена.

Сейчас я устанавливаю Wireshark на сервер и через несколько минут вставлю результат.

Трассировка на сервере Трассировка на сервере показывает приходящий SYN на порт 22 и уходящий SYN, ACK на мой домашний IP. Думаю, это ошибка. ACK должен быть отправлен на брандмауэр, а не замаскирован, потому что в исходящем пакете IP / порт источника теперь 192.168.1.5:22. Ни в коем случае это не достигнет моего домашнего ноутбука через NAT ... или есть способ?

Если вы разрешаете трафику проходить через брандмауэр и у вас включена переадресация IP, вам достаточно одного правила NAT для пересылки трафика SSH на порт 2222. Такое должно работать:

$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22

Обновить:

Сетевой сниффер - ваш друг при отладке таких проблем. Вы можете запустить tcpdump на машине с брандмауэром и посмотреть, сможете ли вы поймать приходящий запрос, и тот же запрос должен покинуть машину с брандмауэром.