Назад | Перейти на главную страницу

iptables: как дать ip доступ к tcp-сервису на один час?

Хочу дать ip доступ к tcp порту 3306 на час. После этого все соединения необходимо закрыть.

Как добавить таймаут к следующему выражению?

iptables -A INPUT -m state --state NEW -m tcp -p tcp --source 1.2.3.4 --dport 3306 -j ACCEPT

Я считаю (я никогда не использовал его и нашел на странице руководства iptables) --timestart и --timestop выполнят это.

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --source 1.2.3.4 --dport 3306 --timestart 13:00 --timestop 14:00 -j ACCEPT

Позволил бы вам между 13 и 14 часами.

Это соответствует, если время / дата прибытия пакета находятся в заданном диапазоне. Все варианты являются факультативными.

--timestart стоимость

Соответствует, только если он стоит после «значения» (включительно, формат: ЧЧ: ММ; по умолчанию 00:00).

- остановка времени стоимость

Соответствует только в том случае, если оно стоит перед значением (включительно, формат: ЧЧ: ММ; по умолчанию 23:59).

Альтернативное решение, не требующее поддержки модуля времени iptables.

( iptables -I INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ; sleep 1h; iptables -D INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ) &

Это не закроет соединения через час, а просто вернется к той политике, которая была до разрешения соединения; который может быть настроен на прерывание и отбрасывание / отклонение запрещенного трафика, если вы заранее не установили STATE ESTABLISHED ALLOW.