LinuxForum.Fans
Тема

Проблема с iptables

Автор: waldi 11 сообщений 3307 просмотров
#172807

Пытаюсь отладить правила 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 не очищает правил

Подскажите, где ошибка?

#172825

1) добавь в инпут разрешения для lo интерфейса
2) посмотри top`ом что именно вешает систему.


зы. вапще какие-то странные правила. Зачем ставить политику output в drop а через 10 строчек втыкать аксепт ол? Кроме того, до правила "-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT" ни одного пакета не дойдет ;)
ззы. Кстати, а зачем правила кроном перетирать постоянно?

#172846
dwak написал:
1) добавь в инпут разрешения для lo интерфейса

-A INPUT -i lo -j ACCEPT
Вставил, но не помогло

dwak написал:
2) посмотри top`ом что именно вешает систему.

показывает небольшое повышение загрузки CPU для Xorg, gnome-www-brows

dwak написал:
зы. вапще какие-то странные правила. Зачем ставить политику output в drop а через 10 строчек втыкать аксепт ол? Кроме того, до правила "-A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT" ни одного пакета не дойдет ;)
ззы.

Убрал, не помогло

dwak написал:
Кстати, а зачем правила кроном перетирать постоянно?

Перетирку вообще убрал. Дело в том, что отладку правил делаю в своей локалке, на рабочем сервере в вирт хосте не могу, нет физ доступа на случай анабиоза
Главная проблема в том, что не могу выставить политики по умолчанию для начала
Господа, может у кого есть рабочие правила, чтобы были политики по умолчанию drop, но чтобы работали основные порты 22,25,80,110?

#172851
waldi написал:
Пытаюсь отладить правила iptables
Настроен crontab для затирания правил каждые 5 мин.
*/5 * * * * /sbin/iptables -F

Смысла нет никакого так делать, а вообще покажи весь скрипт которым запуск происходит, а не сохраненные правила.

#172911
newzenon написал:
[quote=waldi]Пытаюсь отладить правила iptables
Настроен crontab для затирания правил каждые 5 мин.
*/5 * * * * /sbin/iptables -F

Смысла нет никакого так делать, а вообще покажи весь скрипт которым запуск происходит, а не сохраненные правила.[/quote]

Не понял, почему нет смысла?
Хочу ограничить поток на порты, отсеивать хлам.
Что касается скрипта, у меня правила подгружаются либо при загрузке debian,
либо вручную подгружаю в ядро, если хочу поменять что или отладить
# /sbin/iptables-restore < /etc/iptables.up.rules
Скрипта, выходит, нет есть только файл правил /etc/iptables.up.rules, который я и редактирую
А как нужно делать, подскажите?

#172937
waldi написал:
Господа, может у кого есть рабочие правила, чтобы были политики по умолчанию drop, но чтобы работали основные порты 22,25,80,110?

на вход или на выход?)

#172948

В обе стороны :D

text

    #!/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

#173004
waldi написал:

Не понял, почему нет смысла?
Хочу ограничить поток на порты, отсеивать хлам.
Скрипта, выходит, нет есть только файл правил /etc/iptables.up.rules, который я и редактирую
А как нужно делать, подскажите?

Я кому писал? http://linuxforum.ru/viewtopic.php?pid=176106#p176106

waldi написал:

либо вручную подгружаю в ядро,

То же непонятно.
Выполняется сначала один скрипт, потом правила добавляются, либо удаляются:

Добавим правило:

text
iptables -A правило1 

Удалим:

text
iptables -D правило1
#173005

Кусок для примера очистка \ добавление:

text
# Очистка предидущего проброса портов
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

#173873

Огромное спасибо всем, разобрался!

#238553

Здраствуйте! Подскажите пожалуйста, cейчас нежелательные сайты я закрыл с помощью iptables. Как с помощью crontab можно окрывать доступ к этим сайтам например с 19-00 до 8-00 ?

Войдите или зарегистрируйтесь, чтобы ответить.