Настройки конфигурации Apache для определенного порта (соответствие PCI) - PullRequest
3 голосов
/ 08 марта 2012

Я пытаюсь сделать мой сервер совместимым с PCI.Одна из последних проблем, которую мне нужно исправить, это удалить INode из заголовка Apache ETag.Поэтому я определил в httpd.conf эту строку: «FileETag MTime Size», чтобы возвращать только MTime и Размер .

<Directory "/var/www/html">
    Options FollowSymLinks

    AllowOverride None

    Order allow,deny
    Allow from all

    FileETag MTime Size
</Directory>

Это исправление решило проблему для стандартного порта80.

Теперь у меня также есть панель управления хостингом (ISPConfig3), работающая на порту 8000. После выполнения теста на соответствие PCI я получил эту ошибку:

В заголовке Apache ETag указаны номера инодов. Серьезность: Потенциальная проблема CVE: CVE-2003-1418 Воздействие. Удаленный злоумышленник может определить номера узлов на сервере.Разрешение Используйте директиву http://httpd.apache.org/docs/2.2/mod/core.html#FileETag FileETag, чтобы удалить компонент INode из расчета ETag.Например, поместите следующую строку в файл конфигурации Apache, чтобы рассчитать ETag, основываясь только на времени и размере изменения файла: FileETag Сведения об уязвимости размера MTime: Служба: 8000: TCP

Я предполагаю, что имеючтобы добавить что-то в httpd.conf, также примените FileETag ко всем приложениям, работающим на порту 8000.

Пожалуйста, посоветуйте, что нужно сделать.

Спасибо!Kelvin

Ответы [ 3 ]

3 голосов
/ 09 марта 2012

Похоже, ваш тест на соответствие PCI устарел.Читали ли вы CVE-2003-1418 ?

Apache HTTP Server 1.3.22 - 1.3.27 на OpenBSD, позволяющий удаленным злоумышленникам получать конфиденциальную информацию через(1) заголовок ETag, который показывает номер индекса, или (2) составную границу MIME, которая показывает дочерние идентификаторы процесса (PID).

[My Ital ] Thisне проблема для Apache 2.2, который использует другой алгоритм Etag.И если вы все еще используете Apache 1.3, то у вас есть большие проблемы, поскольку он больше не поддерживается.

Вы пытаетесь решить не проблему.Получите текущий набор тестов на соответствие PCI.

1 голос
/ 16 февраля 2013

Добавьте это в начало вашего /etc/apache2/http.conf:

#PCI Compliance fix for "Apache ETag header discloses inode numbers"
Header unset ETag
FileETag MTime Size

Это сработало для моего сканирования на соответствие PCI, и я не понимаю, почему это не сработает на всех портах, которые слушает apache.

0 голосов
/ 11 января 2019

Per Документация директивы Apache 2.4 FileETag по умолчанию для расчета ETag используется MTime Size.

Для Apache версий 2.3.14 и более ранних по умолчанию установлено значение INode MTime Size.

Настройки ETag для всех портов и проверка вывода Apache ETag

Вы можете проверить сами, используя curl и сравнив значение ETag, возвращаемое в заголовках, со значением inode, возвращаемым ls.

Например:

 curl -I https://example.com/file

где file - это файл в вашей файловой системе, обслуживаемый вашим веб-сервером Apache.

Если ETag установлен на MTime Size, вы можете увидеть что-то вроде этого:

ETag: "3-24f10051b181e"

Вы можете изменить значения, возвращаемые ETag, используя директиву FileETag. Добавьте в конец файла Apache сервера conf (например, /etc/httpd/conf/httpd.conf) следующий файл:

FileETag INode

Перезагрузите или перезапустите Apache, а затем повторите тест скручивания.

В моих тестах включение INET FileETag в конфигурационный файл сервера влияло на вывод на ВСЕ порты, обслуживаемые моим веб-сервером Apache: 80 и 443.

Если для ETag установлено значение INode, вы должны получить одно шестнадцатеричное число, например:

ETag: "200f8fa"

Преобразовать числа, возвращаемые ETag, из шестнадцатеричного в десятичное и сравнить с номером инода.

Если вы запускаете ls -i /path/to/webroot/example.com/file, возвращаемый индекс должен быть десятичным эквивалентом шестнадцатеричного числа, возвращенного через ETag (в этом примере 33618170).

Если вы добавили FileETag Inode, не забудьте удалить его и перезапустить / перезагрузить Apache.

Настройки ETag для определенного порта

Контексты, в которых вы можете использовать FileETag:

  • настройка сервера
  • виртуальный хост
  • каталог
  • .htaccess

Если в конфигурации сервера присутствует FileETag с ключевыми словами компонента, которые вы хотите, и вы все еще видите неправильный вывод ETag для определенного порта, который обслуживает Apache, вам следует поискать файлы конфигурации vhost и корневые веб-каталоги для FileETag - как и любые настройки там будут переопределять конфигурацию сервера.

Если вы действительно хотите иметь определенный выход ETag на конкретном порту, вы должны добавить FileETag в соответствующий блок VirtualHost для порта, на который вы хотите повлиять. Если вы обслуживаете более одного сайта на этом порту, вам нужно добавить FileETag к каждому блоку VirtualHost, который указывает этот порт.

...