В случае, если вы являетесь счастливым обладателем внешнего IP-адреса, и у вас появилось желание открыть доступ к своему роутеру из интернета по протоколу SSH, то может возникнуть здравая мысль как-то обезопасить его от взлома злоумышленниками.

Полную защиту в данной ситуации может предоставить разве что whitelist, состоящий из известных IP-адресов, с которых доступ будет разрешен, в то время как для всех остальных доступ к роутеру должен быть закрыт. Однако во многих ситуациях такой способ не является допустимым. Многие операторы связи предоставляют динамические IP-адреса. Кроме того, не всегда можно заранее знать, с какого провайдера и по какому каналу связи в следующий раз потребуется связаться со своим роутером. Поэтому будем защищать роутер другими путями.

Основных идей две:

  1. Закрыть доступ к порту 22, перенаправить на него какой-либо другой произвольный номер порта.
  2. Ограничить количество подключений к перенаправленному порту.

Первое защитит от сканеров, рыскающих в поисках открытых стандартных SSH-портов. Второе – предотвратит возможность брутфорс-атаки с подбором паролей. И поможет нам в этом файрвол iptables.

В терминологии OpenWrt для реализации изложенного достаточно добавить всего лишь три правила /etc/firewall.user:

# redirect ssh masked listening port to real one
iptables -t nat -A prerouting_wan -p tcp --dport 39054 -j DNAT --to 172.16.0.1:22

# set restrictions on port 22 from WAN side
iptables -A input_wan -d 172.16.0.1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 3 --name ATTACKER_SSH --rsource -j DROP
iptables -A input_wan -d 172.16.0.1 -p tcp --dport 22 -m state --state NEW -m recent --set --name ATTACKER_SSH --rsource -j ACCEPT

Что происходит в данном примере:

  1. Порт 39054 со стороны WAN перенаправляется на порт 22 на локальный IP-адрес роутера 172.16.0.1.
  2. На перенаправленные таким образом новые подключения накладывается следующее ограничение: за 180 секунд будет принято не более трех коннектов.

Так, за три минуты злоумышленник не сможет сделать более трех попыток подобрать пароль. Следовательно, на широкий перебор вариантов времени у него должно уйти куда как больше. Кроме того, злоумышленнику придется еще потратить некоторое время на поиски порта 39054, ведь на стандартный порт 22 со стороны WAN роутер откликаться не станет.