news
Serverspace добавил возможность подключения S3 к сервису CDN
VB
18 мая 2023
Обновлено 25 августа 2023

Безопасность Nginx. Контроль ресурсов и ограничения

Nginx

Nginx — на сегодняшний день один из самых популярных веб-серверов, и эта популярность обусловлена тем, что он очень быстро и легко настраивается. Обратная сторона такой популярности — этот веб-сервер часто становится целью вредоносных атак. И в один не особенно прекрасный день вы можете столкнуться с ситуацией, когда ваш не имеющий лимитов nginx «упал» после того, как израсходовал доступные системные ресурсы. Поэтому стоит контролировать и ограничивать ресурсы, потребляемые Nginx.

Все ограничения задаются в конфигурационном файле nginx. Здесь будет описан один из вариантов настройки на примере Ubuntu 20.04. Ограничения вносятся в файл /etc/nginx/nginx.conf. Каждая директива должна заканчиваться точкой с запятой. Далее будут описаны наиболее важные параметры.

Глобальные настройки

Эти настройки повлияют на весь сервер. Описание параметров:

  • worker_connections — этот параметр определяет, сколько одновременных соединений возможно для одного воркера (специального процесса, который взаимодействует между nginx и ядром операционной системы). Оптимальное количество таких процессов зависит от того, сколько ядер процессора и оперативной памяти имеет ваш сервер;
  • multi_accept и multi_accept — эти директивы позволяют воркерам обрабатывать несколько процессов. Создается очередь, задачи в которой обрабатываются одна за другой;
  • multi_accept_delay — этот параметр определяет задержку между обрабатываемыми задачами;
  • use — метод обработки. Лучший выбор для серверов Linux — epoll.
  • limit_conn — эта директива ограничивает количество одновременных соединений. Указывать ее можно в разных секциях конфигурационного файла, система работает до достижения первого из заданных ограничений. На скриншоте ниже показан пример, где общее доступное количество подключений равно 5 с одного IP-адреса, а на папку /download таких подключений может быть только 2:

Глобальные настройки Nginx

Дисковые операции

Настройки в этой секции определяют, как именно nginx будет работать с диском:

  • sendfile on — эта опция позволяет веб-серверу «обмениваться» данными небольших файлов в пространстве ядра ОС, не отправляя их в пространство приложения, тем самым значительно ускоряя работу nginx;
  • aio on — эта директива разрешает многопоточные операции чтения/записи на диск.

Настройка дисковых операций

Сжатие и кэширование

Вы можете кэшировать некоторые данные, чтобы заставить nginx работать быстрее. Сжатие в свою очередь уменьшит поток отправляемого веб-сервером трафика:

  • gzip on — эта опция включает сжатие;
  • gzip_comp_level — уровень сжатия. Чем выше цифра, тем более сильное сжатие будет применяться;
  • gzip_types – определяет, файлы каких типов будут сжиматься. Например. текст хорошо сжимается, а картинки сжимать никакого смысла нет.
  • open_file_cache — этот параметр разрешает кеширование файлов;
  • open_file_cache_valid — время хранения кеша;
  • open_file_cache_errors — эта опция позволяет кэшировать ошибки типа «отказано в доступе». Это может быть полезно для предотвращения массовых одновременных атак;

Настройки сжатия и кэширования

Настройки безопасности

Вы можете ограничить доступ для парсеров, ботов, загрузчиков ит.д. Просто добавьте показанную ниже конструкцию в описание раздела, доступ к которому нужно ограничить. Чаще всего доступ ботам запрещают глобально ко всему сайту:

if ($http_user_agent ~* LWP::curl|wget|*bot) {
return 403;
}

Настройки безопасности NginX

Кроме того, вы можете вообще разрешить доступ к некоторым разделам веб-сайта только с определенных IP-адресов. Может быть полезно, например, ограничить таким образом доступ к административной части вашего сайта:

location /admin/ {
## Разрешаем доступ с вашего IP
allow xxx.xxx.xxx.xxx/32;
## Блокируем подключение с любых других адресов
deny all;
}

Запрет доступа по IP

Заключение

В этой статье описано, как оптимизировать работу сервера nginx, и приводится несколько советов по повышению уровня безопасности.

Оценка:
4 из 5
Аverage rating : 4.6
Оценок: 5
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...