Вопрос по iptables!

У меня есть сервер (с одной сетевухой) на котором установлены apache2 и squid(прозрачный). Также я установил iptables, чтобы ограничить доступ. Вот какие у меня правила:
192.168.0.1 - локальный адрес
192.168.0.0/24 - локалка

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -s 192.168.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -i eth0 -s 127.0.0.1 -d 192.168.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 192.168.0.1 -l ACCEPT
iptables -A OUTPUT -o eht0 -s192.18.0.1 -d 127.0.0.1 -j ACCEPT

iptables -A INPUT -p tcp -i eth0 -s 192.168.0.0/24 --sport 1024:65535 \
-d 192.168.0.1 --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1 --sport 80 \
-d 192.168.0.0/24 --dport 1024:65535 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -i eth0 -s 192.168.0.0/24 --sport 1024:65535 \
-d 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128

И почему-то доступа к сайту я так и не получил, пишет "Невозможно открыть страницу"!
Кто сталкивался, подскажите, пожалуйста!!! Может не все правила написал?

У тебя не будет

У тебя не будет доступа, т.к. ты не открыл порт 3128 в цепочке INPUT.
Порт 80 открывать не нужно, т.к. эти пакеты не доходят до цепочки INPUT. Кроме того, не правильные правила доступа к loopback. Попробуй так:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo ACCEPT

iptables -A INPUT -p tcp -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1 --sport 80 \
-d 192.168.0.0/24 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128

Re: У тебя не будет

Rinus написал(а):
У тебя не будет доступа, т.к. ты не открыл порт 3128 в цепочке INPUT.
Порт 80 открывать не нужно, т.к. эти пакеты не доходят до цепочки INPUT. Кроме того, не правильные правила доступа к loopback. Попробуй так:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo ACCEPT

iptables -A INPUT -p tcp -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1 --sport 80 \
-d 192.168.0.0/24 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -i eth0 -s 192.168.0.0/24 -d 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128

Кстати, а почему на loopback неправильно, я если правильно понял, разрешаю с локального адреса и к локальному адресу (тоесть 192.168.0.1)!!!

Я просто указал

Я просто указал конкретный адрес, которому разрешено стучаться на loopback, а у тебя в правиле можно всем....

Потому-что

Потому-что адрес как источника так и назначения будет один - 127.0.0.1
Можно указать:
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -l ACCEPT
но смысла не вижу. А вот правила:
iptables -A INPUT -i eth0 -s 127.0.0.1 -d 192.168.0.1 -j ACCEPT
iptables -A OUTPUT -o eht0 -s 192.18.0.1 -d 127.0.0.1 -j ACCEPT
точно безсмысленные, т.к. такого не может быть, чтобы пакет на eth0 приходил с ip адреса 127.0.0.1 или уходил с этого же адреса через eth0 :)

Кстати...

Спасибо, помогло, заработало :)...

А может ты

А может ты знаешь какие-нить правила, которые предотвращают от сканирования и DOS-атак?

Не, на счёт

Не, на счёт этого не подскажу.

Re: Не, на счёт

Rinus написал(а):
Не, на счёт этого не подскажу.

Нашел, вот они --

iptables -N check-flags
iptables -F check-flags
iptables -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit \
--limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
iptables -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit \
5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
iptables -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
iptables -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
-m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
iptables -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A check-flags -p tcp --tcp-flags ALL NONE -m limit \
--limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
iptables -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
iptables -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
iptables -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
iptables -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

iptables -A INPUT -j check-flags

Почитай про

Почитай про patch-o-matic.
В частности модуль к iptables (Netfilter) обнаруживающий сканирование:
http://www.netfilter.org/projects/patch-o-matic/pom-base.html#pom-base-psd

Опция --limit спасет от DoS.

Так же посмотри мой ( http://www.megaupload.com/ru/?d=Y0VZP8UU ) конфиг, там бардак конечно, но может что полезное найдешь :)

похожий вопрос

у меня в локальной сети учет трафика происходит на iptables, также весь http трафик завернут на squid, соответственно дефолтовая политика для цепочки OUTPUT должна быть DROP, иначе какая-то часть трафика не считается на пользовательской цепочке.

сейчас авторизация происходит с помошью web-интерфейса, на который я пускаю пользователей так:

-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -m owner \
--uid-owner $apache_uid -j ACCEPT

хочу изменить тип авторизации на логин по ssh(юзер логинится и после авторизации получает доступ в инет) и столкулся с такой проблемой: процесс ssh нельзя выделить ни по UID, ни по PID... подскажите, как можно написать правила для обратного трафика ssh

_________________
linux is like a wigwam - no windows, no Gates and an Apache inside

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".