Security tips

SSL

Предоставляет шифрование соединения сайта, повышение его в поисковой выдаче и подтверждает аутентичность сайта.

Инструкция к получению SSL сертификата: Lets Encrypt

SSL


SSH

  • SSH-ключи, а не пароли
    Пароли подбираются
  • Используй актуальные алгоритмы шифрования и размеры ключей
  • Следи за файловыми permission-ами на SSH-ключи
  • fail2banfail2ban

ssh


Защита ОС

  • Вовремя обновляй ядро, пакеты (apt upgrade) и дистрибутив (do-release-upgade)

  • Используй unattended-upgradesunattended-upgrades
    Пакет, который реализует механизм автоматических обновлений.
    Настраивается, по дефолту настроен на security upgrades (обновления пакетов только из security-репозитория).
    Является родным механизмом для Debian-based дистов.

  • Для “технических” юзеров используй shell /usr/sbin/nologin или просто /sbin/nologin
    Даже если такая учётка скомпрометируется - войти в консоль с ней не удастся
    Такие юзеры используются для запуска скриптов и т.д.

  • Бэкапыbackup

  • auditd (Linux Audit Daemon)auditd
    Позволяет отслеживать многие типы событий:

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

Настройки ядра (Sysctl)

/etc/sysctl.conf - конфиг-файл для установки системных переменных. Загружаются и применяются во время запуска системы.

# Защита от атак, связанных с выполнением вредоносного кода
kernel.exec-shield=1
kernel.randomize_va_space=1
 
# Включает защиту от подмены IP-адресов
net.ipv4.conf.all.rp_filter=1
 
# Отключение маршрутизации IP-источников
net.ipv4.conf.all.accept_source_route=0
 
# Игнорирование широковещательных запросов
net.ipv4.icmp_echo_ignore_broadcasts=1
 
# Настройка, обеспечивающая логирование поддельных пакетов
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
 
# Отключение перенаправления маршрутизации IGMP
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
 
# Отключает ключ magic-sysrq
kernel.sysrq = 0
 
# Отключает tcp_sack
net.ipv4.tcp_sack = 0
 
# Отключает tcp_timestamps
net.ipv4.tcp_timestamps = 0
 
# Включает защиту от TCP SYN Cookie
net.ipv4.tcp_syncookies = 1
 
# Включает защиту от плохих сообщений об ошибках
net.ipv4.icmp_ignore_bogus_error_responses = 1

Чтобы подтянуть настройки нужно:

sudo sysctl -p

sysctl

Поиск руткитов, бэкдоров и локальных уязвимостей

rkhunterrkhunter


Wordpress

  • Защити доступ к web-UI админки SSL-сертификатом и ограничь туда кол-во попыток логина
  • Юзай всякие security plugins в wordpress
  • Запрети запуск PHP-скриптов из untrusted директорий
  • Разграничивай роли юзеров wordpress
  • Переименуй юзера Admin…

wordpress


MySQL

  • Разграничивай роли юзеров MySQL
  • Запрети удаленный доступ в root
  • Юзай TLS для защиты соединений с БД
  • Юзай скрипт mysql_secure_installation

mysql


Nginx

  • Выставь server_tokens off
    Позволяет не выдавать версию nginx.
    Знание версии любого приложения сужает круг поиска уязвимостей.

  • Отключи неиспользуемые http-методы

  • Юзай WAF (opensource WAF - mod_security)

  • Включи логи и мониторь их

  • Выставь выбор шифров на стороне сервера
    ssl_prefer_server_ciphers on

nginx

Заголовки безопасности

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN"
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always
add_header X-XSS-Protection "1; mode=block"

Prometheus

Настрой базовую http-аутентификацию: Prometheus basic auth

prometheus


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