Показаны различия между двумя версиями страницы.
port_cknocking_средствами_iptables [2015.06.25 12:17] – создано admin | port_cknocking_средствами_iptables [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Открытие порта «по стуку» ====== | ||
- | |||
- | Самое простое — открывать порт 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, | ||
- | # Все попытки открыть новое соединение по 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 # Что не разрешено — то запрещено | ||
- | Даже в таком простом примере присутствуют жесткие меры защиты: | ||