Хочу дать 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.