Nginx + apache как запретить подделку IP

12
D
На сайте с 05.06.2007
Offline
155
2684

Nginx + apache как запретить подделку IP

Есть такая сборка nginx как прокси на 80 порту и apache (с rpaf) на 8080, отдаёт весь контент nginx'у.

server {
listen 80;
access_log off;
location / {
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://localhost:8080;
}

}

Это в апаче


#load rpaf_module
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader Remote-Addr
</IfModule>

Да, я передаю Remote-Addr в заголовке в качестве оригиналного IP, а не X-forwarder-for как это обычно все делают, оно ведь и лучше так!

Так вот вопрос, как разрешить подключаться к апачу только для nginx ? Это вообще возможно как-либо?

А то ведь получается что любой локальный пользователь сервера (хостинга) может сделать запро на localhost:8080 и передать апачу любой Remote-Addr, получается что так можно подделать Remote-Addr, и пхп будет считать его за оригинальный (( может есть решения через IPTABLES ?

Написал не мало шедевров ;)
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Взможно

В правилах iptables пропишите owner юзера под которым работает nginx с апачем

Разумеется скрипты пользователя должны работать от него, так что никаких mod_php

Не стоит плодить сущности без необходимости
D
На сайте с 05.06.2007
Offline
155
#2

Не совсем понимаю, это сработает?

Учитывая что nginx от www, а апач (все процессы) от пользователей..

iptables -A OUTPUT -o lo -p tcp -m owner --uid-owner www --dport 8080 -j ACCEPT

iptables -A OUTPUT -o lo -p tcp --dport 8080 -j DROP

проверил.. работает всё, супер, спасибо!!

N
На сайте с 06.05.2007
Offline
419
#3

Довольно странные рассуждения, ведь заранее известны адреса, с которых подключается доверенный nginx (это либо 127.0.0.1 либо другие Ip сервера) и достаточно фильтровать по этим адресам чтобы работало совместимо с любыми режимами php.

Кнопка вызова админа ()
Roxis
На сайте с 19.11.2006
Offline
40
#4

Listen 127.0.0.1:8080 ?

M
На сайте с 16.09.2009
Offline
278
#5
Roxis:
Listen 127.0.0.1:8080 ?

и что? Вы этим запретите своим локальным пользователям сходить на 127.0.0.1:8080 ?

читайте ТС внимательнее.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
D
На сайте с 05.06.2007
Offline
155
#6
netwind:
Довольно странные рассуждения, ведь заранее известны адреса, с которых подключается доверенный nginx (это либо 127.0.0.1 либо другие Ip сервера) и достаточно фильтровать по этим адресам чтобы работало совместимо с любыми режимами php.

Андрейка просто неправильно выразился, но прав, по крайней мере я понял так, если апач работает от www как и nginx, то и пхп со своим модом соответственно от www (openbasedir и всё такое). И что получается, что через пхп легко можно сделать любой запрос на 127.0.0.1:8080 (тотже юзер www пройдёт филтер iptables), т.е. защиты нет, ип можно подменить!

Zaqwr
На сайте с 08.08.2007
Offline
111
#7

Dimanych, значит как и было задумано nginx работает от nginx, и --uid-owner nginx и нико кроме nginx не будет туда попадать

Администрирование, Linux, Cisco, Juniper
M
На сайте с 16.09.2009
Offline
278
#8
Zaqwr:
Dimanych, значит как и было задумано nginx работает от nginx, и --uid-owner nginx и нико кроме nginx не будет туда попадать

Бывают системы, где апач и nginx работают из под одинакового пользователя (напр, nobody).

Dimanych:
А то ведь получается что любой локальный пользователь сервера (хостинга) может сделать запро на localhost:8080 и передать апачу любой Remote-Addr, получается что так можно подделать Remote-Addr, и пхп будет считать его за оригинальный

Если весь этот геморой вам нужно для того, чтобы локальные пользователи "не подделали" Remote_Addr - успокойтесь, не подделают :-) Бегом гуглить на тему как заполняется эта переменная. К nginx-у придет коннект с одного из IP сервера (например, 127.0.0.1) - он

заполнит нужную переменную соответственно.

N
На сайте с 06.05.2007
Offline
419
#9

myhand, это заголовок он так назвал, так что подделают. извиняюсь, я и сам не сразу вник в суть.

M
На сайте с 16.09.2009
Offline
278
#10
netwind:
так что подделают. извиняюсь, я и сам не сразу вник в суть.

Таки да, стыдно ((:

Хотя смысл его подделывать мне крайне не очевиден, если nginx просто прозрачно проксирует запросы апачу. DOSить другие хосты на сервере, подставляя левые IP?

12

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