Простой и эффективный способ запретить скан портов на своём сервере с помощью iptables. Просто баним всех, кто стучится не на открытый целевой порт. Допустим, у вас запущен OpenVPN на TCP и UDP портах 34881. Забаним на 10 минут всех, кто обращается не к ним.
# Блокируем тех, кто обращается на неоткрытые порты tcpiptables -A INPUT -m recent --rcheck --seconds 600 --name BANPORT -j DROPiptables -A INPUT -p tcp -m multiport ! --dports 34881 -m recent --set --name BANPORT -j DROPiptables -A INPUT -p tcp --syn -m multiport --dports 34881 -j ACCEPT# Блокируем тех, кто обращается на неоткрытые порты udpiptables -A INPUT -m recent --rcheck --seconds 600 --name BANPORT -j DROPiptables -A INPUT -p udp -m multiport ! --dports 34881 -m recent --set --name BANPORT -j DROPiptables -A INPUT -p udp -m multiport --dports 34881 -j ACCEPT
Я использую multiport с заделом на список из нескольких портов, которые в случае необходимости можно перечислить через запятую. Посмотреть список забаненых:
# cat /proc/net/xt_recent/BANPORT
Удалить оттуда:
# echo -1.1.1.1 > /proc/net/xt_recent/BANPORT
Очистить список:
# echo / > /proc/net/xt_recent/BANPORT
Такой вот простой способ скрыть от посторонних глаз сервис, который не получается ограничить какими-то списками. Понятное дело, это не 100% защита, так как найти открытый порт всё равно возможно, но для этого нужно приложить довольно много усилий. Если бан сделать вечным, то нужно очень много IP адресов, чтобы найти открытый порт.
Подобным способом можно скрыть проброс RDP или какого-то ещё порта от посторонних глаз. Когда будете настраивать, не забудьте разместить эти правила в общем списке правил фаервола так, чтобы они реально работали, и пакеты не попадали раньше в какие-то разрешающие правила.
#iptables #security