package infosecmodules import ( "rubric/utils" ) var HardeningModule = Module{ Key: "hardening", Aliases: []string{"h", "harden", "ужесточение"}, Title: "Linux Hardening", Description: "Усиление безопасности Linux: SSH, пакеты, аудит, CIS Benchmarks", Run: showHardening, } func showHardening() { utils.Header("InfoSec — Linux Hardening") utils.Section("Принципы усиления безопасности") utils.Code(`1. Минимизация поверхности атаки — отключить всё лишнее 2. Минимальные привилегии — только нужные права 3. Принцип fail-secure — при сбое → закрытое состояние 4. Аудит и логирование — знать что происходит 5. Обновления — патчи уязвимостей CIS Benchmarks — детальные руководства по hardening https://www.cisecurity.org/cis-benchmarks/ Уровни: Level 1 (базовый), Level 2 (продвинутый) Инструменты проверки: Lynis — аудит безопасности Linux OpenSCAP — соответствие стандартам (RHEL) CIS-CAT — CIS Benchmarks scanner`) utils.Section("SSH Hardening") utils.Code(`# /etc/ssh/sshd_config: # Основное: Port 2222 # нестандартный порт (защита от автосканов) PermitRootLogin no # запретить вход root PasswordAuthentication no # только ключи PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # Ограничения: AllowUsers alice bob # белый список пользователей AllowGroups sshusers # или группа MaxAuthTries 3 # попытки аутентификации LoginGraceTime 30 # секунд на вход MaxStartups 3:50:10 # ограничить параллельные подключения ClientAliveInterval 300 # keepalive каждые 5 минут ClientAliveCountMax 2 # 2 попытки # Протокол: Protocol 2 # только SSHv2 HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp521,rsa-sha2-512 KexAlgorithms curve25519-sha256,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com MACs hmac-sha2-512-etm@openssh.com # Дополнительно: X11Forwarding no AllowTcpForwarding no # запретить туннели (если не нужны) Banner /etc/ssh/banner.txt # показать предупреждение при входе LogLevel VERBOSE # Применить: sshd -t # проверить конфиг systemctl restart sshd`) utils.Section("Усиление системы") utils.Code(`# Обновления: apt update && apt upgrade -y && apt autoremove -y # Debian dnf update -y && dnf autoremove -y # RHEL # Автоматические обновления безопасности: apt install unattended-upgrades dpkg-reconfigure unattended-upgrades # Удалить ненужные пакеты: apt list --installed | grep -v "essential\|required" dnf list installed # Удалить неиспользуемые: apt remove telnet rsh ftp ... # Отключить ненужные сервисы: systemctl list-units --type=service --state=active systemctl disable --now cups avahi-daemon bluetooth # Временная зона и NTP: timedatectl set-timezone UTC timedatectl set-ntp true`) utils.Section("Сетевое усиление") utils.Code(`# /etc/sysctl.d/99-hardening.conf: # Защита от спуфинга: net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Запретить ICMP redirect: net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # Запретить source routing: net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 # SYN cookies (защита от SYN flood): net.ipv4.tcp_syncookies = 1 # Не отвечать на broadcast ping: net.ipv4.icmp_echo_ignore_broadcasts = 1 # Игнорировать bogus ICMP: net.ipv4.icmp_ignore_bogus_error_responses = 1 # Логировать martian пакеты: net.ipv4.conf.all.log_martians = 1 # Запретить IP forwarding (если не роутер): net.ipv4.ip_forward = 0 net.ipv6.conf.all.forwarding = 0 # Применить: sysctl -p /etc/sysctl.d/99-hardening.conf`) utils.Section("Усиление паролей и аутентификации") utils.Code(`# PAM — Pluggable Authentication Modules # /etc/security/pwquality.conf: minlen = 14 # минимальная длина minclass = 4 # классы символов (upper, lower, digit, other) maxrepeat = 3 # не более 3 одинаковых подряд dcredit = -1 # хотя бы 1 цифра ucredit = -1 # хотя бы 1 заглавная lcredit = -1 # хотя бы 1 строчная ocredit = -1 # хотя бы 1 спецсимвол # /etc/security/faillock.conf (блокировка после неудач): deny = 5 # блокировать после 5 неудачных попыток unlock_time = 900 # разблокировать через 15 минут # /etc/login.defs: PASS_MAX_DAYS 90 # смена пароля каждые 90 дней PASS_MIN_DAYS 7 # не менять чаще раза в 7 дней PASS_WARN_AGE 14 # предупреждать за 14 дней # Применить политику к существующему пользователю: chage -M 90 -W 14 alice chage -l alice # просмотр`) utils.Section("Аудит — auditd") utils.Code(`auditd — система аудита Linux ядра. Логирует системные вызовы, доступ к файлам, изменения конфигурации. # Установка: apt install auditd systemctl enable --now auditd # /etc/audit/rules.d/audit.rules: # Мониторинг изменений аутентификационных файлов: -w /etc/passwd -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k sudoers # Мониторинг входов в систему: -w /var/log/faillog -p wa -k logins -w /var/log/lastlog -p wa -k logins # Мониторинг команд с привилегиями: -a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands # Мониторинг сетевых соединений: -a always,exit -F arch=b64 -S connect -k network_connect # Применить правила без перезапуска: augenrules --load # Просмотр логов: ausearch -k identity -ts recent # события за последнее время ausearch -k root_commands -ui 0 # команды root aureport --auth # отчёт по аутентификации aureport --summary # общий отчёт aureport --failed # только ошибки`) utils.Section("Защита файловой системы") utils.Code(`# /etc/fstab — безопасные опции монтирования: /dev/sda1 / ext4 defaults 0 1 tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0 tmpfs /var/tmp tmpfs defaults,noexec,nosuid,nodev 0 0 /dev/sda3 /home ext4 defaults,noexec,nosuid,nodev 0 2 /dev/sda4 /var ext4 defaults,nosuid,nodev 0 2 # noexec — нельзя запускать файлы # nosuid — SUID биты игнорируются # nodev — устройства игнорируются # Поиск файлов с SUID/SGID: find / -perm /4000 -type f 2>/dev/null # SUID find / -perm /2000 -type f 2>/dev/null # SGID # Проверить нужны ли они, убрать ненужные: chmod u-s /usr/bin/unnecessary # Файлы без владельца (orphaned): find / -nouser -o -nogroup 2>/dev/null # Разрешения на критичные файлы: chmod 600 /etc/shadow chmod 644 /etc/passwd chmod 440 /etc/sudoers chmod 700 /root # AIDE — мониторинг целостности файлов: apt install aide aide --init mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db # Проверка (запускать регулярно): aide --check`) utils.Section("Lynis — аудит безопасности") utils.Code(`Lynis — инструмент аудита безопасности Linux. Проверяет более 300 параметров, даёт рекомендации. # Установка: apt install lynis # или из репозитория (актуальная версия): git clone https://github.com/CISOfy/lynis cd lynis && ./lynis audit system # Запуск: lynis audit system # полный аудит системы lynis audit system --quick # быстрый lynis audit system --pentest # более агрессивные проверки lynis show tests # список всех тестов # Результаты: # /var/log/lynis.log — детальный лог # /var/log/lynis-report.dat — машиночитаемый отчёт # Hardening Index: 0-100 (выше = лучше) # OpenSCAP (RHEL): dnf install scap-security-guide openscap-scanner # Проверка по CIS Benchmark: oscap xccdf eval \ --profile xccdf_org.ssgproject.content_profile_cis \ --results results.xml \ /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml`) utils.Footer() }