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

Настроить стук порта с iptables на один порт?

Я изучал возможность использования порта как способ скрыть / защитить SSHD. Я знаю о knockd и других реализациях, но мне нужно что-то портативное и простое. Итак, я решил, что iptables с последним модулем достаточно хорош.

Я уже отключил вход на основе пароля и мне нужен открытый / закрытый ключ. Я просто хочу, чтобы это выглядело так, как будто SSHD отсутствует на сервере, даже для сканера портов.

Я видел много примеров правил iptables и не совсем понимаю, как они должны работать.

Я хочу постучать по одному непонятному порту, чтобы открыть порт 22. В то же время я хочу на некоторое время отключить стук по портам, если к ним осуществляется доступ. Так что, если бы мой порт для детонации был 123, постукивание по этому порту открыло бы порт 22 на 5 секунд только для молотка. Но если постучать по порту 122 или 124, это отключит стук порта для молотка на 15 минут (так что даже если они постучат по 123, в этот период времени ничего не произойдет).

Какие правила iptables позволят добиться этого?

Редактировать: Добавлю, что использую CentOS 5.5. Можно использовать модули iptable.

Все эти правила имеют iptables -A INPUT перед ними.

# if port 122 or 124 is touched add to block list
-m state --state NEW -m tcp -p tcp -–dport 122 -m recent --set --name blocked
-m state --state NEW -m tcp -p tcp -–dport 124 -m recent --set --name blocked

# if you are on the block list you cannot touch 123 for 15min
-m state --state NEW -m tcp -p tcp --dport 123 -m recent --rcheck --name blocked --seconds 900 -j DROP

# if port 123 is touched add to the knocked list
-m state --state NEW -m tcp -p tcp --dport 123 -m recent --set --name knocked

# if you are on the knock list you can initiate an ssh session for 5 seconds
-m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name knocked --seconds 5 -j ACCEPT

Единственное предостережение: я не знаю, может ли ipt_recent отслеживать в течение 15 минут.

Изменить: попытаться улучшить комментарии и добавить отсутствующие «недавние».

Я не вижу другого выхода, кроме как иметь conntrack helper для netfilter написан специально для этой цели - вы не можете "скрипт" динамических наборов правил iptables и должны будут использовать механизмы conntrack. Очевидно, что это не будет работать с ванильными iptables, но потребует специально скомпилированного модуля.