Я настроил sshd моего сервера для прослушивания нестандартного порта 42.
Однако на работе я нахожусь за брандмауэром / прокси-сервером, который разрешает исходящие подключения только к портам 21, 22, 80 и 443. Следовательно, я не могу подключиться к моему серверу по ssh, что плохо. Я не хочу возвращать sshd на 22 порт.
Идея такова: на моем сервере локально перенаправить порт 22 на порт 42 если исходный IP-адрес совпадает с внешним IP-адресом моей рабочей сети. Для ясности предположим, что IP-адрес моего сервера - 169.1.1.1 (на eth1), а мой рабочий внешний IP - 169.250.250.250. Для всех IP-адресов, отличных от 169.250.250.250, мой сервер должен ответить ожидаемым «соединением отказано», как и для порта, который не прослушивает.
Я новичок в iptables. Я вкратце просмотрел длинное руководство по iptables и следующие вопросы:
Однако эти вопросы относятся к более сложным сценариям с несколькими хостами, и мне неясно, какие таблицы и цепочки я должен использовать для локальной переадресации портов, и должны ли я иметь 2 правила (для пакетов «вопрос» и «ответ». ) или только 1 правило для пакетов «вопрос».
Пока что я включил пересылку только через sysctl. Я начну тестировать решения завтра и буду признателен за указатели или, возможно, конкретные примеры для реализации моего простого сценария.
Правильный ли проект решения ниже?
iptables -A INPUT [-m state] [-i eth1] --source 169.250.250.250 -p tcp
--destination 169.1.1.1:42 --dport 22 --state NEW,ESTABLISHED,RELATED
-j ACCEPT
Следует ли мне использовать mangle
стол вместо filter
? И / или FORWARD
цепь вместо INPUT
?
Чтобы пересылать / перенаправлять вещи, вы должны отредактировать таблицу NAT.
Такое правило, вероятно, ближе всего к тому, что вам нужно.
/sbin/iptables --table nat --append PREROUTING --protocol tcp \
--source 169.250.250.250 --dport 22 \
--jump REDIRECT --to-ports 42
Было бы намного проще и, вероятно, лучше просто оставить SSH на стандартном порту и должным образом защитить его. Использование альтернативного порта замедлит мотивированного злоумышленника только на пару секунд. Настройте систему предотвращения вторжений, такую как denyhosts / fail2ban, и отключите аутентификацию на основе пароля. Или рассмотрим входящие ssh-соединения с ограничением скорости.
Видеть:
Я бы использовал Shorewall для управления ip-таблицами. Он устанавливает достойный базовый брандмауэр, и делать то, что вы хотите, очень просто. Добавьте правило в / etc / shorewall / rules, например:
Сеть DNAT: 169.250.250.250 расположение: 169.250.250.250 tcp 42 22
Как и другие, я не уверен, почему вы запускаете sshd на другом порту. Если это интернет-порт, вы можете захотеть посмотреть на стук порта, чтобы он оставался закрытым, если вы сначала не нажмете другой порт. Shorewall справляется с этим просто.