Безопасность в Linux

Published on Jul 08, 2017

No Description

PRESENTATION OUTLINE

Безопасность в Linux

Photo by deqalb

Внутренние механизмы

  • SELinux / AppArmor - политики доступа в соответствии с ролями и профилями
  • PAM - модульная проверка логина, пароля, настроек сеанса (/etc/pam.d)

Контекст безопасности SELinux

  • Домен - минимально необходимый и достаточный список действий
  • Роль - объединяет несколько доменов
  • Тип - набор действий по отношению к файловой системе
  • Контекст безопасности применен ко всем файлам и процессам (ls -Z, ps axZ)

Контекст безопасности

  • user:role:type/domain:mls (mls - уровень доступа)
  • type: user_home_t - каталоги пользователей,
  • chcon - изменение контекста, genhomedircon - автоматический контекст домашнего каталога

Пакет policycoreutils

  • Набор контекстов - модуль (semodule)
  • Управление контекстами и разрешениями (включая доступ к портам) - semanage
  • setroubleshootd - анализ отказов, sealert - диагностика

Режимы применения

  • Ограниченные (setenforce 1) или разрешительные (setenforce 0)
  • В разрешительном тогда сохраняются в журналы, но не блокируются
  • Можно полностью отключить (в grub: selinux=0)

AppArmor

  • Аналогично SELinux, управление в apparmor-utils (aa-*), состояние - apparmor_status
  • Описание в профилях (/etc/apparmor.d), импорт - apparmor_parser -a (или -r при перезагрузке)
  • Файлы определяются полным именем

AppArmor

  • Профиль определяется capability (по Posix.1e) и правами к файлам (rwx, m - использование mmap, ix - запуск с профилем запускающего
  • Может включать разрешения dbus и создаваться по результатам обучения aa-genprof

PAM

  • auth - аутентификация (например, pam_mysql)
  • account - ограничения учётной записи, (например, pam_access и /etc/security/access.conf)
  • session - установка сеанса (например, pam_limits)
  • password - изменение пароля

Флаги pam

  • required - модуль должен дать положительный ответ, но остальные отрабатывают (requisite - сразу прекращается)
  • sufficient - при положительном ответе запрос удовлетворяется
  • optional - результат игнорируется

pam_limits

  • Более гибкий механизм, чем ulimit (регулировка до уровня пользователя или группы)
  • Список item совпадает с ulimit -a

Ограничение системных ресурсов

  • Квоты на пользователя: quotacheck - просмотр, edquota - изменение
  • cpulimit --pid= | --path= (до 100 на ядро)

Анализ

  • apachetop - просмотр журналов и подключений apache
  • powertop - использование процессора процессами
  • iotop - статистика по вводу-выводу
  • uptime - нагрузка, количество пользователей и время с загрузки

Защита портов

  • inetd (или xinetd) запускает сервер только при запросе, позволяет установить ограничения (например, на количество)
  • disabled - для запрещенных, socket_type=raw (для ip) или stream (для сокетов)

Защита портов

  • server - путь к процессу сервера
  • only_from, no_access - контроль доступа, log_on_success, log_on_failure - запись в журнале
  • port - номер порта, cps - количество запросов в секунду и время до восстановления

Просмотр статистики

  • ntopng - статистика по сетевым протоколам (-i - название интерфейса, -e - запуск в фоновом режиме, -w - порт для веб-интерфейса, --capture-direction - направление трафика). admin/admin

Установка ntop-ng

Анализ сетевой безопасности

  • nmap - сканирование портов (и, иногда, ресурсов)
  • kismet - сканер wi-fi сетей и трафика (использует pcap, как и tcpdump, wireshark)

Другие инструменты для анализа сети

  • iftop - статистика по запросам и протоколам (1-3 - сортировка, f - фильтр), iptraf - аналог
  • bandwidthd - сводная статистика по трафику (создаёт html-отчёты)
  • etherape - графическое отображение сетевых взаимодействий
  • tcpdump / ngrep - захват трафика

Запуск задач по расписанию

  • at - выполнение в указанное время (at -f
  • cron - выполнение по расписанию (управление - crontab -e)
  • incron - выполнение по событию (например, изменению файла)

Анализ и управление памятью

  • pmap - распределение памяти между процессами
  • ldd - просмотр зависимых библиотек

incron

  • Флаги: IN_ACCESS - доступ к файлу, IN_MODIFY - изменение файла, IN_OPEN - открытие, IN_MOVE - перемещение и др.)

Анализ действий

  • multitail - отображение нескольких журналов (разделение экрана)
  • пример: multitail -f -i log1 -i log2 ...
  • можно создавать автоматические окна под новые файлы: -q
  • -a file - запись также в файл

Настройки logwatch

  • --detail - уровень детализации журналов
  • --service - названия сервисов (можно использовать all)
  • --range - интервал времени для анализа
  • Отчёты могут отправляться на почту

Анализ системных журналов

  • logwatch - исследование журналов и оповещение об аномальной активности (конфигурация в /usr/share/logwatch/default.conf/logwatch.conf, сервисы - /usr/share/logwatch/scripts/services)

Мониторинг ресурсов

  • nmon - мониторинг ресурсов сервера и файловых систем (в т.ч. сетевых)
  • glances - сводная панель мониторинга ресурсов
  • monit - проверка состояния и автоматический перезапуск процессов

Кто работает на сервере?

  • whowatch - показывает физические и псевдотерминалы и запущенные процессы
  • lsof - список открытых файлов

Использование nmap

  • Сканирование портов и известных ресурсов (и, иногда, определение версии серверов)
  • nmap [-sn]

nmap для сканирования портов

  • nmap -p , в номере порта можно указать T: или U: (TCP / UDP). Адрес можно задавать в CIDR (с длиной маски ip/len)
  • nmap -O - определение ОС, -sV - версии сервисов, -sA - firewall

nmap - сканирование на уязвимости

  • nmap -A - все тесты, -T
  • nmap -S
  • -PN - не проверять на доступность ping

nmap-хитрости

  • -f
  • --spoof-mac - подмена mac, -S - подмена ip
  • --badsum - отправка пакетов с неверной контрольной суммой
  • --data-length

Локальные уязвимости

  • Выполняемые файлы с suid/sgid. Поиск: find / -perm +6000 -type f -print
  • Инструмент lynis (lynis system audit - подробный анализ на ошибки конфигурации), OpenVAS - анализатор на уязвимости с веб-интерфейсом (использует базы CVE, NVT и др.), rkhunter

Шифрование и цифровые подписи

  • gpg - инструмент для шифрования с открытым ключом.
  • Пара ключей хранится в keyring (публичный идентифицируется через фрагмент хэша)

Создание ключей

  • gpg --gen-key - создание
  • gpg --export >gpg.pub либо gpg --keyserver - сохранение (-a - вывод в текстовом формате)
  • gpg --import - импорт публичного ключа
  • gpg --list-keys - просмотр

Цифровая подпись

  • gpg --verify - проверка
  • gpg --sign (--clearsign) - подпись (clearsign создаёт файл asc, не изменяя исходный)
  • gpg --encrypt / --decrypt - зашифровать и расшифровать данные

Шифрование разделов диска

  • dm-crypt + шифрование реализуется в LUKS
  • cryptsetup -v luksFormat
  • cryptsetup open --type luks
  • mkfs.ext4 /dev/mapper/

Безопасный удалённый доступ

  • SSH (Secure Shell) - использует RSA-ключи (TCP/22) и протокол обмена ключами
  • Шифры можно выбирать, лучше исключить слабые (например, arcfour)
  • Реализация сервера - openssh, клиенты - ssh, putty

Безопасный удалённый доступ

  • ssh-keygen - создание ключей
  • ssh-copyid - передача ключа для применения для аутентификации
  • ssh -i
  • ssh-audit - проверка на ошибки конфигурации, слабые ключи и уязвимости

Безопасное подключение

  • ssh - удаленное подключение к консоли, выполнение команд (также scp - передача файлов через ssh)
  • Защита - port-knocking (процесс knockd, часто используется с iptables) или fail2ban (блокировка ip при аномальном подборе)

Перенос файлов

  • ftp - протокол передачи файлов, реализации: vsftpd, proftpd. Не защищен, но может требовать аутентификацию.
  • scp - передача файлов через ssh.

Перенос файлов

  • lftp - быстрая передача через ftp (например, для резервного копирования или создания зеркала)
  • rsync - синхронизация каталогов (в т.ч. через сеть)

Резервное копирование Bacula

  • Поддержка систем хранения (сетевые, ленточные и др.)
  • Распределенная архитектура - director, storage, file-daemon
  • Шифрование RSA при доставке до хранилища
  • FileSet + Schedule

Дистрибутив для контроля безопасности

  • KaliLinux - защищенный дистрибутив и инструменты для анализа уязвимостей
  • Metasploit Framework - коллекция эксплоитов (community версия входит в Kali Linux)
  • Tenable Nessus Home

Полезные инструменты

  • pwgen - генерация паролей
  • vFeed - база данных уязвимостей
  • file - определение типа файла по сигнатурам
  • clamav - сканер на наличие вирусов
  • snort или suricata - системы обнаружения вторжений

Спасибо за внимание

Ваши вопросы

Friend of Haiku Deck

Haiku Deck Pro User