Linux

sysctl

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

/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

sshd

/etc/ssh/sshd_config
Port 2886
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM no

Wordpress

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

MySQL

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

Nginx

  • server_tokens off
    Позволяет не выдавать версию nginx, cuz знание версии любого приложения сужает круг поиска уязвимостей.
  • Отключи неиспользуемые http-методы
  • NGINX ModSecurity WAF
  • ssl_prefer_server_ciphers on
  • Security headers idk