Уязвимость HTTPOXY: как защитить и протестировать веб-сервер
На этой странице
- 1 Как HTTPOXY влияет на мой сервер?
- 1.1 Общее решение
- 2.2 Debian 8 (Джесси) с Apache
- 2.2 Debian 7 (Wheezy) с Apache
- 2.3 Debian с Nginx
- 3.1 Ubuntu с Apache
- 3.2 Ubuntu с Nginx
- 4.1 Апач
- 4.2 Nginx
Обнаруженная недавно уязвимость HTTPOXY затрагивает приложения, работающие в cgi или CGI-подобных средах. Это означает, что проблема затрагивает почти все веб-серверы, включая Apache и Nginx, а также большинство приложений PHP. Это влияет даже на режим mod_php в apache.
В этом руководстве показано, как защитить ваш веб-сервер от HTTPOXY. Он содержит разделы для наиболее часто используемых дистрибутивов Linux CentOS + RHEL, Debian и Ubuntu. Эти шаги можно применить и к другим дистрибутивам Linux, но пути к файлам конфигурации могут отличаться.
Подробное описание уязвимости HTTPOXY можно найти на этом сайте https://httpoxy.org/.
Шаги, описанные в этом руководстве, совместимы с руководствами ISPConfig perfect server.
1 Как HTTPOXY влияет на мой сервер?
HTTPOXY влияет на клиентов, которые учитывают переменную HTTP_PROXY и используют ее для конфигурации своих прокси-серверов, а также серверные приложения, которые используют HTTP_PROXY как реальную или эмулируемую переменную в своей среде. Результатом атаки может быть трафик, который веб-приложение проксирует в целевую систему, выбранную злоумышленником, или приложение открывает исходящие соединения с другими системами. Уязвимость легко использовать удаленно, и серверы могут быть просканированы на ее наличие, поэтому настоятельно рекомендуется предпринять действия, чтобы закрыть ее на вашем сервере.
1.1 Общее решение
На данный момент рекомендуемое решение – отключить или отфильтровать переменную заголовка HTTP_PROXY. Это делается в apache с помощью модуля mod_headers и этого оператора конфигурации:
RequestHeader unset Proxy early
В Nginx вы можете использовать эту строку для сброса переменной HTTP_PROXY.
fastcgi_param HTTP_PROXY "";
В следующей главе подробно описывается процедура для различных дистрибутивов Linux.
2 Дебиан
В этой главе описывается конфигурация для защиты Apache и Nginx на серверах Debian 8 (Jessie) и Debian 7 (Wheezy) от HTTPOXY. Следующие шаги предполагают, что вы вошли в систему как пользователь root в оболочке. Если вы вошли в систему под другим пользователем, используйте команду su (или sudo, если вы настроили sudo), чтобы стать пользователем root.
2.2 Debian 8 (Джесси) с Apache
Включить модуль заголовков apache
a2enmod headers
Добавьте файл глобальной конфигурации /etc/apache2/conf-available/httpoxy.conf. Здесь я буду использовать редактор nano:
nano /etc/apache2/conf-available/httpoxy.conf
и вставьте в этот файл следующее содержимое:
<IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule>
Сохраните файл. Затем включите его в конфигурации с помощью команды a2enconf и перезапустите apache.
a2enconf httpoxy
service apache2 restart2.2 Debian 7 (Wheezy) с Apache
Включите модуль заголовков Apache:
a2enmod headers
Добавьте файл глобальной конфигурации /etc/apache2/conf.d/httpoxy.conf. Здесь я буду использовать редактор nano:
nano /etc/apache2/conf.d/httpoxy.conf
и вставьте в этот файл следующее содержимое:
<IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule>
Сохраните файл. Затем перезапустите апач.
service apache2 restart
2.3 Debian с Nginx
Следующая команда добавит параметр fastcgi_param, который задает для переменной HTTP_PROXY пустую строку, в файл /etc/nginx/fastcgi_params.
echo 'fastcgi_param HTTP_PROXY "";' >> /etc/nginx/fastcgi_params
Затем перезапустите nginx, чтобы применить изменения конфигурации.
service nginx restart
3 Убунту
В этой главе описывается конфигурация для защиты Apache и Nginx на серверах Ubuntu 14.04–16.04 от HTTPOXY.
3.1 Ubuntu с Apache
Включите модуль заголовков Apache.
sudo a2enmod headers
Добавьте файл глобальной конфигурации /etc/apache2/conf-available/httpoxy.conf. Здесь я буду использовать редактор nano:
sudo nano /etc/apache2/conf-available/httpoxy.conf
и вставьте в этот файл следующее содержимое:
<IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule>
Сохраните файл. Затем включите его в конфигурации с помощью команды a2enconf и перезапустите apache.
sudo a2enconf httpoxy
sudo service apache2 restart3.2 Ubuntu с Nginx
Шаги по защите Ubuntu от HTTPOXY аналогичны шагам для Debian. Нам просто нужно убедиться, что команды выполняются с помощью sudo. Эта команда echo добавит строку fastcgi_param, которая устанавливает переменную HTTP_PROXY как пустую строку. Файл /etc/nginx/fastcgi_params включен в разделы @PHP и cgi-bin по умолчанию файлов vhost nginx, а также в vhosts, созданные ISPConfig. Если вы добавили пользовательские виртуальные хосты, убедитесь, что они содержат \include /etc/nginx/fastcgi_params;\ в разделах конфигурации для php и других коннекторов cgi или fastcgi.
Выполните следующую команду, чтобы добавить пустую переменную HTTP_PROXY.
sudo echo 'fastcgi_param HTTP_PROXY "";' >> /etc/nginx/fastcgi_params
Затем перезапустите Nginx, чтобы применить изменения конфигурации.
sudo service nginx restart
4 CentOS, RHEL и Fedora
В этой главе описывается конфигурация для защиты Apache и Nginx на серверах CentOS от HTTPOXY. Те же шаги должны работать и для серверов Fedora. Войдите в систему как пользователь root в оболочке, прежде чем выполнять приведенные ниже команды.
4.1 Апач
Файл конфигурации Apache (httpd) в CentOS — это /etc/httpd/conf/httpd.conf. Я добавлю правило заголовка apache в конец файла httpd.conf с помощью этой команды:
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf
Затем перезапустите httpd, чтобы применить изменения конфигурации.
service httpd restart
4.2 Нгинкс
Веб-сервер Nginx в CentOS включает fastcgi_params в раздел PHP и CGI виртуального хоста по умолчанию, поэтому мы можем добавить правило для установки пустой переменной HTTP_PROXY. Запустите эту команду, чтобы добавить пустую переменную HTTP_PROXY.
echo 'fastcgi_param HTTP_PROXY "";' >> /etc/nginx/fastcgi_params
Затем перезапустите nginx, чтобы применить изменения конфигурации.
service nginx restart
5 Тест
Наконец, вы должны проверить, безопасен ли ваш сервер сейчас. Люк Рехман разработал хороший онлайн-инструмент для тестирования, который можно найти здесь: https://httpoxy.rehmann.co/
Введите URL-адрес вашего сервера или веб-сайта в инструмент и нажмите кнопку «Проверить».
Вот результат для linux-console.net. Как видите, наш сайт безопасен.
6 ссылок
- Веб-сайт HTTPOXY
- Спасибо Джесси за рецепт Debian 8.