Nginx является одним из самых популярных веб-серверов благодаря своей производительности и гибкости. Однако, как и любой другой веб-сервер, он может стать мишенью для различных кибератак.
В этой статье мы рассмотрим основные шаги по настройке безопасности для защиты веб-сервера Nginx на Ubuntu 22.04, с подробными примерами и инструкциями.
Установка и обновление Nginx
Прежде чем начать настройку безопасности, необходимо установить и обновить Nginx до последней версии.
-
Установка Nginx:
shsudo apt update sudo apt install nginx
-
Обновление Nginx:
shsudo apt update sudo apt upgrade nginx
Настройка файрвола (UFW)
UFW (Uncomplicated Firewall) — это простой инструмент для управления iptables. Настроим файрвол, чтобы разрешить только необходимые порты.
-
Разрешение SSH, HTTP и HTTPS трафика:
shsudo ufw allow OpenSSH sudo ufw allow 'Nginx Full'
-
Включение файрвола:
shsudo ufw enable
-
Проверка статуса UFW:
shsudo ufw status
Настройка SSL/TLS
Использование SSL/TLS для шифрования трафика — это обязательный шаг для обеспечения безопасности веб-сервера. Мы используем Let's Encrypt для получения бесплатного SSL-сертификата.
-
Установка Certbot:
shsudo apt install certbot python3-certbot-nginx
-
Получение и установка сертификата:
shsudo certbot --nginx
-
Автоматическое обновление сертификатов: Certbot автоматически настраивает cron-задачу для обновления сертификатов. Проверить конфигурацию можно так:
shsudo systemctl list-timers | grep certbot
Пример конфигурации Nginx для SSL:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Защита от DDoS-атак
-
Установка модуля
ngx_http_limit_req_module
: Этот модуль позволяет ограничивать количество запросов от одного IP-адреса. -
Настройка ограничения количества запросов: Откройте конфигурационный файл Nginx, например:
shsudo nano /etc/nginx/nginx.conf
Добавьте следующие строки в блок
http
:nginxhttp { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { ... location / { limit_req zone=one burst=5 nodelay; ... } } }
Эта конфигурация ограничивает запросы до 1 запроса в секунду с burst до 5 запросов без задержки.
-
Перезагрузка Nginx для применения изменений:
shsudo systemctl reload nginx
Защита от кибератак с помощью fail2ban
Fail2ban — это инструмент, который защищает сервер от попыток взлома путем блокировки IP-адресов с подозрительной активностью.
-
Установка fail2ban:
shsudo apt install fail2ban
-
Создание конфигурационного файла для Nginx: Создайте файл
/etc/fail2ban/jail.local
и добавьте в него:sh[nginx-http-auth] enabled = true filter = nginx-http-auth action = iptables[name=HTTP, port=http, protocol=tcp] logpath = /var/log/nginx/error.log maxretry = 3
Также создайте файл фильтра
/etc/fail2ban/filter.d/nginx-http-auth.conf
:sh[Definition] failregex = no user/password was provided for basic authentication.*client: <HOST>
-
Перезапуск fail2ban для применения изменений:
shsudo systemctl restart fail2ban
Ограничение размера загрузок
Ограничение размера загружаемых файлов помогает предотвратить DoS-атаки и использование избыточных ресурсов.
-
Настройка максимального размера загрузки: Откройте конфигурационный файл Nginx, например:
shsudo nano /etc/nginx/nginx.conf
Добавьте или измените директиву
client_max_body_size
:nginxhttp { ... client_max_body_size 10M; ... }
-
Перезагрузка Nginx для применения изменений:
shsudo systemctl reload nginx
Обновление и патчинг системы
Регулярное обновление операционной системы и установленных пакетов помогает защитить сервер от уязвимостей.
-
Обновление системы:
shsudo apt update sudo apt upgrade
-
Настройка автоматических обновлений: Установите пакет
unattended-upgrades
для автоматического обновления безопасности.shsudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades
Защита конфигурационных файлов
-
Настройка прав доступа к конфигурационным файлам Nginx:
shsudo chown -R root:root /etc/nginx sudo chmod -R 644 /etc/nginx
-
Ограничение доступа к критическим файлам: Убедитесь, что файлы конфигурации доступны только пользователю root.
shsudo chmod 600 /etc/nginx/nginx.conf sudo chmod 600 /etc/nginx/sites-available/default
Заключение
Настройка безопасности для защиты веб-сервера Nginx на Ubuntu 22.04 включает в себя несколько важных шагов, таких как настройка файрвола, использование SSL/TLS, защита от DDoS-атак и использование инструмента fail2ban.
Эти меры помогут значительно повысить уровень безопасности вашего веб-сервера и защитить его от множества потенциальных угроз.
Регулярное обновление системы и настройка прав доступа к конфигурационным файлам также играют ключевую роль в обеспечении безопасности.
Реклама Google |
|
Внимание! Данная статья не является официальной документацией.Использование информации необходимо выполнять с осторожностью, используя для этого тестовую среду.
Если у вас есть вопросы о построении современных систем резервного копирования, репликации, синхронизации данных и защиты от программ вымогателей обратитесь в нашу компанию для получения консультации о современных технологиях резервного копирования и восстановления данных. Наша компания имеет более чем 20-летний опыт в этой области. |
Десять лучших практик резервного копирования в Казахстане
- Защита гипервизора oVirt — глубокое погружение
- Перенос виртуальной машины из oVirt в Proxmox
- Как перенести виртуальную машину из Proxmox в oVirt
- Защита контейнеров Kubernetes — глубокое погружение
- Как защитить гипервизор Proxmox от взлома - Глубокое погружение
- Использование Fail2Ban для защиты oVirt - Глубокое погружение
- Организация резервного копирования гипервизора oVirt — Глубокое погружение
- Перенос виртуальной машины между гипервизорами Proxmox
- Конфигурация гипервизора Proxmox для оптимальной работы виртуальных машин
- Защита root после взлома SSH на Proxmox - глубокое погружение