Как работать мы знаем,теперь перейдем к созданию фильтра))) Наиболее часто используемыми действиями являются:
ACCEPT - если пакет совпадает с правилом, он будет принят.
REJECT - отклонить пакет и отправить ICMP-сообщение об ошибке назад отправителю.
DROP - отбросить пакет и ничего не посылать в ответ.
LOG - протоколировать детали пакета, если пакет совпадает с правилом. Данное действие является пассивным - нужно определить еще одно действие ACCEPT/DROP, если нужно, чтобы пакет был принят/отброшен.
Какая разница между REJECT и DROP?
В обоих этих случаях пакет будет отброшен. Разница между ними заключается в том, что в первом случае (при использовании REJECT) отправителю будет отправлено ICMP-сообщение "Port unreachable" («Порт недоступен»), а во втором случае ничего отправляться не будет. Во втором случае отправитель будет ждать ответа, пока не решит, что пакет потерян.
Утилиты iptables-save и iptables-restore ускоряют процесс сохранения/загрузки правил брандмауэра и делают его более гибким. Как правило, команда iptables-save вставляется в сценарий, вызываемый при завершении работы системы, а команда iptables-restore - в сценарий загрузки системы.
Описание синтаксиса.
Рассмотрим синтаксис команды iptables:
iptables -t <таблица> <команды> -j <цель>
Параметр [color=red]-t задает название таблицы, над которой нужно выполнить действие (filter, NAT или mangle). Дальше идет список команд, которые выполняются над цепочками внутри указанной таблицы. Нередко используемыми командами являются:[/color]
-А <цепочка> <правила>: добавляет правило к цепочке, например: # iptables -t filter -A INPUT -p tcp -dport 111 -j DROP
(это правило запрещает все входящие TCP-соединения по порту 111). Порядок, в котором добавляются правила, чрезвычайно важен. Применение правил начинается сверху вниз (с первого добавленного до последнего добавленного правила цепочки, при условии, что вначале цепочка была пуста), новое правило добавляется в конец цепочки.
-D <цепочка> <позиция в цепочке> <правило>: удаляет правило из цепочки. При удалении можно написать как само правило, так и его номер в цепочке:
# iptables -D INPUT -7
Все какбэ мы знаем все для создания своего правила,теперь росмотрим стандартную защиту:
iptables -A INPUT -p tcp --syn --dport 29000 -m connlimit --connlimit-above 3 -j REJECT
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --set --name pw
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 --rttl --name pw -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --set --name web
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name web -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --set --name authd
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --update --seconds 604800 --hitcount 1 --rttl --name authd -j DROP
И как вариант самая надежная защита:
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 29000 -j ACCEPT
-A INPUT -p udp -m udp -j REJECT
-A INPUT -p tcp -m tcp -j REJECT
Внимание!!!Доступ к вашему серву из вне будет закрыт!!!Такчто юзаем зелененькие правила!!!
Вводим необходимые нам правила и вводим iptables-sav