Clickjacking - это вредоносная техника, при которой злоумышленник обманом заставляет пользователя нажать на скрытый элемент, что может привести к несанкционированным действиям в веб-приложении. Это серьезная проблема безопасности, которая может затронуть различные веб-сайты и приложения.
Apache, являющийся одним из наиболее распространенных веб-серверов, часто становится мишенью для таких атак. К счастью, существуют меры, которые можно применить для предотвращения clickjacking на Apache.
Настроив определенные HTTP-заголовки, вы сможете защитить свой сервер Apache и работающие на нем приложения от атак clickjacking.
Шаги по предотвращению clickjacking на Apache
Запустите терминал.
Включите модуль заголовков для Apache.
1 | sudo a2enmod headers |
- В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
- В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Откройте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/sites-enabled/000-default.conf |
Найдите раздел, в котором нужно применить защиту от перехвата кликов, например, в определенном VirtualHost или директиве Directory.
1 2 3 4 5 6 7 8 | <VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Добавьте следующую строку, чтобы установить для заголовка X-Frame-Options значение SAMEORIGIN или DENY.
1 2 3 4 5 6 7 8 9 10 11 | <VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html Header set X-Frame-Options "SAMEORIGIN" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Это гарантирует, что страница может быть показана во фрейме только на домене того же происхождения, что и сама страница. Если вы хотите запретить любому домену помещать содержимое во фрейм, вместо SAMEORIGIN можно использовать DENY.
Сохраните файл конфигурации и выйдите из текстового редактора.
Перезапустите службу Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Проверьте конфигурацию, просмотрев HTTP-заголовки вашего сайта с помощью инструментов разработчика браузера или командной строки.
1 | curl -I 127.0.0.1 |
Пример вывода
1 2 3 4 5 6 7 | HTTP/1.1 200 OK ... Accept-Ranges: bytes Content-Length: 10671 Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN Content-Type: text/html |
Убедитесь, что заголовок "X-Frame-Options" правильно установлен в заголовках ответа, чтобы подтвердить, что защита активна.