LINUX.ORG.RU
ФорумAdmin

Апач и iptables


0

0

Стоит файрвол. Необходимо, чтобы к апачу (стоит в локалке) был доступ извне. Пишу правила: #Чтоб был пропущен запрос извне к веб серверу iptables -A FORWARD -i $INET_ETH -p tcp --dport 80 -m state --state NEW -j ACCEPT

#Чтоб веб-сервер дал ответ iptables -A FORWARD -s $WEB_SERVER -m state --state RELATED, ESTABLISHED -j ACCEPT

#Делаем форвардинг iptsbales -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination $WEB_SERVER

iptables -t nat -A POSTROUTING -s $WEB_SERVER -o $INET_IP -j SNAT --to-source $INET_IP

Извне достучаться нельзя. Что неправильно ?

> iptables -A FORWARD -i $INET_ETH -p tcp --dport 80 -m state --state NEW -j ACCEPT
Пропускаем только NEW, а не_NEW убиваем ? И как оно по-вашему будет работать ? :-) Допишите ESTABLISHED: --state NEW,ESTABLISHED. А еще лучше вообще убрать проверку state, по-моему она здесь ни к чему (поправьте, если не прав).

> iptables -t nat -A POSTROUTING -s $WEB_SERVER -o $INET_IP -j SNAT --to-source $INET_IP
На сколько я знаю параметр "-o" требует указания имени интерфейса, а --to-source - IP адреса, у вас же стоит одна и та же переменная... или это описка ?

spirit ★★★★★
()
Ответ на: комментарий от spirit

А разве iptables -A FORWARD -s $WEB_SERVER -m state --state RELATED, ESTABLISHED -j ACCEPT

не пропускает соответствующие пакеты, хотя возможно Вы и правы... где -o там действительно очепятка $INET_ETH - интерфей который смотрит в инет.

constant
() автор топика
Ответ на: комментарий от constant

Нет, под это правило подпадают только те пакеты, которые "-s $WEB_SERVER", т.е. идущие ОТ, а не К web-серверу.

spirit ★★★★★
()
Ответ на: комментарий от constant

>Т.е извне нужно пропускать ВСЕ ПАКЕТЫ К ВЕБ-СЕРВЕРУ ? Неа...

Мне кажеться ты слишком намудрил... я конечно новичек но... попробуй так: iptables -A INPUT -p tcp --dport 80 -j ACCEPT

(так же можно добавить и 8080 и etc)

ну и в конце ;) политику поумолчанию: iptables -P INPUT DROP

Mrak ★★★
()
Ответ на: комментарий от constant

> Т.е извне нужно пропускать ВСЕ ПАКЕТЫ К ВЕБ-СЕРВЕРУ ?
Да: и NEW, и ESTABLISHED.

P.S. 2 Mrak: вы не так поняли ситуацию, тут немного другое...

spirit ★★★★★
()
Ответ на: комментарий от spirit

>iptables -A FORWARD -i $INET_ETH -p tcp --dport 80 -m state --state NEW -j ACCEPT

Политика цепочки DROP? То есть ты форфардишь на 80 порт сервака только tcp пакеты с флагом SYN (это которые NEW) - после получения такого пакета, от апача идёт пакет, подтверждающий установку tcp-соединения - который форвардится назад, к машине запросившей вэб-страницу (ибо его состояние - RELATED), а после этого, машина-инициатор соединения, шлёт tcp-пакет на 80 порт апача со сброшенным флагом SYN, но, поскольку, с точки зрения файрвола он ESTABLISHED - пакет дропается в соответствии с правилом... соединение не происходит.

P.S. добавь в процитированное правило --state NEW,ESTABLISED -j ACCEPT и всё должно заработать.

bsh ★★★
()

Сорри, сообщение выше адресовалось constant. То есть имхо, spirit прав. Но мне кажется, проверку по состоянию лучше оставить, она не помешает.

bsh ★★★
()

Да, и вот ещё что - твоё правило

iptables -A FORWARD -s $WEB_SERVER -m state --state RELATED, ESTABLISHED -j ACCEPT

мне не кажется удачным. Может лучше

iptables -A FORWARD -i $LOCAL_ETH -p tcp -s $WEB_SERVER -m state --state RELATED, ESTABLISHED -j ACCEPT ?

Да и --sport можно добавить...

bsh ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.