Защитить web сервер linux

Рекомендации по защите: Web-серверы. Linux

Web-серверы — неотъемлемая часть инфраструктуры практически любой компании. Они являются теми посредниками, с помощью которых функционирует ваш ресурс и неважно, сайт-визитка это или целая социальная сеть с количеством зарегистрированных пользователей более миллиона.

Естественно, при такой массовости данного класса ПО они часто становятся целью злоумышленников. При этом цели хакеров могут варьироваться от атак «for fun» до атак с целью перехвата трафика пользователей для получения критичной информации, номеров карт и прочего. Также целью может служить использование веб-сервера как «входной» точки в локальную сеть компании. Поэтому грамотная настройка безопасности — один из немаловажных этапов при развёртывании любого веб-ресурса. Далее мы коснёмся общих настроек наиболее часто используемых серверов на ОС Linux: Apache и nginx. Меры, предлагаемые в данной статье, применимы и к другим серверам, хотя их конфигурация будет отличаться.

Обратите внимание: в тексте мы не будем рассматривать анализ кода самого веб-ресурса, настройку DMZ для веб-сервера, а также конфигурацию прочих сервисов, таких как SSH, о настройке которого можно прочитать здесь. Но если вы хотите повысить безопасность вашей компании, не игнорируйте все эти меры!

Рекомендации по защите

1. Обновляйтесь. Несмотря на то, что данная рекомендация звучит везде и всегда, почему-то до сих пор ею пренебрегают. И часто именно несвоевременное обновление приводит к крайне печальным последствиям.

2. Изолируйте работу веб-сервера, если это возможно. Docker или chroot — отличный способ оградить ПО и не дать злоумышленнику проникнуть дальше в систему в случае компрометации. Не забывайте, что в обоих случаях в контейнере/chroot-системе должен быть «минимум» ПО: если какая-то утилита не нужна, то она должна быть вырезана. И данная мера не поможет, если была скомпрометирована основная система, а не веб-сервер.

Читайте также:  Comodo antivirus для linux установка

3. Удалите «дефолтный» контент. Он служит только для диагностики того, что веб-сервер запустился и работает. А злоумышленнику он поможет узнать, какое ПО используется.

4. Уменьшите информацию, возвращаемую сервером.

 # Apache: ServerTokens Prod ServerSignature Off 

5. Составьте список модулей, которые вам действительно необходимы, остальные же требуется удалить. Например, если ваш сервис не подразумевает управление файлами для клиентов, смело комментируйте нужные строки c модулем WebDAV в файле конфигурации

 httpd.conf (Apache): ##LoadModule dav_module modules/mod_dav.so ##LoadModule dav_fs_module modules/mod_dav_fs.so 

Другой пример — autoindex, позволяющий автоматически создать структуру директорий. Рекомендуется делать это вручную, оставив только необходимые файлы и папки. Для отключения необходимо закомментировать следующие строки:

 ## LoadModule autoindex_module modules/mod_autoindex.so 

Из подобных модулей для Apache вас могут заинтересовать mod_userdir, mod_status, mod_info и прочие. Для nginx подобными модулями могут быть http_autoindex_module или http_ssi_module.

Чтобы просмотреть список доступных модулей, необходимо ввести команду:

 #nginx: nginx -V 2>&1|xargs -n1|grep module 
 #Apache: httpd –M / apachectl –M / apache2 –M / apache2ctl –M # в зависимости от ОС, подойдёт одна из перечисленных. 

6. Отключайте ненужные опции для директорий. В директории нет исполняемого контента? Отключайте ExecCGI. Не требуется FollowSymlinks? Смело удаляйте. А если опция все же требуется, смотрите на SymLinksIfOwnerMatch.

7. Настройте фильтры для файлов. Здесь каждая настройка уникальна, суть её сводится к тому, чтобы пользователь мог получать доступ только к тем файлам, которые ему необходимы. Таким образом, можно заблокировать выполнение PHP в различных директориях, доступ к служебным папкам и прочее.

8. Внимательно проверяйте CGI. У CGI довольно богатая история, связанная с различными инцидентами безопасности. И даже несмотря на то, что сейчас он считается относительно безопасным, рекомендуется удалять скрипты, которые вам не требуются и которые могут привести к неожиданным последствиям. Такими, например, являются printenv и test-cgi.

Читайте также:  Samba in linux and windows

9. Отключите неиспользуемые HTTP-методы. Trace, который часто используется при дебаге, в продуктивной среде может привести к получению cookie сторонним лицом, а выключить его зачастую забывают. Для отключения следует добавить в конфигурацию следующие строки:

 #nginx: if ($request_method !~ ^(GET|HEAD|POST|PATCH)$ )
 #Apache: TraceEnable off # В конфигурации сервера … Require all denied 

10. Отключайте старые версии HTTP. Версии ранее 1.1 не должны поддерживаться, а на текущий момент происходит миграция на более быстрый HTTP/2. Старые и некорректные версии HTTP позволяют отследить специальные модули для web-серверов, повышающие безопасность, о которых будет сказано далее.

11. Отключите доступ к сайту по IP. Большинство обычных пользователей подключаются к сайту по доменному имени, в то время как сканеры, анализирующие веб в поисках уязвимого софта, «идут» по IP-адресам.

 #Apache: ServerName www.yoursite.ru 
 #nginx: server < server_name www.yoursite.ru; >Также в некоторых случаях возможно использование редиректа, например: Redirect permanent / www.yoursite.ru 

12. Указывайте конкретный IP-адрес, на котором веб-сервер должен обслуживать клиентов. Это избавит от проблем, вызванных добавлением новых интерфейсов и отсутствием либо некорректной настройкой межсетевого экрана.

 #Apache: Listen 10.10.10.10:80 Listen [2001:11d8:1311:0:a221:18:e416:cb11]:80 

Источник

Оцените статью
Adblock
detector