Если бы каждый сервер мог говорить, он бы наверняка пожаловался, что самые страшные угрозы приходят не из тёмных уголков интернета, а из ленивых администраторов, которые «потом, потом» нажимают apt update. Давайте раз и навсегда договоримся: безопасность — это не один героический скрипт, запущенный в 3 ночи, а ежедневная гигиена. В этой статье собрал — без занудства, но по делу — пять столпов базовой защиты Linux‑систем.
Почему вообще стоит беспокоиться
Linux, несмотря на репутацию «пробивного» вендора хакерских сердец, вовсе не бронебойный танк. Оставленный без патчей сервер с открытым SSH на 22‑м порту ловит перебор паролей примерно через пять минут после выхода в сеть. А дальше — вопрос статистики: рано или поздно подберут. Хорошая новость: большинство атак всё ещё автоматизированы и бьются о стандартные конфигурации. Чуть‑чуть дисциплины — и вы уже не в первой тысяче лёгких целей.
Регулярные обновления: простая победа над уязвимостями
Самый скучный, но самый важный пункт. Патчи выходят каждую неделю, а критические — иногда и пару раз в день. Поэтому первый скрипт в cron — это обновление.
# для Debian/Ubuntu sudo apt update && sudo apt full-upgrade -y # для RHEL/CentOS/Alma sudo dnf upgrade --refresh -y
Если система критична к простоям, используйте Livepatch или KernelCare — сервисы, которые «горячо» подменяют ядро без перезагрузки. Не стоит экономить: одна не поставленная заплатка CVE‑2025‑12345 сегодня — это ночь без сна завтра.
sudo: минимальные привилегии без боли
Работа под root — как езда без ремня. Удобно, пока не врежешься. sudo позволяет дать себе ровно столько власти, сколько нужно, и ни байта больше.
- Создаём отдельного пользователя:
adduser alice && usermod -aG sudo alice
- Редактируем политику: запускаем sudo visudo и добавляем строку alice ALL=(ALL:ALL) ALL. Более тонко? Никто не мешает выдавать доступ лишь к одному скрипту резервного копирования.
- Логируем всё: в том же файле можно указать Defaults log_output, чтобы каждая команда писалась в /var/log/sudo.log. Потом не придётся гадать, «кто снёс /etc».
Философия проста: чем меньше проводов свисает, тем труднее за них дёрнуть.
SSH: дверь, которую все пытаются вскрыть
По статистике Honeynet Project , 60 % автоматизированных атак на хосты начинаются с перебора SSH‑паролей. Сделаем же злоумышленникам жизнь скучной.
Ключевая аутентификация вместо паролей
# на клиенте ssh-keygen -t ed25519 -C "alice@workstation" ssh-copy-id alice@server
После этого в /etc/ssh/sshd_config:
PasswordAuthentication no PermitRootLogin no
Сохраняем, перезапускаем systemctl restart sshd. Теперь пароль на сервере не работает вовсе, а root через сеть недоступен.
Нестандартный порт? Да, но не ради безопасности
Перенести SSH на 2222‑й порт — это не броня, а косметика. Боты всё равно просканируют, но лог станет чище. Решайте по вкусу.
Двухфакторка — чтобы спать крепче
Пакет libpam-google-authenticator позволяет добавить TOTP. Подробности — в официальном репозитории . Да, придётся доставать телефон, но компромисс между удобством и паранойей лежит обычно где‑то посередине.
ufw — дружелюбная оболочка для сетевых правил
Настраивать iptables вручную — как программировать на ассемблере: круто, но редко нужно. ufw (Uncomplicated Firewall) закрывает 95 % бытовых сценариев двумя командами.
# установка sudo apt install ufw # политика «запрещено всё, что не разрешено» sudo ufw default deny incoming sudo ufw default allow outgoing # разрешаем только SSH sudo ufw allow 22/tcp comment "ssh" # или, если порт поменяли, так: # sudo ufw allow 2222/tcp comment "ssh non‑standard" # включаем sudo ufw enable
Команда ufw status numbered покажет правила, а ufw delete 1 удалит первое. Понятно даже в полтретьего ночи.
fail2ban — робот, который банит роботов
Когда скрипт‑киди пытается угадать ваш пароль раз за разом, fail2ban читает логи, считает промахи и временно кидает IP‑адрес в отказ. Экономит вам нервы, а серверу — процессорное время.
# установка sudo apt install fail2ban # копируем конфиг для кастомизации sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Внутри jail.local активируем секцию [sshd] и меняем — при желании — таймаут бана, например bantime = 1h. После перезапуска — systemctl restart fail2ban — всё работает. Проверить, кого уже забанили, можно командой fail2ban-client status sshd.
Ещё пять коротких советов, которые не поместились выше
- Резервные копии: Borg или Restic шифруют данные перед отправкой и знают дедупликацию. Бэкап без восстановления — это только видимость безопасности.
- Мониторинг логов: GoAccess визуализирует веб‑логи в реальном времени — замечательная штука, чтобы увидеть всплеск 404 от бота.
- Контроль целостности: AIDE создаёт контрольные суммы файлов и орёт, если что-то изменилось.
- AppArmor или SELinux: да, политика может выбесить за пять минут, но она же остановит эксплойт, пытающийся писать куда не просили.
- Не хранить ключи где попало: менеджеры секретов вроде HashiCorp Vault помогают избежать конфуза «ой, забыл AWS‑токен на GitHub».
Заключение
Безопасность Linux — это не затворничество в пещере со свечой и пожарным топором, а серия простых привычек. Раз в неделю обновили пакеты, раз настроили ufw, включили fail2ban, отключили root‑SSH — и уже закрыли подавляющее большинство типовых векторов. Мир совершенен не будет, но ваш сервер теперь чуть‑чуть ближе к статусу «скучная цель» для злоумышленника. А скучные цели, как известно, редко взламывают первыми.