Главная / ИБ

🔒 Безопасность

Сертификаты и шифрование, права доступа, учётные записи, firewall, разбор и трассировка процессов.

🔏openssl — сертификаты и ключи

  • приватный ключ с шифрованием openssl genpkey -algorithm rsa -out key.pem -aes256
  • публичный ключ из приватного openssl rsa -in key.pem -pubout -out pub.pem
  • самоподписанный сертификат openssl req -new -x509 -key key.pem -out cert.crt -days 365
  • содержимое сертификата openssl x509 -in cert.crt -text -noout
  • CSR для центра сертификации openssl req -new -key key.pem -out req.csr
  • конвертация pem/der openssl x509 -in cert.crt -out cert.pem -outform pem
  • версия openssl openssl version

🔑gpg / age — шифрование

  • создать пару ключей gpg --full-generate-key
  • список ключей gpg -k
  • подписать без шифрования gpg --clearsign doc.txt
  • зашифровать и подписать получателю gpg -es -r alice@example.com doc.txt
  • зашифровать только паролем gpg -c doc.txt
  • расшифровать gpg -d doc.txt.gpg
  • экспорт ключа gpg --export -a alice@example.com
  • зашифровать паролем через age age -p -o file.age file
  • зашифровать по публичному ключу age -r pubkey -o file.age file
  • расшифровать приватным ключом age -d -i key.txt -o file file.age

🗝️Права доступа и ACL

  • дать владельцу право выполнения chmod u+x file
  • забрать выполнение у группы chmod g-x file
  • убрать все права у "прочих" chmod o= file
  • рекурсивно чтение+условное выполнение chmod -R a+rX dir
  • запретить изменение/удаление даже root'ом sudo chattr +i file
  • разрешить только дозапись, для логов sudo chattr +a file
  • посмотреть атрибуты lsattr file
  • права конкретному пользователю setfacl -m u:bob:rw file
  • убрать ACL для пользователя setfacl -x u:bob file
  • посмотреть ACL getfacl file
  • текущая маска новых файлов umask
  • без прав группе и прочим по умолчанию umask 077

👤Учётные записи

  • срок действия пароля пользователя chage -l username
  • включить истечение через 10 дней sudo chage -M 10 username
  • отключить истечение пароля sudo chage -M -1 username
  • дата истечения аккаунта sudo chage -E YYYY-MM-DD username
  • заставить сменить пароль при входе sudo chage -d 0 username
  • статус пароля passwd -S
  • сделать пароль пустым sudo passwd -d username

🧱Firewall — iptables / nft / ufw

  • список правил со счётчиками sudo iptables -vnL --line-numbers
  • правило для IP с портом и протоколом sudo iptables -A chain -s ip -p tcp --dport port -j rule
  • NAT: маскарад подсети sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
  • удалить правило по номеру строки sudo iptables -D chain rule_number
  • текущий конфиг nftables sudo nft list ruleset
  • новая таблица sudo nft add table inet filter
  • accept-правило на несколько портов sudo nft add rule inet filter input tcp dport { ssh, http, https } accept
  • удалить правило по handle sudo nft delete rule inet filter input handle 3
  • включить/выключить ufw sudo ufw enable
  • правила с номерами sudo ufw status numbered
  • разрешить порт с комментарием sudo ufw allow 5432 comment "service"
  • разрешить только с конкретного IP sudo ufw allow proto tcp from 192.168.0.4 to any port 22
  • удалить правило по номеру sudo ufw delete rule_number

🌍openssl s_client — проверка TLS

  • подключиться и показать сертификат openssl s_client -connect host:443
  • только цепочка сертификатов openssl s_client -connect host:443 -showcerts
  • с указанием SNI openssl s_client -connect host:443 -servername host
  • дата истечения сертификата echo | openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -dates
  • проверить конкретный TLS-протокол openssl s_client -connect host:443 -tls1_2
  • STARTTLS для SMTP openssl s_client -connect host:25 -starttls smtp

🔐SSH — ключи и защита

  • сгенерировать ed25519-ключ ssh-keygen -t ed25519 -C "comment"
  • скопировать публичный ключ на сервер ssh-copy-id -i key.pub user@host
  • сменить пароль (passphrase) ключа ssh-keygen -p -f key
  • отпечаток ключа ssh-keygen -lf key.pub
  • запретить вход по паролю, в /etc/ssh/sshd_config PasswordAuthentication no
  • запретить root по SSH, в /etc/ssh/sshd_config PermitRootLogin no
  • сменить порт SSH, в /etc/ssh/sshd_config Port 2222
  • проверить конфиг перед перезапуском sudo sshd -t

🛡️sudo / sudoers

  • безопасное редактирование sudo visudo
  • список прав текущего пользователя sudo -l
  • команды без пароля для группы %wheel ALL=(ALL) NOPASSWD: ALL
  • запуск от имени другого пользователя sudo -u username command
  • сбросить кэш пароля sudo sudo -k
  • разрешить конкретную команду без пароля user ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx

🚫fail2ban — защита от брутфорса

  • статус всех jail sudo fail2ban-client status
  • статус конкретного jail sudo fail2ban-client status sshd
  • разбанить IP sudo fail2ban-client set sshd unbanip ip
  • забанить вручную sudo fail2ban-client set sshd banip ip
  • перечитать конфиг sudo fail2ban-client reload
  • список забаненных из iptables sudo iptables -L f2b-sshd -n

🕵️auditd — аудит событий ядра

  • следить за файлом на запись sudo auditctl -w /etc/passwd -p wa -k passwd_changes
  • список текущих правил sudo auditctl -l
  • поиск событий по ключу sudo ausearch -k passwd_changes
  • события конкретного пользователя sudo ausearch -ua username
  • сводка по правилу sudo aureport -k

🎚️Capabilities — точечные привилегии

  • посмотреть capabilities файла getcap /usr/bin/binary
  • дать бинарнику bind на порты <1024 без root sudo setcap cap_net_bind_service=+ep /usr/bin/binary
  • снять все capabilities sudo setcap -r /usr/bin/binary
  • capabilities текущего процесса getpcaps pid

🪲Разбор и трассировка процессов

  • подключиться к процессу по PID sudo strace -p pid
  • фильтр по типу syscall sudo strace -p pid -e network,file
  • сводная статистика по вызовам sudo strace -p pid -c
  • трассировка сети + дочерних процессов в файл strace -f -e trace=network -o trace.txt program
  • библиотечные вызовы программы ltrace path/to/program
  • сводка по библиотечным вызовам ltrace -c path/to/program
  • подключить отладчик к процессу gdb -p pid
  • отладка по core dump gdb -c core executable
  • кто слушает конкретный порт lsof -i :443
  • файлы, открытые пользователем lsof -u username
  • кто держит файл/директорию fuser path/to/file
  • убить всех, кто держит порт fuser -k 8080/tcp