- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Nginx + apache как запретить подделку IP
Есть такая сборка nginx как прокси на 80 порту и apache (с rpaf) на 8080, отдаёт весь контент nginx'у.
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 ?
Взможно
В правилах iptables пропишите owner юзера под которым работает nginx с апачем
Разумеется скрипты пользователя должны работать от него, так что никаких mod_php
Не совсем понимаю, это сработает?
Учитывая что 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
проверил.. работает всё, супер, спасибо!!
Довольно странные рассуждения, ведь заранее известны адреса, с которых подключается доверенный nginx (это либо 127.0.0.1 либо другие Ip сервера) и достаточно фильтровать по этим адресам чтобы работало совместимо с любыми режимами php.
Listen 127.0.0.1:8080 ?
Listen 127.0.0.1:8080 ?
и что? Вы этим запретите своим локальным пользователям сходить на 127.0.0.1:8080 ?
читайте ТС внимательнее.
Довольно странные рассуждения, ведь заранее известны адреса, с которых подключается доверенный nginx (это либо 127.0.0.1 либо другие Ip сервера) и достаточно фильтровать по этим адресам чтобы работало совместимо с любыми режимами php.
Андрейка просто неправильно выразился, но прав, по крайней мере я понял так, если апач работает от www как и nginx, то и пхп со своим модом соответственно от www (openbasedir и всё такое). И что получается, что через пхп легко можно сделать любой запрос на 127.0.0.1:8080 (тотже юзер www пройдёт филтер iptables), т.е. защиты нет, ип можно подменить!
Dimanych, значит как и было задумано nginx работает от nginx, и --uid-owner nginx и нико кроме nginx не будет туда попадать
Dimanych, значит как и было задумано nginx работает от nginx, и --uid-owner nginx и нико кроме nginx не будет туда попадать
Бывают системы, где апач и nginx работают из под одинакового пользователя (напр, nobody).
А то ведь получается что любой локальный пользователь сервера (хостинга) может сделать запро на localhost:8080 и передать апачу любой Remote-Addr, получается что так можно подделать Remote-Addr, и пхп будет считать его за оригинальный
Если весь этот геморой вам нужно для того, чтобы локальные пользователи "не подделали" Remote_Addr - успокойтесь, не подделают :-) Бегом гуглить на тему как заполняется эта переменная. К nginx-у придет коннект с одного из IP сервера (например, 127.0.0.1) - он
заполнит нужную переменную соответственно.
myhand, это заголовок он так назвал, так что подделают. извиняюсь, я и сам не сразу вник в суть.
так что подделают. извиняюсь, я и сам не сразу вник в суть.
Таки да, стыдно ((:
Хотя смысл его подделывать мне крайне не очевиден, если nginx просто прозрачно проксирует запросы апачу. DOSить другие хосты на сервере, подставляя левые IP?