За последние 24 часа нас посетили 18714 программистов и 1703 робота. Сейчас ищут 629 программистов ...

Дыра в Apache? Или ещё что-то?

Тема в разделе "Настройка веб-сервера", создана пользователем Chushkin, 19 дек 2014.

  1. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    там не важно. но меня не замечают. следующий.
     
  2. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Не, нету.

    Добавлено спустя 5 минут 48 секунд:
    Замечают, конечно. Просто на Вашу реплику я ответил постом выше.
    А что непонятно - во фразе: А вот почему всё-таки запрос на 80 порт с IP отличным от 127.0.0.1 попадает к s.site.ru, пока не понятно. (R)
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пардон, проглядел.
    мдя, тут картина странная. по идее паблик дефолт на 80 порту должен быть сайт.ру, но к нему можно сделать запрос указав хост с.сайт.ру. но и в этом случае именно сайт.ру должен разобрать запрос... фигня какая-то...
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    может запрос идёт к порту 8081 и так попадает к s.site.ru в лог из-за этого *:8081 s.site.ru (Z:/usr/local/apache/conf/vhosts.conf:138)
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    server_port об обратном сразу говорит.
     
  6. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Во-во, - меня это и напрягло.
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ganzal, где автор говорит что server_port относится к логу s.site.ru, а не site.ru?

    Chushkin, покажи все настройки apache, попробую у себя протестировать
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в первом и последующих постах. у нас тут как бы всё на доверии)))
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Я понимаю и тоже хочу разобраться, но вот думаю что server_port относится к логу site.ru
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну. верно мыслишь. поскольку это дефолт то к нему можно обратиться с любым именем хоста и именно он его и обработает, следовательно в с.сайт.ру обращения не будет. запросы делаются с указанием хоста в строке запроса (не в отдельном заголовке) следовательно данный хост (сайт.ру) каким-то образом кто-то использует как проксю. и как следствие может быть (я вообще точно не уверен в час ночи) приходящий к паблик:80(сайт.ру) запрос с хостом с.сайт.ру и запросом (тавтология, но разница есть) гет хттп:://яндекс.ру/ сначала проксируется на с.сайт.ру - а сервер знает что у него есть такой хост на локальной петле - после чего уже идет попытка получения хттп:://яндекс.ру/. раз в логе есть статус 200 значит и второй хост успешно принял себя за прокси, сходил на яндекс, стянул страничку, от имени с.сайт.ру на лупбэке отдал страничку запрашивающему процессу сайт.ру на паблике и тот уже отдал страницу пользователю. ну как-то так...
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А я вот воображаю что кто-то просканнировал порты сервера и обнаружил открытыми 80 и 8081 и шлёт на них запросы с левыми host, и вот когда шлют на порт 8081 пишет в лог для s.site.ru так как httpd -D DUMP_VHOSTS показал *:8081 s.site.ru (Z:/usr/local/apache/conf/vhosts.conf:138)
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это слишком очевидно, поэтому не рассматривается ;D
     
  13. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    На форуме нет админов или молчат как партизаны на доросе. :( Пришлось самому разбираться.
    Всё оказалось просто, хотя не без странностей...

    denis01 в общем-то прав, запросы идут на порт 8081 по IP, а в заголовок запроса пихается "левая" инфа.
    И так, если я правильно понял, то вся "проблема" в настройках и алгоритмах апача.
    - SERVER_NAME это каноническое имя хоста
    - SERVER_PORT это канонический номер порта
    Эти значения зависят от UseCanonicalPhysicalPort и UseCanonicalName. Если OFF (default!), то значения устанавливаются, начиная от заголовка запроса. Отсюда и "странные" значения.
    Т.е. 100%-но полагаться в скрипте на SERVER_NAME и SERVER_PORT нельзя (а в логах на %V и %p), т.к. их значения зависят от настроек апача: в них значения подставляется по алгоритму апача (см. доку по UseCanonicalName и по UseCanonicalPhysicalPort).
    Фактически, если был запрос: 'http://95.25.###.###:8081/', а в заголовке: 'Host: пупок.васин:81', то для UseCanonicalName=OFF будет 'SERVER_NAME = пупок.васин' и в логе параметр %V также будет = пупок.васин.
    Для UseCanonicalPhysicalPort=OFF - 'SERVER_PORT=81' и '%p=81'. В теории, по алгоритму. Фактически, у меня почему-то канонический порт в логе (%p) всегда 80, независимо от того, что ставлю в заголовке запроса.
    В логах можно получить локальное имя хоста и физический порт, а вот как это сделать в PHP пока непонятно - если знаете, подскажите.
    В общем, непонятки с (%p %V SERVER_NAME и SERVER_PORT) затуманили мозги - я то думал, что это реальные параметры сервера, а оказалось "канонические".
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Мне ближе nginx, там можно указать default_server и сделать из него заглушку, все левые запросы будут идти к нему, а там отключаем лог и рвём соединение как пример, но я не системный администратор если что.
     
  15. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    В апаче также можно.
    По сути не было "левых" запросов - всё обрабатывалось как положено (по апачевски "положено"), просто надо было знать что именно так будет обработано, чтобы понимать что происходит.