From 6fb1f089155cff54e7fb3a2aef6186ac5dea5928 Mon Sep 17 00:00:00 2001 From: Astronit Date: Fri, 13 Mar 2026 20:11:09 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=84=D0=BE=D1=80=D0=BC=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../posts/tips-debian-12-hardening/index.md | 63 +++++++++++-------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/content/posts/tips-debian-12-hardening/index.md b/content/posts/tips-debian-12-hardening/index.md index 89d0d09..0f9f890 100644 --- a/content/posts/tips-debian-12-hardening/index.md +++ b/content/posts/tips-debian-12-hardening/index.md @@ -9,11 +9,9 @@ categories: - Безопасность --- -# Debian 12: базовая настройка безопасности для production - Поставил чистый Debian 12 и думаешь сразу накатывать приложения? Не торопись. Сейчас потратишь час на базовую настройку безопасности - сэкономишь недели на разгребание последствий взлома. -Эта статья - универсальная база для любого production-сервера. Не важно, будешь ты крутить почту, веб или базу данных - эти настройки нужны всем. +{{< lead >}}Эта статья - универсальная база для любого production-сервера. Не важно, будешь ты крутить почту, веб или базу данных - эти настройки нужны всем.{{< /lead >}} ## Что будем делать @@ -62,7 +60,7 @@ apt dist-upgrade -y [ -f /var/run/reboot-required ] && echo "Reboot needed" || echo "No reboot needed" ``` -Если нужна - перезагрузись: +Если нужна - перезагружаемся: ```bash reboot @@ -233,7 +231,7 @@ ssh-keygen -t ed25519 -C "admin@srv01" или так -```powershell +```pwsh cd c:\users\$env:username ssh-keygen ``` @@ -244,17 +242,20 @@ ssh-keygen Скопируй публичный ключ на сервер: +{{< tabs >}} + {{< tab label="Windows" >}} +```pwsh +type $env:userprofile\.ssh\id_ed25519.pub | ssh admin@твой-IP "if [ ! -d ~/.ssh ]; then mkdir -m 700 ~/.ssh; fi; if [ ! -f ~/.ssh/authorized_keys ]; then touch ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; fi; cat >> ~/.ssh/authorized_keys" +``` +Команда проверяет наличие `~/.ssh/authorized_keys` и если ее нет - создает с нужными правами. + {{< /tab >}} + {{< tab label="Linux" md=false >}} ```bash ssh-copy-id admin@твой-IP ``` + {{< /tab >}} +{{< /tabs >}} -если Windows - -```powershell -type $env:userprofile\.ssh\id_ed25519.pub | ssh admin@твой-IP "if [ ! -d ~/.ssh ]; then mkdir -m 700 ~/.ssh; fi; if [ ! -f ~/.ssh/authorized_keys ]; then touch ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; fi; cat >> ~/.ssh/authorized_keys" -``` - -Команда проверяет наличие `~/.ssh/authorized_keys` и если ее нет - создает с нужными правами. Введи пароль пользователя `admin`. @@ -318,7 +319,7 @@ AddressFamily inet **Port 2222:** - Нестандартный порт вместо 22 - Отсекает 90% ботов -- **ВАЖНО:** Запомни новый порт! +- `ВАЖНО:` Запомни новый порт! **PermitRootLogin no:** - Запрет входа под root @@ -346,9 +347,9 @@ sudo sshd -t Если ошибок нет - ничего не выводит. -**КРИТИЧЕСКИ ВАЖНО:** - -Перед перезапуском SSH открой **вторую сессию** и не закрывай её: +{{< alert cardColor="#e63946" iconColor="#ffffff" >}} +**КРИТИЧЕСКИ ВАЖНО:** Перед перезапуском SSH открой **вторую сессию** и не закрывай её: +{{< /alert >}} ```bash ssh admin@твой-IP @@ -423,7 +424,7 @@ sudo apt install -y ufw ### Базовые правила -**ВАЖНО:** Сначала настроим правила, потом включим. Иначе можешь заблокировать себя. +{{< alert >}}**ВАЖНО:** Сначала настроим правила, потом включим. Иначе можешь заблокировать себя.{{< /alert >}} Политика по умолчанию - блокировать все входящее: @@ -491,7 +492,9 @@ ufw allow 443/tcp sudo ufw enable ``` -Скажет: `Command may disrupt existing ssh connections. Proceed with operation (y|n)?` +Спросит: `Command may disrupt existing ssh connections. Proceed with operation (y|n)?` + +т.е. `Выполнение команды может прервать существующие SSH-соединения. Продолжить операцию? (y|n)` Жми `y`. @@ -539,7 +542,7 @@ sudo apt install -y fail2ban sudo nano /etc/fail2ban/jail.local ``` -Запиши: +Внеси: ```ini [DEFAULT] @@ -651,7 +654,7 @@ sudo fail2ban-client set sshd unbanip IP-адрес sudo nano /etc/sysctl.d/99-hardening.conf ``` -Запиши: +Внеси: ```ini # IP Forwarding (отключаем если не роутер) @@ -820,7 +823,7 @@ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ### Настройка swappiness -Swappiness - насколько активно использовать swap. +`Swappiness` - насколько активно использовать swap. Проверь текущее значение: @@ -860,6 +863,8 @@ cat /proc/sys/vm/swappiness Защита от fork-бомб и исчерпания дескрипторов. +`fork-бомба` - это программа (вредоносная или написанная по ошибке), которая бесконечно создаёт собственные копии через системный вызов `fork()`, пока ресурсы системы полностью не иссякнут. + Открой: ```bash @@ -1342,6 +1347,9 @@ sudo smartctl -a /dev/sda ### Алерты на критичные события +> [!TIP] Для работы почтовых уведомлений должен быть настроен MTA (например Postfix). + + Создай скрипт проверки: ```bash @@ -1380,9 +1388,9 @@ if [ $LOAD_INT -gt $((CORES * 2)) ]; then echo "ALERT: Load average is $LOAD on $HOSTNAME ($CORES cores)" | mail -s "Load Alert" $ALERT_EMAIL fi ``` - +{{< alert >}} **ВАЖНО:** Замени `admin@example.ru` на свой email. - +{{< /alert >}} Права: ```bash @@ -1395,13 +1403,13 @@ sudo chmod +x /root/health-check.sh sudo crontab -e ``` +Если отправка почты настроена: + ``` */15 * * * * /root/health-check.sh ``` -Для работы почты должен быть настроен MTA (например Postfix). - -Если почты нет - можешь логировать: +Если отправки почты нет - можешь логировать: ``` */15 * * * * /root/health-check.sh >> /var/log/health-check.log 2>&1 @@ -1433,4 +1441,5 @@ telnet твой-IP 2222 # Должен быть доступен Все специфичные настройки делаются поверх этой базы. -**Главное:** Не забывай регулярно проверять логи и обновлять систему. Безопасность - это процесс, а не состояние. \ No newline at end of file +> [!TIP]+ **Главное:** +> Не забывай регулярно проверять логи и обновлять систему. Безопасность - это процесс, а не состояние. \ No newline at end of file