fix: формктирование статьи
This commit is contained in:
parent
9e0acd35de
commit
6fb1f08915
|
|
@ -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 # Должен быть доступен
|
|||
|
||||
Все специфичные настройки делаются поверх этой базы.
|
||||
|
||||
**Главное:** Не забывай регулярно проверять логи и обновлять систему. Безопасность - это процесс, а не состояние.
|
||||
> [!TIP]+ **Главное:**
|
||||
> Не забывай регулярно проверять логи и обновлять систему. Безопасность - это процесс, а не состояние.
|
||||
Loading…
Reference in New Issue