Развертывание общедоступного Linux VPS бе�� защитной настройки делает его уязвимым для автоматизированных атак с подстановкой учетных данных, брутфорс-сканирования и эксплойтов повышения привилегий уже через несколько минут после выхода в сеть. В этом контрольном списке мы реализуем архитектуру эшелонированной обороны , соответствующую стандартам Center for Internet Security (CIS) уровня 1.
1. Шаг 1: Применение криптографических SSH-ключей
Отключите всю аутентификацию SSH по паролю и принудительно используйте ��овременные ключи на эллиптических кривых в /etc/ssh/sshd_config:
# /etc/ssh/sshd_config Hardening
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
Сгенерируйте ключи с помощью ssh-keygen -t ed25519 -a 100 на вашей локальной рабочей станции и проверьте соединение перед перезапуском демона SSH с помощью sudo systemctl reload sshd.
2. Шаг 2: Изоляция входящего трафика с помощью Uncomplicated Firewall (UFW)
Установите строгую политику входящего трафика по умолчанию «запретить все» и сделайте общедоступными только необходимые веб-сервисы:
# Reset and enforce default deny
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow HTTP and HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Restrict SSH to custom management subnet if applicable
sudo ufw allow 22/tcp
# Enable and inspect
sudo ufw enable
sudo ufw status verbose
3. Шаг 3: Автоматическое ограничение частоты запросов с помощью Fail2ban
Настройте Fail2ban для мониторинга журналов аутентификации и потоков ошибок HTTP Nginx, автоматически блокируя нарушающие прави��а IP-адреса с помощью iptables:
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 3
banaction = ufw
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/*error.log
maxretry = 2
4. Шаг 4: Аудит CIS & Автоматические обновления безопасности
Включите автоматическую фоновую установку патчей безопасности и выполняйте периодический аудит соответствия требованиям:
# Enable automated security updates
sudo apt install unattended-upgrades update-notifier-common
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Verify /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::Automatic-Reboot "false";
5. Шаг 5: Укрепление безопасности точек монтирования & файловой системы разделяемой памяти
Злоумышленники, получившие ограниченный доступ к оболочке, часто запускают вредоносные бинарные файлы из каталогов, доступных для записи всем, таких как /tmp и /dev/shm. Защитите эти точки монтирования, доб��вив защитные флаги в /etc/fstab:
# /etc/fstab Hardening
tmpfs /tmp tmpfs defaults,nosuid,nodev,noexec,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,nosuid,nodev,noexec,mode=1777 0 0
tmpfs /dev/shm tmpfs defaults,nosuid,nodev,noexec 0 0
Флаг noexec предотвращает выполнение любых бинарных файлов или скриптов непосредственно из каталога, нейтрализуя распространенные случаи размещения шеллов веб-приложений.
6. Шаг 6: Самозащита ядра & Сетевая безопасность с помощью Sysctl
Укрепите сетевой стек Linux против IP-спуфинга, SYN-флуд-атак и манипуляций с перенаправлением ICMP путем настройки /etc/sysctl.d/50-security.conf:
# Reverse Path Filtering (Mitigate IP Spoofing)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignore ICMP Broadcast Requests & Smurf Attacks
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disable ICMP Redirect Acceptance (Mitigate Man-in-the-Middle)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Prevent Rogue Source-Routed Packets
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Protect Hardlinks and Symlinks against TOCTOU Race Conditions
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
# Maximize Address Space Layout Randomization (ASLR)
kernel.randomize_va_space = 2
7. Шаг 7: Автоматизированный аудит соответствия требованиям с помощью Lynis
Регулярно проверяйте соответствие системы стандартам CIS с помощью Lynis — инструмента аудита безопасности с открытым исходным кодом:
# Install and run Lynis security audit
sudo apt install lynis
sudo lynis audit system --quick
# Review Lynis hardening index and generated warnings
grep "Hardening index" /var/log/lynis.log
grep "WARNING" /var/log/lynis.log
Стремитесь к показателю индекса защиты Lynis 80 или выше на производственных средах веб-хостинга.
Часто задаваемые вопросы
Достаточно ли изменить порт SSH по умолчанию (22) для защиты сервера?
Изменение порта SSH на нестандартный (например, 2222) сокращает сканирование автоматическими ботами в журналах доступа, но это всего лишь безопасность через неясность. Простое сканирование портов с помощью Nmap немедленно обнаружит прослушиваемый SSH-сервис. Подлинную безопасность обеспечивают применение криптографических ключей, отключение входа под root по паролю и ограничение частоты запросов Fail2ban.
Как разблокировать IP-адрес администратора, случайно заблокированный Fail2ban?
Если администратор вводит неверные учетные данные и вызывает блокировку в джайле, подключитесь с дополнительного IP-адреса из белого списка или из внеполосной консоли хостинг-провайдера, а затем выполните:
sudo fail2ban-client set sshd unbanip 203.0.113.50
Вы также можете навсегда добавить IP-подсети административного офиса в белый список, добавив их в директиву ignoreip в /etc/fail2ban/jail.local.
В чем разница между уровнем 1 и уровнем 2 стандартов CIS Benchmark?
Уровень 1 CIS предоставляет средства защитной безопасности, которые могут быть применены с минимальным риском нарушения работы обычного операционного ПО. Уровень 2 реализует меры эшелонированной обороны (такие как строгие политики обязательного контроля доступа, ограниченные модули ядра и агрессивная изоляция файловой системы), которые требуют индивидуальной настройки приложений во избежание операционных конфликтов.
Почему рандомизация пространства адресных строк (ASLR = 2) имеет критическое значение?
Установка kernel.randomize_va_space = 2 рандомизирует адреса памяти стека, страницы VDSO, библиотек разделяемой памяти и сегмента данных. Это мешает эксплойтам повреждения памяти (таким как переполнение буфера и атаки с возвратом к программированию, ROP) предсказывать целевые области исполняемой памяти.
Резюме & Базовый уровень облачной безопасности
Укрепление безопасности Linux-сервера требует многоуровневого защитного подхода. Внедряя пары криптографических SSH-ключей, строгую изоляцию входящего брандмауэра, предотвращение вторжений Fail2ban, защищенные точки монтирования разделяемой памяти и аудит по стандартам CIS, системные администраторы гарантируют, что производственные инстансы останутся устойчивыми к автоматизированным атакам.
Развернуть предварительно защищенный облачный VPS
Развертывайте защищенные Linux-инстансы со встроенной фильтрацией DDoS, хран��лищем NVMe и изолированными виртуальными сетями на WinWinHost.
Изучить защищенный облачный VPS →