Linux
- Вовремя обновляй ядро, пакеты, дистрибутив
- unattended-upgrades
- Rootkit Hunter
- fail2ban
- ufw
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
sshd
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