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

Сколько времени нужно для применения правила iptables?

Сколько времени нужно для применения правила iptables?

Я использую сценарий с приведенным ниже кодом, пытаясь заблокировать хосты, но они не работают немедленно. Есть ли задержка, iptables не работает или код просто неверный?

#!/bin/sh
echo $1 >> /etc/dropped_hosts
iptables -A INPUT -s $1 -j DROP
iptables -A OUTPUT -d $1 -j DROP

iptables правила вступают в силу немедленно. Поскольку ваш скрипт добавляет (-A) к цепочкам INPUT и OUTPUT, ваши правила добавляются в конец этих цепочек. Если у вас есть другие правила завершения, которые предшествуют этим правилам, они вступят в силу (а более поздние правила - нет).

Например, очень часто бывает -m state --state ESTABLISHED,RELATED -j ACCEPT правило на ранней стадии в цепочках INPUT / OUTPUT, и это правило вступит в силу с приоритетом перед любыми правилами, которые идут после него. Это правило позволяет продолжать установленные соединения, даже если они поступают с / с IP-адресов, которые вы добавили в свой брандмауэр с помощью сценария.

Если у вас есть УСТАНОВЛЕННОЕ, СВЯЗАННОЕ правило в цепочках ВВОДА / ВЫВОДА (или какое-либо другое правило, которое отменяет более поздние правила), то вам придется либо согласиться с тем, что ваши новые правила не вступят в силу немедленно, либо вы можете получить свое скрипт вставляет правила DROP IP-адреса перед правилом ESTABLISHED, RELATED. Этого можно достичь, изменив ваш сценарий на Insert (-I), а не на Append (-A) правила DROP вашего IP-адреса, например

iptables -I INPUT -s $1 -j DROP
iptables -I OUTPUT -d $1 -j DROP

iptables правила вступают в силу немедленно.

Поскольку этот скрипт добавляется, перед ним может быть правило, которое говорит, что нужно автоматически разрешать хосты, которые вы пытаетесь заблокировать. iptables читает правила сверху вниз и прерывается, как только находит совпадение (поэтому, если у вас было что-то, в котором говорилось `` разрешить badhostx '', а затем следующая строка была `` drop badhostx '', он никогда не упадет, так как правило для этого уже согласовано хост.

Если вы используете -A в скрипте, вы можете захотеть очистить свои таблицы перед (iptables --flush), чтобы убедиться, что правила точно такие, как вы применяете их в скрипте (но также убедитесь, что у вас есть ВСЕ правила в этом сценарии).

Другой вариант вместо запуска этого сценария - получить нужные вам правила, а затем выполнить либо «service iptables save», либо «/etc/init.d/iptables save». Надеюсь это поможет.

Вы должны добавить свои правила в начало таблицы фильтров. Поэтому вы должны использовать -I (вставить) вместо -A (добавить)