Инструменты пользователя

Инструменты сайта


сисадмин:port_cknocking_средствами_iptables

Открытие порта «по стуку»

Вариант office

Стучимся ICMP пакетом длиной 253 байт для открытия всех портов на 10 секунд.
Поставить до правила приёма icmp пакетов

iptables -A INPUT   -i ppp0 -m recent --rcheck --seconds 10  --name knock -j ACCEPT
iptables -A FORWARD -i ppp0 -m recent --rcheck --seconds 10  --name knock -j ACCEPT
iptables -A INPUT   -i ppp0 -p icmp -m length --length 281 -m recent --set --name knock

Вариант

Самое простое — открывать порт ssh (22) после стука в заданный высокий порт:

iptables -N ssh_knock # Создаем цепочку для проверки попыток соединений на защищаемый порт
# Если за последние 60 секунд было 2 и более стука — блокируем, на всякий случай
iptables -A ssh_knock -m recent --rcheck --seconds 60 --hitcount 2 -j RETURN
# Если за последние 10 секунд стук в нужный порт был — разрешить соединение
iptables -A ssh_knock -m recent --rcheck --seconds 10 -j ACCEPT
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Все попытки открыть новое соединение по SSH направляем на проверку
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ssh_knock
# Здесь мы добавляем правило для регистрации стука
iptables -A INPUT -m state --state NEW -p tcp --dport 27520 -m recent --set
# Опять же на всякий случай — при стуке в соседние порты закрываем SSH
iptables -A INPUT -m state --state NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove
iptables -P INPUT DROP # Что не разрешено — то запрещено

Даже в таком простом примере присутствуют жесткие меры защиты: защищаемый порт (22) открывается на 10 секунд после стука в заданный порт (27520), при этом более одного стука в этот порт в течение минуты считается ошибкой. Также стук в соседние с заданным порты сразу закрывает защищаемый порт. Это делается в целях защиты от подбора стука.

сисадмин/port_cknocking_средствами_iptables.txt · Последнее изменение: 2022.12.18 07:54 — feser