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.
Эти меры помогут значительно повысить уровень безопасности вашего веб-сервера и защитить его от множества потенциальных угроз.
Регулярное обновление системы и настройка прав доступа к конфигурационным файлам также играют ключевую роль в обеспечении безопасности.
| Реклама Yandex | 
|  | Внимание! Данная статья не является официальной документацией.Использование информации необходимо выполнять с осторожностью, используя для этого тестовую среду.
 
 Если у вас есть вопросы о построении современных систем резервного копирования, репликации, синхронизации данных и защиты от программ вымогателей обратитесь в нашу компанию для получения консультации о современных технологиях резервного копирования и восстановления данных. Наша компания имеет более чем 20-летний опыт в этой области. | ||||
Десять лучших практик резервного копирования в Казахстане
- Перенос гипервизора Proxmox на новый физический сервер
- Использование OpenShift для контейнеров Docker — глубокое погружение
- Использование Wazuh для мониторинга безопасности Proxmox
- Установка, настройка и использование Fail2Ban на zVirt
- Установка, настройка и использование Graylog Community Edition в Proxmox
- Установка, настройка и использование Elasticsearch в Proxmox
- Установка, настройка и использование Kibana в Proxmox
- Установка, настройка и использование Logstash в Proxmox
- Использование ИИ для анализа логов Proxmox
- Установка, настройка и использование Ceph в OpenStack
 
                    
