diff --git a/content/posts/ubuntu-24-base-hardening/index.md b/content/posts/ubuntu-24-base-hardening/index.md index 97e6eb5..c94b195 100644 --- a/content/posts/ubuntu-24-base-hardening/index.md +++ b/content/posts/ubuntu-24-base-hardening/index.md @@ -261,7 +261,7 @@ Ubuntu 24.04 хранит конфигурацию SSH в `/etc/ssh/sshd_config. Создай файл с настройками: ```bash -sudo nano /etc/ssh/sshd_config.d/99-hardening.conf +sudo nano /etc/ssh/sshd_config.d/00-hardening.conf ``` ``` @@ -297,6 +297,8 @@ AcceptEnv LANG LC_* AddressFamily inet ``` +**Важно:** Ubuntu 24.04 хранит файлы конфигурации SSH в `/etc/ssh/sshd_config.d/` и применяет **первое** вхождение каждой директивы. Облачные образы Ubuntu часто поставляются с файлом `50-cloud-init.conf` который содержит `PasswordAuthentication yes` - он загружается раньше `99-hardening.conf` и его значение побеждает. Файл `00-hardening.conf` загружается первым и корректно перекрывает дефолты cloud-init. + **Важно:** Ubuntu 24.04 использует socket-активацию через `ssh.socket` - порт слушает не sshd напрямую, а сокет-юнит. Обычный `systemctl restart ssh` перезапускает только сервис, порт остаётся прежним. Для применения нового порта нужно перезапускать именно сокет. **КРИТИЧНО:** Перед перезапуском открой вторую сессию и не закрывай её. @@ -331,7 +333,7 @@ LISTEN 0 4096 0.0.0.0:2222 sudo systemctl cat ssh.socket ``` -Строка `ListenStream=0.0.0.0:2222` подтверждает что порт применился. +Строка `ListenStream=2222` подтверждает что порт применился. В новом терминале проверь подключение: @@ -356,7 +358,7 @@ sudo nano /etc/ssh/banner ############################################################################### ``` -Добавь в `/etc/ssh/sshd_config.d/99-hardening.conf`: +Добавь в `/etc/ssh/sshd_config.d/00-hardening.conf`: ``` Banner /etc/ssh/banner @@ -461,59 +463,11 @@ sudo nano /etc/fail2ban/jail.local ```ini [DEFAULT] -# Бан на 1 час bantime = 3600 -# За 10 минут findtime = 600 -# После 3 неудачных попыток maxretry = 3 -# Не банить свои IP ignoreip = 127.0.0.1/8 ::1 -[sshd] -enabled = true -port = 2222 -filter = sshd -logpath = /var/log/auth.log -maxretry = 3 -bantime = 3600 -``` - -Замени `2222` на свой SSH порт. - -**Особенность Ubuntu 24.04:** `systemd-journald` по умолчанию не пишет в `/var/log/auth.log`. Если файл отсутствует или пустой: - -```bash -ls -la /var/log/auth.log -``` - -Включи запись в файл: - -```bash -sudo nano /etc/rsyslog.d/50-default.conf -``` - -Убедись что строка не закомментирована: - -``` -auth,authpriv.* /var/log/auth.log -``` - -Перезапусти rsyslog: - -```bash -sudo systemctl restart rsyslog -``` - -Или используй journald backend в fail2ban - он умеет читать логи напрямую из journald без файлов: - -```bash -sudo nano /etc/fail2ban/jail.local -``` - -Добавь в секцию `[sshd]`: - -```ini [sshd] enabled = true port = 2222 @@ -523,7 +477,9 @@ maxretry = 3 bantime = 3600 ``` -При `backend = systemd` параметр `logpath` не нужен - fail2ban читает journald напрямую. +Замени `2222` на свой SSH порт. + +`backend = systemd` — обязательно для Ubuntu 24.04. На этом дистрибутиве journald является основным хранилищем логов, файл `/var/log/auth.log` может отсутствовать или не заполняться. При `backend = systemd` параметр `logpath` не нужен — fail2ban читает journald напрямую. Запусти: @@ -1065,8 +1021,9 @@ sudo ufw status verbose # Статус fail2ban sudo fail2ban-client status sshd -# Состояние диска -sudo smartctl -H /dev/sda +# Определить имя диска и проверить его состояние (только физический сервер) +lsblk -d -o NAME,TYPE | grep disk +sudo smartctl -H /dev/ИМЯ_ДИСКА # Swap free -h diff --git a/content/posts/ubuntu-24-docker-hardening/index.md b/content/posts/ubuntu-24-docker-hardening/index.md index f54b6f6..a623064 100644 --- a/content/posts/ubuntu-24-docker-hardening/index.md +++ b/content/posts/ubuntu-24-docker-hardening/index.md @@ -262,7 +262,7 @@ sudo systemctl restart docker Проверь: ```bash -docker info | grep -E "Storage Driver|Logging Driver|live-restore" +docker info | grep -E "Storage Driver|Logging Driver|Live Restore" ``` ## sysctl для Docker-хоста @@ -768,7 +768,7 @@ sudo truncate -s 0 /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log ### Финальная проверка ```bash sudo systemctl status docker -docker info | grep -E "Storage Driver|Logging Driver|live-restore" +docker info | grep -E "Storage Driver|Logging Driver|Live Restore" docker run --rm alpine nslookup google.com ss -tulnp | grep docker docker system df