У всех юзеров одинаковые IP

Господа, помогите пожалуйста!
У меня в Админпанели (версия 1.2) у всех юзеров один и тот же IP. Причем это IP моего сервера. Соответственно, ни о каком бане не может быть и речи (я так понимаю).

Подскажите где копать? В чем может быть проблема?

14 комментариев

avatar
У Вас вероятнее всего стоит nginx, а за ним apache.
Для исправления данной неприятности нужно установить в апач mod_rpaf и настроить конфиг апача.
Подробнее www.mchost.ru/module-doc/id-60/page-43.html
  • rere
  • 0
avatar
спасибо!!!
avatar
mod_rpaf ставить не обязательно, достаточно в конфиге nginx установить, например, заголовок HTTP_X_REAL_IP и заменить функцию func_getIp():
function func_getIp() {    	
    if (isset($_SERVER['HTTP_X_REAL_IP'])) {
    	return $_SERVER['HTTP_X_REAL_IP'];	
    } else {
    	return $_SERVER['REMOTE_ADDR'];
    }    
}
avatar
Спасибо!
avatar
Прошу прощения, а не могли бы Вы подсказать, где в конфиге nginx установить заголовок HTTP_X_REAL_IP. Как это должно выглядеть? Заранее СПС!
avatar
В данной ситуации это будет ошибой в безопасности.
Причины:
NGINX обращается к Apache через ip-сервера, а не через 127.0.0.1 (стандартная ситуация для серверов с ISPmanager)
Соотвественно Apache в данной ситуации слушает внешние адреса.
Вывод: любой пользователь может минуя Nginx подключиться к Apache и отправить любой айпи в HTTP_X_REAL_IP.
avatar
зачем делать доступ к апачу из вне? например, порт 81 нужно закрывать и давать доступ только к 80
avatar
зачем делать доступ к апачу из вне? например, порт 81 нужно закрывать и давать доступ только к 80

стандартная ситуация для серверов с ISPmanager

Не я делаю ISPmanager. Этот вопрос лучше задать напрямую к ISPsystem
Темболее такая ситуация может быть не только на серверах с ISPmanager. Соответсвенно если есть угроза безопасности, то лучше использовать проверенное, правильное, решение, а не эту функцию, которая даже не проверяет входящие данные на валидность.
avatar
Не я делаю ISPmanager. Этот вопрос лучше задать напрямую к ISPsystem
на текущем сервере у меня нет проблем с ISPmanager — порт 81 закрыт, всё работает
avatar
Для этого нужно возиться с ISPmanager. В стандартном функционале Nginx общается с Apache через внешние IP.
Темболее AVR сказал:
это IP моего сервера

Если человек подробно описал проблему, зачем ему давать решение, которое решит его проблему, но вызовет ошибку в безопасности сайта?

Вообще разговор ушёл от темы. В любом случае правильнее ставить модуль, чтобы правильные ip-адреса показывались для ВСЕХ сайтов, на ВСЕХ движках, а не только для livestreet, в котором был изменён код.
avatar
Соответсвенно если есть угроза безопасности, то лучше использовать проверенное, правильное, решение, а не эту функцию, которая даже не проверяет входящие данные на валидность.
я не спорю, что через mod_praf неправильно или хуже. Просто показал альтернативный вариант, который вполне может быть работоспособным и безопасным при правильном подходе
avatar
Максим, пардон, а выглядеть это будет в nginx.conf так вот прям:

HTTP_X_REAL_IP
function func_getIp() {
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
return $_SERVER['HTTP_X_REAL_IP'];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
??
avatar
Блин, дурь сморозил — жаль нельзя коммент стереть.

А где функцию менять? ))) (так вопрос надо поставить)
avatar
Можно воспользоваться поиском по сорцам… :)

Но дабы избавити вас от этого унылого занятия скажу прямо:
эту функцию надо править в файле livestreet/include/function.php.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.