Связка nginx + apache2. Проблемы с iptables.

12
B5
На сайте с 01.02.2010
Offline
0
2390

Приветствую.

Собственно сабж: ставил связку апач префорк + нгинкс, на 80 и 81 порты соответственно.

Всё как бы работает, НО: закрываю tcp и udp коннекты через айпитаблы для всех портов кроме этих двух (iptables -A INPUT -p tcp -m multiport ! --dports 80,81 -j DROP) и, почему-то, блокируется апач... Нгикс работает... Немогу понять почему.

Вот куски конфов:

апач:

NameVirtualHost 127.0.0.1

Listen *:81

нгинкс:

server {

listen айпи серва:80;

....

location / {

proxy_pass http://127.0.0.1:81;

....

}

error_page 500 502 503 504 /error500.html;

}

Мб у кого есть соображения ?...

zexis
На сайте с 09.08.2005
Offline
388
#1

1-й вариант

Надо прописать правило

iptables –I INPUT –s <ip вашего сайта> –j ACCEPT

2-й вариант

Если апаче у вас принимает запросы на локальном интерфейсе 127.0.0.1:81

То закрывать через фаервол 81 порт не нужно.

Так как к локальному интерфейсу 127.0.0.1 все равно кроме nginx (и других локальных процессов) доступ из вне и так никто не получит.

M
На сайте с 16.09.2009
Offline
278
#2

zexis, коннекешены локально на апач пойдут с 127.0.0.1, нет? :)

bm_5, iptables -vnL в студию.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
Andreyka
На сайте с 19.02.2005
Offline
822
#3

tcpdump в помощь

Не стоит плодить сущности без необходимости
B5
На сайте с 01.02.2010
Offline
0
#4

zexis,

Не понимаю смысла Вашей команды, син у меня итак проходит (я же писал, что нгикс нормально работает).

Насчёт второго варианта: тоже писал, 80й и 81й порт наоборот открыты(iptables -A INPUT -p tcp -m multiport ! --dports 80,81 -j DROP).

myhand,

Собственно одно правило:

Chain INPUT (policy ACCEPT 727K packets, 67M bytes)

pkts bytes target prot opt in out source destination

22 1104 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports ! 3268,80,81

Да и такая же проблема со сквидом (3268 порт для него открыт).

M
На сайте с 01.12.2009
Offline
235
#5

Мультипортовые Модуль позволяет указать число различных портов в одном правиле. Это позволяет меньше и легче правил содержания Iptables конфигурационных файлов. Например, если мы хотим, чтобы глобальный доступ к SMTP, HTTP, HTTPS и SSH порты на нашем сервере, мы, как правило, использовать что-то вроде следующего:

http://howtonixnux.blogspot.com/2008/03/iptables-using-multiport.html

Он для того что бы упростить правило типа в список выстраивать, а не для вашего метода.

Тоесть iptables -A INPUT -p tcp -m multiport ! --dports 80,81 -j DROP Он тут не исключит ваши порты а заблокирует, ну и у вас тут ошибки есть правиле.

Администратор Linux,Freebsd. построения крупных проектов.
M
На сайте с 16.09.2009
Offline
278
#6
bm_5:

myhand,
Собственно одно правило:
Chain INPUT (policy ACCEPT 727K packets, 67M bytes)
pkts bytes target prot opt in out source destination
22 1104 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports ! 3268,80,81

Ну дак маловато правил. А UDP как к вам придет (с 53 на клиентский порт)? Никому на тазике DNS не интересен? :D

Stateless файервол сложнее в обращении. _Зачем_ оно Вам?

Фильтруйте по --state NEW на нужные порты (как минимум 80, а c интерфейса lo

можно весь трафик к себе пускать),

а затем --state ESTABLISHED,RELATED -j ACCEPT

все остальное - DROP.

См. также:

http://www.opennet.ru/docs/RUS/iptables/

madoff, символ "!" означает отрицание аргумента

опции --dports. Т.е. _НЕ_ указанные далее порты.

M
На сайте с 01.12.2009
Offline
235
#7

madoff, символ "!" означает отрицание аргумента

опции --dports. Т.е. _НЕ_ указанные далее порты.

Он не будет модуль так работать стабильно, этот модуль нужен для сортировке, в нём нету понятие мултипорты типа от 1024 до 65000.

Опция --dports причём тут ? , какое отношение к модулю ? если он ! отрицание применяет к -m multiport .

перевожу -m модуль по имени multiport ! с отрицанием.

Вот как он работает ))

iptables -A INPUT -i eth0 -p tcp -m state --state NEW -m multiport --dports 80,81 -j DROP

Запретить порты в списке!

M
На сайте с 16.09.2009
Offline
278
#8

madoff, отрицание там применяется именно к списку портов. В man iptables это написано.

ТС, добавьте еще диапазон --dports 1024:65535 помимо 80,81 в правило. Нужно ACCEPT

такие соединения с проверкой ! --syn отдельно _до_ Вашего правила. С добавлением правила

для DNS (с 53 порта на диапазон >= 1024) - все будет у вас работать. Но стоит переделать

на нормальный вариант с -m state, как советовали Выше.

M
На сайте с 01.12.2009
Offline
235
#9
myhand:
madoff, отрицание там применяется именно к списку портов. В man iptables это написано.

ТС, добавьте еще диапазон --dports 1024:65535 помимо 80,81 в правило. Нужно ACCEPT
такие соединения с проверкой ! --syn отдельно _до_ Вашего правила. С добавлением правила
для DNS (с 53 порта на диапазон >= 1024) - все будет у вас работать. Но стоит переделать
на нормальный вариант с -m state, как советовали Выше.

----

покажите с применением модуля мульти порт что бы работало как TC хочет цитирую

ТС, добавьте еще диапазон --dports 1024:65535, (iptables -A INPUT -p tcp -m multiport ! --dports 80,81 -j DROP).

Очень жду примера что бы работало у TC.

M
На сайте с 16.09.2009
Offline
278
#10

Я уже объяснил что нужно сделать (udp не фильтруется для примера):


iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -A INPUT -p udp -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m multiport --dports 1024:65535 -j ACCEPT
iptables -A INPUT -p tcp -m multiport ! --dports 80,81 -j DROP
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий