Port knocking — это сетевой защитный механизм, действие которого основано на следующем принципе: сетевой порт является по-умолчанию закрытым, но до тех пор, пока на него не поступит заранее определённая последовательность пакетов данных, которая «заставит» порт открыться. Например, вы можете сделать «невидимым» для внешнего мира порт SSH, и открытым только для тех, кто знает нужную последовательность.
Сначала установим утилиту:
apt install knockd
Затем откроем файл /etc/default/knockd и установим следующую опцию:
START_KNOCKD=1
Далее откроем файл /etc/knockd.conf и в секции options укажем наш интерфейс
[options]
UseSyslog
Interface = ens33
Теперь создадим секцию для доступа к SSH:
[SSH]
sequence = 7000,9000,8000 # Порядок последовательности для операций.
seq_timeout = 5 # Время ожидания завершения последовательности (сек).
tcpflags = syn # Флаг TCP для установления соединения (SYN).
start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT # Разрешение доступа по SSH для IP %IP%.
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT # Отключение доступа по SSH для IP %IP%.
cmd_timeout = 60 # Время ожидания выполнения команды (сек).
Сохраним конфигурацию и запустим сервис:
systemctl start knockd
Теперь на клиенте перед подключением к серверу по SSH нужно будет использовать следующую команду - постучаться
knock IP_сервера 7000 9000 8000
