Содержание
Защита сервера Debian 12 требует гораздо большего, чем просто установка операционной системы и подключение его к интернету. Большинство системных администраторов следуют базовым рекомендациям по безопасности — обновляют пакеты, включают межсетевой экран и отключают вход под root, — но упускают множество важных шагов по усилению защиты, которые существенно повышают общий уровень безопасности. Эти упущенные меры создают эксплуатируемые пробелы, которые активно ищут опытные злоумышленники. Это подробное руководство раскрывает 15 обязательных шагов по усилению защиты, которые часто пропускают опытные системные администраторы, превращая ваш сервер Debian 12 из просто работающего в по-настоящему защищённый от современных угроз.
Разница между базовой установкой и должным образом защищённым сервером Debian 12 определяет, переживёт ли ваша система целевые атаки или станет ещё одной строкой в статистике программ-вымогателей. Каждый упущенный шаг — это дополнительная поверхность атаки, потенциальная уязвимость и упущенная возможность поднять защитные барьеры до того, как угрозы материализуются.

Основа: обновления системы и управление пакетами
Шаг 1. Настройте автоматические обновления безопасности с помощью unattended-upgrades
Хотя большинство администраторов выполняют apt update и apt upgrade, лишь немногие настраивают автоматическое применение патчей безопасности — критический промах, из-за которого системы остаются уязвимыми в промежутках между ручными обновлениями.
Патчи безопасности Debian устраняют известные уязвимости, которые активно эксплуатируют злоумышленники. Ручные обновления создают опасные разрывы: в понедельник утром, когда вы запускаете обновления, уязвимость нулевого дня, появившаяся во вторник, уже распространяется среди атакующих групп. К вечеру вторника ваша система остаётся без патча, хотя исправление уже есть в репозиториях Debian.
Установите unattended-upgrades для автоматических обновлений безопасности:
bashsudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure -plow unattended-upgrades
Настройте автоматические обновления безопасности, отредактировав /etc/apt/apt.conf.d/50unattended-upgrades:
bashsudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Убедитесь, что включены следующие важные параметры:
текстUnattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Эта конфигурация ежедневно автоматически применяет обновления безопасности, удаляет неиспользуемые пакеты ядра и отправляет вам письмо только при возникновении ошибок — предотвращая опасные пробелы в безопасности без дополнительной административной нагрузки.
Усиление безопасности сервера Debian 12 с многоуровневой защитой межсетевого экрана
Усиление безопасности доступа по SSH
Шаг 2. Включите аутентификацию по SSH-ключам (отключите аутентификацию по паролю)
На большинстве серверов аутентификация SSH по паролю включена по умолчанию — уязвимость, которая привлекает атаки перебором со всего интернета. Злоумышленники используют автоматизированные инструменты, чтобы каждую ночь перебирать миллионы комбинаций паролей, и если вы не используете исключительно надёжные пароли вместе с fail2ban, рано или поздно кто-то добьётся успеха.
Аутентификация по SSH-ключам криптографически надёжнее: даже если злоумышленники проникнут в вашу сеть, они не смогут воспользоваться украденными паролями, потому что сервер их больше не принимает.
Создайте надёжную пару SSH-ключей на локальной машине:
bashssh-keygen -t rsa -b 4096 -f ~/.ssh/debian_server -N "your-strong-passphrase"
Скопируйте открытый ключ на сервер (выполните это один раз с локальной машины):
bashssh-copy-id -i ~/.ssh/debian_server.pub username@your_server_ip
Теперь убедитесь, что доступ по ключу работает, прежде чем отключать пароли:
bashssh -i ~/.ssh/debian_server username@your_server_ip
Отредактируйте конфигурацию демона SSH:
bashsudo nano /etc/ssh/sshd_config
Примените следующие настройки SSH для усиления защиты:
текстProtocol 2
Port 22
AddressFamily inet
ListenAddress 0.0.0.0
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 1m
StrictModes yes
IgnoreRhosts yes
HostbasedAuthentication no
RhostsRSAAuthentication no
RSAAuthentication no
X11Forwarding no
X11UseLocalhost no
TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 2
Subsystem sftp /usr/lib/openssh/sftp-server
Перезапустите SSH, чтобы применить изменения:
bashsudo systemctl restart ssh
Тщательно проверьте конфигурацию, прежде чем выходить из текущего сеанса: при ошибке вы рискуете остаться без доступа навсегда.
Безопасность аутентификации по SSH-ключам для защищённого доступа к серверу
Шаг 3. Измените порт SSH по умолчанию 22 (необязательно, но эффективно)
Хотя криптографически это не обязательно, смена порта SSH с 22 уменьшает шум от сканирования портов автоматическими инструментами атак. Это безопасность через неясность, полезная на практике для сокращения спама в журналах и замедления случайной разведки.
В /etc/ssh/sshd_configизмените:
текстPort 2222
Обновите правила межсетевого экрана, чтобы разрешить новый порт:
bashsudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
Задокументируйте это изменение — вы забудете его во время следующей аварии в 3 часа ночи.
Шаг 4. Настройте Fail2ban для защиты от атак перебором
Даже при аутентификации по SSH-ключам вспомогательные службы (почта, веб-приложения и т. д.) могут принимать пароли. Fail2ban отслеживает неудачные попытки аутентификации и временно блокирует IP-адреса нарушителей, останавливая атаки перебором до того, как они увенчаются успехом.
Установите Fail2ban:
bashsudo apt update && sudo apt install fail2ban -y
Настройте Fail2ban, скопировав конфигурацию по умолчанию:
bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Отредактируйте конфигурацию:
bashsudo nano /etc/fail2ban/jail.local
В [DEFAULT] настройте:
текст[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1 your_trusted_ip
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1800
Запустите Fail2ban и включите автозапуск:
bashsudo systemctl enable fail2ban
sudo systemctl start fail2ban
Следите за активными блокировками:
bashsudo fail2ban-client status sshd
Эта конфигурация блокирует IP-адреса на 1800 секунд (30 минут) после трёх неудачных попыток SSH в течение 10-минутного окна — достаточно агрессивно, чтобы остановить атаки перебором, и при этом без ложных срабатываний.
Настройка межсетевого экрана и защита сети
Шаг 5. Настройте межсетевой экран UFW со строгими правилами по умолчанию
Многие администраторы пропускают настройку межсетевого экрана или используют чрезмерно разрешающие правила. Правильно настроенный межсетевой экран — ваша первая линия защиты от несанкционированного доступа.
Установите и настройте UFW (Uncomplicated Firewall):
bashsudo apt update && sudo apt install ufw -y
Прежде чем включать UFW, разрешите SSH, чтобы не потерять доступ:
bashsudo ufw allow 2222/tcp
sudo ufw allow ssh
Задайте ограничительные правила по умолчанию:
bashsudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed
Включите UFW:
bashsudo ufw enable
Для веб-сервера дополнительно разрешите HTTP и HTTPS:
bashsudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Разрешите доступ к чувствительным службам только определённым IP-адресам:
bashsudo ufw allow from 192.168.1.100 to any port 3306
Просмотрите конфигурацию:
bashsudo ufw status verbose
Шаг 6. Усильте защиту параметров ядра с помощью sysctl
Системные администраторы редко меняют параметры ядра, оставляя значения по умолчанию, — а это серьёзный промах. Усиление защиты ядра через sysctl позволяет предотвратить целые классы сетевых атак и эксплойтов.
Создайте файл конфигурации для усиления защиты:
bashsudo nano /etc/sysctl.d/99-hardening.conf
Добавьте комплексные параметры усиления защиты ядра:
текст# Network Security
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# IPv6 Security
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Memory Protection
kernel.dmesg_restrict = 1
kernel.printk = 3 3 3 3
kernel.kptr_restrict = 2
kernel.core_uses_pid = 1
kernel.kexec_load_disabled = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
# Process Restrictions
kernel.unprivileged_userns_clone = 0
kernel.perf_event_paranoid = 3
Примените настройки немедленно:
bashsudo sysctl -p /etc/sysctl.d/99-hardening.conf
Эти параметры отключают IP-пересылку (если она вам не нужна), включают SYN-cookies для предотвращения SYN-flood-атак, включают фильтрацию обратного пути для предотвращения подмены IP и реализуют защиту памяти от раскрытия информации.
Шаг 7. Отключите ненужные сетевые службы
Каждая работающая служба — это потенциальная поверхность атаки. Во многих установках Debian по умолчанию есть службы, которые вам не нужны: почтовые серверы, DNS-резолверы и даже Bluetooth на серверах без графического интерфейса.
Определите работающие службы:
bashsudo systemctl list-units --type=service --state=running
Проверьте, какие службы прослушивают сетевые порты:
bashsudo ss -tulnp
Отключите ненужные службы. Для базового веб-сервера вам, скорее всего, не нужны:
bashsudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
sudo systemctl disable avahi-daemon.service
sudo systemctl mask isc-dhcp-server
sudo systemctl mask isc-dhcp-server6
После отключения остановите службы:
bashsudo systemctl stop bluetooth.service
sudo systemctl stop cups.service
Задокументируйте, какие службы вы отключили и почему, — это станет критически важным при аудите безопасности.
Управление доступом и аутентификация
Шаг 8. Внедрите двухфакторную аутентификацию для SSH
Двухфакторная аутентификация (2FA) добавляет второй уровень защиты: даже если кто-то получит ваш закрытый SSH-ключ, он не сможет получить доступ к серверу без второго фактора.
Установите Google Authenticator для TOTP (одноразовых паролей на основе времени):
bashsudo apt update && sudo apt install libpam-google-authenticator -y
Настройте 2FA от имени своего пользователя (не root):
bashgoogle-authenticator -t -f -d -w 10 -r 3 -R 30
Будет создан QR-код для сканирования приложением-аутентификатором. Сохраните резервные коды в надёжном месте — это ваш механизм восстановления, если вы потеряете устройство аутентификации.
Измените конфигурацию PAM для SSH, чтобы требовать 2FA:
bashsudo nano /etc/pam.d/sshd
Добавьте эту строку перед @include common-auth:
текстauth required pam_google_authenticator.so nullok
Отредактируйте конфигурацию демона SSH:
bashsudo nano /etc/ssh/sshd_config
Добавьте или измените:
текстChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Перезапустите SSH:
bashsudo systemctl restart ssh
Проверьте конфигурацию в новом терминале, прежде чем закрывать текущий сеанс.
Двухфакторная аутентификация защищает доступ к серверу Debian
Шаг 9. Усильте политики учётных записей пользователей
Политики учётных записей пользователей по умолчанию в Debian недостаточно ограничительны. Без усиления защиты слабые политики паролей и механизмы блокировки учётных записей оставляют системы уязвимыми к компрометации учётных данных.
Редактировать /etc/login.defs , чтобы ужесточить политику паролей:
bashsudo nano /etc/login.defs
Измените следующие важные параметры:
текстPASS_MAX_DAYS 30
PASS_MIN_DAYS 1
PASS_WARN_AGE 7
LOGIN_RETRIES 3
LOGIN_TIMEOUT 60
FAILLOG_ENAB yes
LOG_UNKFAIL_ENAB yes
LOG_OK_LOGINS yes
SYSLOG_SU_ENAB yes
Отключите ненужные учётные записи пользователей:
bashsudo passwd -l games
sudo passwd -l news
sudo passwd -l uucp
Создайте надёжную конфигурацию sudo, требующую паролей и ведущую аудит использования sudo:
bashsudo visudo
Убедитесь, что присутствуют следующие строки:
текстDefaults use_pty
Defaults log_input, log_output
Defaults requirepass
%sudo ALL=(ALL:ALL) ALL
Это переводит выполнение команд sudo в псевдотерминал, регистрирует весь ввод и вывод и требует пароль для повышения привилегий.
Мониторинг, аудит и обнаружение вторжений
Шаг 10. Настройте комплексное журналирование с помощью auditd
Большинство администраторов полагаются только на syslog и упускают подробные события безопасности, которые фиксирует auditd. Auditd обеспечивает детальный аудит, необходимый для криминалистических расследований и соблюдения требований.
Установите auditd:
bashsudo apt update && sudo apt install auditd audispd-plugins -y
Настройте auditd, отредактировав /etc/audit/rules.d/audit.rules:
bashsudo nano /etc/audit/rules.d/audit.rules
Добавьте критически важные правила аудита:
текст# Remove any existing rules
-D
# Buffer Size
-b 8192
# Failure Mode
-f 2
# Audit the audit logs
-w /var/log/audit/ -k auditlog
# Audit system administration
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
# Audit system calls
-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b32 -S execve -k exec
# Audit file modifications
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
# Make the configuration immutable
-e 2
Загрузите правила аудита:
bashsudo systemctl restart auditd
Просмотрите журналы аудита:
bashsudo ausearch -m EXECVE --start recent
Сформируйте отчёты аудита:
bashsudo aureport
Auditd создаёт огромные журналы — настройте их ротацию, чтобы избежать проблем с дисковым пространством.
Шаг 11. Установите средства обнаружения руткитов и вредоносного ПО
Многие администраторы считают свои системы свободными от вредоносного ПО, потому что ничего явно не выглядит неправильно. Изощрённые руткиты скрывают своё присутствие, сохраняя доступ злоумышленника.
Установите rootkit hunter:
bashsudo apt update && sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check --skip-warning
Установите chkrootkit для дополнительной проверки на вредоносное ПО:
bashsudo apt install chkrootkit -y
sudo chkrootkit
Установите AIDE (Advanced Intrusion Detection Environment) для контроля целостности файлов:
bashsudo apt install aide aide-common -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check
Настройте еженедельные проверки через cron:
bashsudo nano /etc/cron.d/rootkit-checks
Добавьте:
текст0 2 * * 0 root /usr/bin/rkhunter --check --skip-warning 2>&1 | mail -s "Weekly rootkit check" [email protected]
0 3 * * 0 root /usr/bin/aide --check 2>&1 | mail -s "Weekly AIDE check" [email protected]
Эти инструменты предупреждают вас о руткитах и вредоносном ПО до того, как они закрепятся в системе.
Шаг 12. Включите и отслеживайте системные журналы
Системные администраторы часто запускают syslog, но никогда не просматривают журналы. Журналы полезны, только если вы активно за ними следите.
Настройте rsyslog для комплексного журналирования:
bashsudo nano /etc/rsyslog.conf
Убедитесь, что включены важные модули:
текстmodule(load="imuxsock")
module(load="imklog")
module(load="imtcp")
input(type="imtcp" port="514")
Настройте ротацию журналов с помощью logrotate:
bashsudo nano /etc/logrotate.d/rsyslog
Обеспечьте правильную ротацию:
текст/var/log/syslog {
daily
rotate 14
compress
delaycompress
notifempty
create 0640 syslog adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Установите и настройте logwatch для ежедневных сводок журналов:
bashsudo apt install logwatch -y
sudo nano /etc/logwatch/conf/logwatch.conf
Настройте отправку по электронной почте:
текстOutput = mail
Format = html
Email = [email protected]
Hostname = your-server-name
Управление доступом и привилегиями

Шаг 13. Внедрите и обеспечьте обязательный контроль доступа
Стандартные системы разрешений Linux (DAC) недостаточно детальны, чтобы не дать скомпрометированным приложениям повредить систему. AppArmor обеспечивает обязательный контроль доступа (MAC) на основе профилей, защищая от бокового перемещения после компрометации.
Debian включает AppArmor по умолчанию, но часто с минимальным набором загруженных профилей. Проверьте, что AppArmor активен:
bashsudo aa-status
Установите дополнительные профили AppArmor:
bashsudo apt install apparmor-profiles apparmor-profiles-extra apparmor-utils -y
Перезагрузите профили:
bashsudo systemctl reload apparmor
Убедитесь, что защита активна:
bashsudo aa-status | grep "profiles in enforce mode"
Создайте собственные профили AppArmor для чувствительных приложений:
bashsudo aa-genprof /usr/bin/your-application
AppArmor ограничивает приложения кругом ресурсов, для которых они предназначены, не позволяя скомпрометированным веб-серверам получать доступ к системным файлам или конфигурации базы данных.
Шаг 14. Настройте безопасные права доступа к файлам и umask
Права доступа к файлам по умолчанию в Debian допускают ненужный доступ на чтение. Правильная настройка umask не даёт конфиденциальным файлам быть доступными для чтения всем.
Проверьте текущее значение umask:
bashumask
Задайте безопасные значения по умолчанию в /etc/profile.d/ для всех пользователей:
bashsudo nano /etc/profile.d/secure-umask.sh
Добавьте:
текстif [ $UID -ge 1000 ]; then
umask 0077
else
umask 0027
fi
Сделайте его исполняемым:
bashsudo chmod 644 /etc/profile.d/secure-umask.sh
Проверьте текущие права доступа к конфиденциальным файлам, доступным для чтения всем:
bashsudo find /etc -type f -perm -444 -exec ls -l {} \;
sudo find /home -type f -perm -444 -exec ls -l {} \;
Удалите ненужные права на чтение:
bashsudo chmod 600 /etc/ssh/sshd_config
sudo chmod 640 /etc/sudoers
Шаг 15. Отключите ненужные возможности файловой системы
Современные системы Linux предоставляют программам детальные возможности вместо бинарного разделения на root и не-root. Ненужные возможности системных бинарных файлов создают пути повышения привилегий.
Определите возможности системных бинарных файлов:
bashgetcap -r /usr/bin 2>/dev/null
getcap -r /usr/sbin 2>/dev/null
Удалите ненужные возможности (пример):
bashsudo setcap -r /usr/bin/dumpcap
sudo setcap -r /usr/bin/chsh
Задокументируйте, какие возможности необходимы вашим приложениям, и удалите остальные — каждая из них в случае эксплуатации может стать путём повышения привилегий.
Постоянное усиление защиты и обслуживание
После внедрения этих 15 шагов по усилению защиты безопасность становится непрерывным процессом:
Ежемесячные задачи: просматривайте журналы аудита на предмет аномалий, проверяйте блокировки Fail2ban на наличие закономерностей, при необходимости обновляйте параметры ядра, убеждайтесь, что профили AppArmor работают.
Ежеквартальные задачи: запускайте полную проверку на руткиты, пересматривайте правила межсетевого экрана на предмет ненужных исключений, проверяйте учётные записи пользователей на неактивный доступ, ищите устаревшие службы, которые можно отключить.
Ежегодно: проводите комплексные аудиты безопасности с помощью инструментов вроде Lynis, пересматривайте и обновляйте все политики безопасности, тестируйте процедуры восстановления после сбоев, обновляйте планы реагирования на инциденты.
Заключение
Разница между уязвимым сервером Debian 12 и защищённым заключается в выполнении этих 15 шагов, которые многие системные администраторы упускают. От автоматических обновлений безопасности и усиления защиты SSH-ключей до настройки параметров ядра, комплексного журналирования и постоянного мониторинга — каждая мера закрывает конкретные векторы атак, которые изощрённые злоумышленники используют ежедневно.
Начните с основ: автоматических обновлений, обязательной аутентификации по SSH-ключам, настройки межсетевого экрана и включения 2FA. Затем переходите к мониторингу и обнаружению вторжений. Не пытайтесь внедрить всё одновременно: поэтапное усиление защиты предотвращает ошибки конфигурации и позволяет разобраться в каждом компоненте. Тщательно документируйте изменения, проверяйте конфигурации перед развёртыванием в производственной среде и поддерживайте регулярный мониторинг.
Ваш сервер Debian 12 никогда не будет защищён на 100 % — безопасность это непрерывный путь, а не конечная точка. Но, внедрив эти 15 шагов по усилению защиты, вы устраните лёгкие цели, которые используют автоматические атаки, и выстроите защиту, достаточно серьёзную, чтобы отразить всех, кроме самых настойчивых и хорошо обеспеченных ресурсами противников.


