Инцидент — идеальный момент для системного харденинга. Мы провели полный комплекс мер, который рекомендуем каждому клиенту itfresh.ru после подобных случаев:
# 1. Обновление всей системы
apt update && apt upgrade -y
# 2. Firewall — закрываем всё лишнее
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
# Проверяем
ufw status verbose
# Status: active
# Default: deny (incoming), allow (outgoing), disabled (routed)
# 22/tcp ALLOW IN Anywhere
# 80/tcp ALLOW IN Anywhere
# 443/tcp ALLOW IN Anywhere
# 3. SSH харденинг — /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy
LoginGraceTime 30
X11Forwarding no
AllowTcpForwarding no
# Перезапуск sshd
systemctl restart sshd
# 4. Fail2Ban для защиты от брутфорса
apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 7200
systemctl enable fail2ban
systemctl start fail2ban
# 5. Права доступа WordPress
# Файлы — 644, директории — 755, wp-config — 400
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 400 /var/www/html/wp-config.php
# Запрет записи в директорию плагинов для www-data
chown -R root:root /var/www/html/wp-content/plugins/
chown -R www-data:www-data /var/www/html/wp-content/uploads/
# 6. Запрет выполнения PHP в uploads
# /etc/nginx/snippets/wordpress-security.conf
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
location ~* /wp-content/plugins/.*\.php$ {
deny all;
}
location = /xmlrpc.php {
deny all;
}
# 7. Ограничение возможностей www-data через tmp
# /etc/systemd/system/nginx.service.d/override.conf
[Service]
PrivateTmp=true
NoNewPrivileges=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/var/www/html/wp-content/uploads
После всех мер мы обновили WordPress до последней версии, удалили все неиспользуемые плагины (было 23, осталось 8), и установили Wordfence для мониторинга целостности файлов.
Оставить комментарий