Пытаюсь отладить правила iptables
Настроен crontab для затирания правил каждые 5 мин.
*/5 * * * * /sbin/iptables -F
Вот мой рабочий файл iptables.up.rules
*nat
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT
*filter
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables : " --log-level 7
-A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp -m multiport --dports 25,53,80,110,443 -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -i eth0 -p tcp -m multiport --sports 25,53,80,110,443 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -p icmp -j ACCEPT
-A FORWARD -i eth1 -o eth0 -p icmp -j ACCEPT
-A OUTPUT -j ACCEPT
-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT
COMMIT
Повторяю, что эти правила работают, и crontab тоже
Но, когда я попробовал добавить политики по умолчанию, а именно
*nat
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT
*filter
-P OUTPUT DROP
-P INPUT DROP
-P FORWARD DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables : " --log-level 7
-A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp -m multiport --dports 25,53,80,110,443 -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -i eth0 -p tcp -m multiport --sports 25,53,80,110,443 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -p icmp -j ACCEPT
-A FORWARD -i eth1 -o eth0 -p icmp -j ACCEPT
-A OUTPUT -j ACCEPT
-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT
COMMIT
После этого работа замедляется, потом подвисает таймер и вообще виснет debian и cron не очищает правил
Подскажите, где ошибка?
Проблема с iptables
1) добавь в инпут разрешения для lo интерфейса
2) посмотри top`ом что именно вешает систему.
зы. вапще какие-то странные правила. Зачем ставить политику output в drop а через 10 строчек втыкать аксепт ол? Кроме того, до правила "-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT" ни одного пакета не дойдет ;)
ззы. Кстати, а зачем правила кроном перетирать постоянно?
1) добавь в инпут разрешения для lo интерфейса
-A INPUT -i lo -j ACCEPT
Вставил, но не помогло
2) посмотри top`ом что именно вешает систему.
показывает небольшое повышение загрузки CPU для Xorg, gnome-www-brows
зы. вапще какие-то странные правила. Зачем ставить политику output в drop а через 10 строчек втыкать аксепт ол? Кроме того, до правила "-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT" ни одного пакета не дойдет ;)
ззы.
Убрал, не помогло
Кстати, а зачем правила кроном перетирать постоянно?
Перетирку вообще убрал. Дело в том, что отладку правил делаю в своей локалке, на рабочем сервере в вирт хосте не могу, нет физ доступа на случай анабиоза
Главная проблема в том, что не могу выставить политики по умолчанию для начала
Господа, может у кого есть рабочие правила, чтобы были политики по умолчанию drop, но чтобы работали основные порты 22,25,80,110?
Пытаюсь отладить правила iptables
Настроен crontab для затирания правил каждые 5 мин.
*/5 * * * * /sbin/iptables -F
Смысла нет никакого так делать, а вообще покажи весь скрипт которым запуск происходит, а не сохраненные правила.
[quote=waldi]Пытаюсь отладить правила iptables
Настроен crontab для затирания правил каждые 5 мин.
*/5 * * * * /sbin/iptables -F
Смысла нет никакого так делать, а вообще покажи весь скрипт которым запуск происходит, а не сохраненные правила.[/quote]
Не понял, почему нет смысла?
Хочу ограничить поток на порты, отсеивать хлам.
Что касается скрипта, у меня правила подгружаются либо при загрузке debian,
либо вручную подгружаю в ядро, если хочу поменять что или отладить
# /sbin/iptables-restore < /etc/iptables.up.rules
Скрипта, выходит, нет есть только файл правил /etc/iptables.up.rules, который я и редактирую
А как нужно делать, подскажите?
Господа, может у кого есть рабочие правила, чтобы были политики по умолчанию drop, но чтобы работали основные порты 22,25,80,110?
на вход или на выход?)
В обе стороны :D
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#сеть провайдера
prov=eth1
#сеть предприятия
local=eth0
#интернет
inet=ppp0
#Маскардинг в инет и локалку
iptables --table nat --append POSTROUTING --out-interface $inet -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface $prov -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#Разрешаем порты для l2tp
iptables -A INPUT -i $prov -p udp --dport 1701 --sport 1701 -j ACCEPT
iptables -A OUTPUT -o $prov -p udp --sport 1701 --dport 1701 -j ACCEPT
iptables -A INPUT -i $prov -p udp --dport 500 --sport 500 -j ACCEPT
iptables -A OUTPUT -o $prov -p udp --sport 500 --dport 500 -j ACCEPT
iptables -A INPUT -i $prov -p udp --dport 47 --sport 47 -j ACCEPT
iptables -A OUTPUT -o $prov -p udp --sport 47 --dport 17 -j ACCEPT
# разрешаем локальный траффик для loopback и внутренней сети
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i $local -j ACCEPT
iptables -A OUTPUT -o $local -j ACCEPT
# ICMP разрешаем пинг с локальной сети провайдера до сервера
iptables -A INPUT -i $prov -p icmp -j ACCEPT
iptables -A OUTPUT -o $prov -p icmp -j ACCEPT
iptables -A INPUT -i $inet -p icmp -j ACCEPT
iptables -A OUTPUT -o $inet -p icmp -j ACCEPT
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем ssh серверу
iptables -A INPUT -i $prov -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $prov -p tcp --sport 22 -j ACCEPT
#share
#iptables -A INPUT -i $prov -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
#iptables -A OUTPUT -o $prov -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
#iptables -A INPUT -i $prov -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
#iptables -A OUTPUT -o $prov -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
# Разрешаем dns серверу
iptables -A INPUT -i $prov -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $prov -p udp --dport 53 -j ACCEPT
#Разрешаем пинговать узлы интернета
iptables -A INPUT -i $inet -p icmp -j ACCEPT
iptables -A OUTPUT -o $inet -p icmp -j ACCEPT
#Разрешаем серверу http и dydns
iptables -A INPUT -i $inet -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport 80 -j ACCEPT
#Разрешаем серверу https и webmin
iptables -A INPUT -i $prov -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o $prov -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -i $prov -p tcp --dport 10000 -j ACCEPT
iptables -A OUTPUT -o $prov -p tcp --sport 10000 -j ACCEPT
#Разрешаем серверу ftp
iptables -A INPUT -i $inet -p tcp --sport 21 --dport 21 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --sport 21 --dport 21 -j ACCEPT
#Ну а тут разрешаем пользователям внутренней сети доступ в инет и в локалку
iptables -A FORWARD -i $local -o $inet -p tcp -m multiport --dport 80,443,110,25,143,5190,20,21 -j ACCEPT
iptables -A FORWARD -i $local -o $prov -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $inet -o $local -p tcp -m multiport --sport 80,110,443,25,143,5190,20,21 -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -i $local -o $prov -p tcp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p tcp -m multiport --sport 80,110,443,25,143,5190 -j ACCEPT
#Разрешаем пинговать узлы интернета
iptables -A FORWARD -i $local -o $inet -p icmp -j ACCEPT
iptables -A FORWARD -i $inet -o $local -p icmp -j ACCEPT
#Разрешаем RDP
iptables -A FORWARD -i $local -o $prov -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p tcp --sport 3389 -j ACCEPT
#Бхгалтерия
iptables -A FORWARD -i $local -o $inet -p tcp --dport 1024 -j ACCEPT
iptables -A FORWARD -i $inet -o $local -p tcp --sport 1024 -j ACCEPT
iptables -A FORWARD -i $local -o $inet -p udp --dport 55777 -j ACCEPT
iptables -A FORWARD -i $inet -o $local -p udp --sport 55777 -j ACCEPT
Разрешаем NETBIOS
iptables -A FORWARD -i $local -o $prov -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i $local -o $prov -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
#Разрешаем пинговать узлы локальной сети
iptables -A FORWARD -i $local -o $prov -p icmp -j ACCEPT
iptables -A FORWARD -i $prov -o $local -p icmp -j ACCEPT
#Порт маппинг radmin
iptables -t nat -A PREROUTING -p tcp -i $inet --dport 4889 -j DNAT --to-destination 192.168.0.7:4889
iptables -A FORWARD -p tcp -s 192.168.0.4 --sport 9999 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.4 --dport 9999 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.7 --sport 4889 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.7 --dport 4889 -j ACCEPT
Не понял, почему нет смысла?
Хочу ограничить поток на порты, отсеивать хлам.
Скрипта, выходит, нет есть только файл правил /etc/iptables.up.rules, который я и редактирую
А как нужно делать, подскажите?
Я кому писал? http://linuxforum.ru/viewtopic.php?pid=176106#p176106
либо вручную подгружаю в ядро,
То же непонятно.
Выполняется сначала один скрипт, потом правила добавляются, либо удаляются:
Добавим правило:
iptables -A правило1 Удалим:
iptables -D правило1Кусок для примера очистка \ добавление:
# Очистка предидущего проброса портов
iptables -t nat -D PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination $OLD_IP:80
# Проброс:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination $NEW_IP:80
Огромное спасибо всем, разобрался!
Здраствуйте! Подскажите пожалуйста, cейчас нежелательные сайты я закрыл с помощью iptables. Как с помощью crontab можно окрывать доступ к этим сайтам например с 19-00 до 8-00 ?