====== Обеспечение безопасности UNIX решений ====== ===== Программа курса ===== * [[http://www.specialist.ru/course/yunbez|Linux (Ubuntu)/FreeBSD. Уровень 3. Обеспечение безопасности систем, сервисов и сетей]] ===== Модуль 0. Подготовка стенда в классе. ===== * Узнать свой номер стенда * Удалить виртуалки * Удалить профили putty * Отключить не используемые адаптеры * Записать логин пароль и IP (сообщить преподавателю) рабочей станции * Проверить наличие дистрибутивов и образов ===== Модуль 1. Развертывание сети и сервисов предприятия ===== ==== Теория ==== * [[http://ru.wikipedia.org/wiki/Информационная_безопасность|Информационная безопасность]] * [[http://en.wikipedia.org/wiki/STRIDE_(security)|STRIDE is a system developed by Microsoft for thinking about computer security threats]] * [[http://ru.wikipedia.org/wiki/DMZ_(компьютерные_сети)|Demilitarized Zone — демилитаризованная зона, ДМЗ]] ==== Лабораторные работы ==== Сценарий: 192.168.X/24 - "белая" DMZ сеть, 192.168.100+X - "серая" LAN сеть Если занятие не в комплексе "Радио", выполнить на рабочей станции: route -p add 192.168.0.0 mask 255.255.0.0 10.N.M.252 ==== 1.1 Настройка систем Gate и Сервер ==== * [[Настройка стендов слушателей]] * Адаптер 3 - Виртуальный адаптер хоста (eth2/em2) * Подключаемся putty к server и gate к адресам 192.168.X.Y === Debian/Ubuntu === root@gate:~# cat /etc/network/interfaces ... auto eth2 iface eth2 inet static address 192.168.100+X.1 netmask 255.255.255.0 === FreeBSD === # cat /etc/rc.conf ... ifconfig_em2="192.168.100+X.1/24" ... ==== 1.2 Настройка системы Lan ==== * 64 бита для Docker * [[Настройка стендов слушателей#Общие файлы конфигурации]] === Debian/Ubuntu === root@localhost:~# cat /etc/hostname lan.corpX.un root@localhost:~# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.100+X.10 netmask 255.255.255.0 gateway 192.168.100+X.1 root@localhost:~# init 6 === FreeBSD === # cat /etc/rc.conf hostname="lan.corpX.un" ifconfig_em0="192.168.100+X.10/24" defaultrouter=192.168.100+X.1 keyrate="fast" sshd_enable=yes # init 6 ==== 1.3 Подключение сети предприятия к Internet ==== * Назначаем host системе на интерфейсе "VirtualBox Host-Only Network" ip address 192.168.100+X.20/24 и подключаемся putty к lan * Настраиваем доступ в Internet из сети LAN ([[Сервис NAT#Трансляция на основе адреса отправителя]]) * Тестируем lan# apt update lan# pkg update -f lan# pkg install pkg * Копируем ключи ssh с системы lan на gate и server ([[Сервис SSH|Аутентификация с использованием ключей ssh]]) ==== 1.4 План размещения сервисов в сети предприятия ==== === Сервис DNS === Уже развернут у провайдера === Сервис EMAIL === Будет развернут на системе server === Сервис DHCP === Разворачиваем на системе gate в сети LAN (можно не разворачивать, назначив клиенту 101-й адрес статически) * Сервис DHCP [[Сервис DHCP#Установка]] * Сервис DHCP [[Сервис DHCP#Стандартная настройка]] (поправить интерфейс, сеть и DNS) * [[Сервис DHCP#Проверка конфигурации и запуск]] * Запуск системы client1 === Файловый сервис === Будет развернут на системе lan === Сервис WWW === Сценарий: внешний корпоративный сайт на server * [[Сервис INETD]] * [[Средства программирования shell#Web сервер на shell]] ===== Модуль 2. Анализ информационных систем предприятия с точки зрения безопасности ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%90%D1%83%D0%B4%D0%B8%D1%82_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8|Аудит информационной безопасности]] * [[https://ru.wikipedia.org/wiki/Nmap|Nmap]] * [[https://www.kali.org/|Kali Linux - Advanced Penetration Testing Linux Distribution]] * [[https://ru.wikipedia.org/wiki/OpenVAS|OpenVAS]] * [[https://youtu.be/zjzdqqk7xmo|Видео урок: Аудит системных событий в Linux/FreeBSD]] ==== Лабораторные работы ==== ==== 2.1 Сканеры безопасности систем ==== Сценарий: сканирование портов сервисов системы server, находим web сервер * [[Утилита nmap]] * [[http://www.nestor.minsk.by/sr/2006/10/sr61006.html|защита FreeBSD от OS Fingerprinting с использоанием PF]] Сценарий: определяем "вручную" нет ли уязвимости directory traversal gate.isp.un$ curl --path-as-is http://server.corpX.un/../../../etc/passwd gate.isp.un$ fetch -o - http://server.corpX.un/../../../etc/passwd gate.isp.un$ telnet server.corpX.un 80 GET /../../../etc/passwd HTTP/1.1 GET /../../../etc/shadow HTTP/1.1 GET /../../../etc/master.passwd HTTP/1.1 Сценарий: автоматизированный поиск уязвимостей * [[Сервис OpenVAS]] ([[https://openvas.isp.un/]]) ==== 2.2 Сканеры безопасности сети ==== Сценарий: перехват учетных данных при обновлении пользователем user1 веб информации на server по протоколу ftp * [[Управление учетными записями в Linux]], [[Управление учетными записями в FreeBSD]] * [[Сервис FTP#Сервер ftp]] * [[Утилита ettercap]] * [[Утилиты для тестирования сети#tcpdump]] ==== 2.3 Аудит систем ==== === Проверка стойкости паролей === * [[http://www.openwall.com/john/|John the Ripper password cracker]] * [[https://www.cloudcracker.com/|An online password cracking service]] * [[Утилита john]] === Проверка целостности системы === Сценарий: находим модифицированное ПО (можно изменить код web сервера) * [[Утилита tripwire]] * [[https://youtu.be/FR_5am9__Ug|Видео Урок: Tripware - мониторинг и предупреждения об изменениях файлов в системе]] === Проверка системы на наличие закладок === * [[http://housecomputer.ru/os/unix/bsd/freebsd/freebsd_server_security.html|Безопасность сервера FreeBSD: проверка на rootkit]] * [[https://www.upcloud.com/support/scanning-centos-server-for-malware/|Scanning CentOS 7 Server for Malware]] * [[Утилита rkhunter]] (В Debian: не работает, устанавливает exim) * [[Утилита chkrootkit]] === Аудит системных событий === Сценарий: фиксируем обращения к файлам базы данных учетных записей со стороны процессов с EUID=user1. Можно тестировать из shell или запустить www сервер на server с правами user1 * [[Система FreeBSD Audit]] * [[Система Linux Auditing]] * [[https://youtu.be/zjzdqqk7xmo|Видео урок: Аудит системных событий в Linux/FreeBSD]] ===== Модуль 3. Защита систем предприятия ===== ==== Теория ==== * [[https://habrahabr.ru/company/xakep/blog/305262/|Гугл для хакера]] * [[https://nvd.nist.gov/vuln/search|Computer Security Resource Center National Vulnerability Database]] Keyword Search: Apache 2.4.18 * [[http://ru.wikipedia.org/wiki/Chroot|Вызов Chroot]] * [[https://ru.wikipedia.org/wiki/Песочница_(безопасность)|Песочница безопасность]] * [[http://www.freebsd.org/doc/ru/books/handbook/securing-freebsd.html|Нandbook: Защита FreeBSD]] * [[http://www.openbsd.org/|OpenBSD - ОС ориентированная на безопасность]] * [[http://ru.wikipedia.org/wiki/Переполнение_буфера|Переполнение буфера]] * [[http://www.unixwiz.net/techtips/mirror/chroot-break.html|Выход из Chroot]] * [[http://samag.ru/archive/article/341|GRSecurity]] * [[https://wiki.gentoo.org/wiki/Hardened_Gentoo/ru|Hardened Gentoo]] ==== Лабораторные работы ==== ==== 3.1 Обновление систем ==== * [[Управление ПО в Linux]] * [[Обновление системы и базового ПО в FreeBSD]] * [[Обновление дополнительного ПО в FreeBSD]] ==== 3.2 Управление привилегиями сервисов ==== === Система безопасности UNIX === Сценарий: Запуск www сервера с правами пользователя user1 не позволит получить через него доступ к /etc/shadow (linux) или /etc/master.passwd (freebsd) * [[Система безопасности UNIX]] * [[Сервис INETD]] === POSIX ACL === Сценарий: с помощью POSIX ACL запрещаем пользователю user1 читать файл /etc/passwd * [[POSIX ACL]] ==== 3.3 Изоляция сервисов ==== === Модули Linux LSM и FreeBSD MAC === Сценарий: ограничения, накладываемые политиками на www сервер на server не позволят получить через него доступ к любым файлам, кроме разрешенных даже в случае запуска его с правами root * [[Модуль AppArmor]] * [[Модули MAC]] * [[Модуль SELinux]] * [[https://youtu.be/AaB5mL3SAlQ|Видео Урок: FreeBSD MAC and Linux AppArmor]] === Изоляция сервисов в файловой системе === Сценарий: запуск www сервера на server в chroot позволит получить через него доступ только к файлам, которые мы скопировали в chroot окружение * [[Команда chroot]] === Изоляция сервисов в выделенном окружении === Сценарий: переносим www хостинг в контейнер * [[Технология jail]] * [[Технология namespaces]] * [[Технология cgroup]] * [[Технология LXC]] * [[Сервис HTTP#Установка и запуск сервера Apache]] на www * [[Технология Docker]] (Разворачивать на lan, поскольку правила, добавленные docker-ce в netfilter блокируют LXC подключенный к bridge) * Linux ([[Управление учетными записями в Linux#Перемещение учетных записей]]), FreeBSD ([[Управление учетными записями в FreeBSD#Перемещение учетных записей]]) ==== 3.4 Усиление системы с помощью специальных средств ==== * [[Linux Hardened]] * [[https://youtu.be/-6aM7q27NbM|Видео урок: Использование GRSecurity]] ===== Модуль 4. Защита сервисов предприятия ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Шифрование]] * [[https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%BC_%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC|Криптосистема с открытым ключом]] *[[https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8|Центр сертификации]] * [[https://ru.wikipedia.org/wiki/%D0%90%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F|Аутентификация]] * [[https://en.wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail|Privacy-enhanced Electronic Mail]] ==== Лабораторные работы ==== ==== 4.1 Ограничения учетных записей пользователей сервисов ==== Сценарий: разворачиваем на server, MTA для домена server.corpX.un, IMAP без SSL. Учетные записи почтовых пользователей не должны иметь shell, предоставляющий командную строку * [[Сервис MTA#Настройка MTA]] * [[Управление учетными записями в Linux]], [[Управление учетными записями в FreeBSD]] * [[UA mail]] * [[Сервер dovecot]] * В linux ([[Управление учетными записями в Linux#Изменение атрибутов учетной записи]]) * В freebsd ([[Управление учетными записями в FreeBSD#Изменение атрибутов учетной записи]]) ==== 4.2 Скрытие баннеров сервисов ==== Сценарий: заменяем банеры сервисов SMTP, IMAP, FTP, HTTP, CIFS, SSH * Сервис SMTP ([[Сервис MTA#Сокрытие названия сервиса]]) * Сервис IMAP ([[Сервер dovecot#Сокрытие названия сервиса]]) * Сервис FTP ([[Сервис FTP#Сокрытие названия/версии сервиса]]) * Сервис HTTP ([[Сервис HTTP#Сокрытие версии сервиса]]) gate# curl -I http://www.corpX.un/ * Сервис CIFS ([[Файловый сервер SAMBA#Публичный каталог доступный на запись]], [[Файловый сервер SAMBA#Сокрытие названия/версии сервиса]]) * Сервис SSH ([[http://www.cyberciti.biz/faq/howto-ssh-server-hide-version-number-sshd_config/|OpenSSH Hide Version Number From Clients]]) ==== 4.3 Замена устаревших сервисов ==== Сценарий: для хостинга на www используем SFTP вместо FTP * [[Сервис SSH#SSH вместо FTP (SFTP)]] * [[Сервис HTTP#Использование домашних каталогов]] Сценарий: защита web сервера от DoS атак (демонстрирует преподаватель на CentOS вместе с SElinux) * [[Сервис XINETD]] ==== 4.4 Шифрование трафика ==== === Подготовка стенда === * [[Локализация системы#Локализация временной зоны]] * [[Сервис NTP]] для FreeBSD систем gate, server, lan === Использование самоподписанных цифровых сертификатов === Сценарий: замена сервиса HTTP на HTTPS на server (демонстрирует преподаватель) * [[Пакет OpenSSL#Использование алгоритмов с открытым ключем]] * [[Пакет OpenSSL#Создание самоподписанного сертификата]] для системы server * [[Сервис HTTP#Поддержка протокола HTTPS]] для системы server === Использование PKI === Сценарий: - развертывание корпоративного CA (на lan) - замена HTTP на HTTPS (на www) - замена IMAP на IMAPS (на server) - в client-ах добавляем сертификат CA в корневые центры сертификации * [[Сервис HTTP#Установка и запуск сервера Apache]] на lan * [[Пакет OpenSSL#Создание центра сертификации]] на lan (удалить index.html) * [[Пакет OpenSSL#Создание сертификата сервиса, подписанного CA]] для www * [[Сервис HTTP#Поддержка протокола HTTPS]] для www * [[Сервер dovecot#Использование сертификатов для шифрования трафика]] IMAPS на server (демонстрирует преподаватель) ==== 4.5 Аутентификация и Авторизация доступа к сервису ==== * [[Управление идентификацией в сетях UNIX и Windows]] * [[https://youtu.be/-fcJ8MkoLts|Видео урок: Использование одноразовых паролей OPIE]] * [[https://youtu.be/kXi1KXYy-NE|Видео урок: SSH SSO]] **Задание:** создание пользовательских сертификатов * [[Пакет OpenSSL#Создание пользовательского сертификата, подписанного CA]] * [[Пакет OpenSSL#Оформление сертификата и ключа в формате PKS#12 с парольной защитой]] lan# cp user* /disk2/ lan# chown -R games /disk2 **Сценарий:** использование пользовательских сертификатов на server и для электронной подписи * [[Thunderbird]] (подделку писем удобнее показать в старой версии) **Сценарий:** использование пользовательских сертификатов для доступа по https на www * [[Сервис HTTP#Управление доступом к HTTP серверу на основе сертификатов]] * [[Сервис HTTP#Использование директивы Redirect]] * [[Сервис HTTP#CGI интерфейс сервера]] **Сценарий:** использование пользовательских сертификатов для доступа по imaps на server * [[Сервер dovecot#Аутентификация на основе пользовательских сертификатов]] в протоколе IMAP ==== 4.6 Ограничение доступа к сетевым сервисам ==== === Статичное, с использованием специальных средств === Сценарий: разрешаем подключение к gate только из DMZ * [[Сервис Tcpwrap]] === Статичное, с использованием средств встроенных в сервис === * [[Файловый сервер SAMBA#Публичный каталог доступный на запись]] * [[Сервис DNS#Ограничение доступа к DNS серверу]] * [[Сервис MTA#Настройка MTA на релеинг почты из LAN]] * [[Сервис HTTP#Управление доступом к HTTP серверу на основе сетевых адресов]] * [[Установка, настройка и запуск пакета SQUID]] === Адаптивное, с использование специальных средств === * [[Защита почты от вирусов и SPAMа]] * [[Антивирусная защита web трафика SQUID]] Сценарий: препятствуем попыткам сканирования системы server * [[Сервис Portsentry]] * [[https://youtu.be/6I0B3F179oE|Видео урок: Honeypot из tcpwrap и portsentry]] Сценарий: блокируем атаки на сервис SSH на server * [[Сервис Fail2ban]] ==== 4.7 Шифрование контента ==== Сценарий: размещаем данные пользователей на шифрованном разделе для сервера SAMBA * Создаем раздел, без файловой системы ([[Управление файловыми системами в Linux#Добавление дисков в Linux]], [[Управление файловыми системами в FreeBSD#Добавление дисков в FreeBSD]]) * [[Управление файловыми системами в Linux#Использование шифрованных разделов в Linux]], [[Управление файловыми системами в FreeBSD#Использование шифрованных разделов в FreeBSD]] * [[Файловый сервер SAMBA#Установка]] сервера SAMBA * [[Файловый сервер SAMBA#Публичный каталог доступный на запись]] * Убираем сервисы smbd и nmbd из автозагрузки ([[Управление сервисами в Linux]], [[Управление сервисами в FreeBSD]]) ==== 4.8 Специальные решения ==== Сценарий: защита LAN от посторонних сервисов DHCP * [[Материалы по Windows#DHCP, TFTP, DNS, SNTP и Syslog для Windows]] * [[Оборудование уровня 2 Cisco Catalyst#DHCP snooping]] * [[Сервис DHCP#Поиск и подавление посторонних DHCP серверов]] ===== Модуль 5. Защита сети предприятия ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD|Межсетевой экран]] * [[http://www.linux.org.ru/forum/security/1320671|еще один споcоб блокировать ssh bruteforce роботов]] * [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D1%82%D0%BE%D1%80%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9|Система обнаружения вторжений]] * [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%82%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D1%82%D0%BE%D1%80%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9|Система предотвращения вторжений]] ==== Лабораторные работы ==== ==== 5.1 Пакетные фильтры ==== Сценарий: защита сервиса ssh на server от bruteforce * [[Сервис Firewall#Конфигурация для защиты от bruteforce]] (атакуем server через putty с host системы) ==== 5.2 Системы IDS и IPS ==== Сценарий: фиксируем атаки на server из WAN, проверять с gate.isp.un * [[Сервис SNORT]] на gate (указать правильный интерфейс) Сценарий: блокируем атаки на server из WAN, проверять с client1, переместив его в WAN (демонстрирует преподаватель на FreeBSD) * [[Сервис SNORTSAM]] * [[Сервис BARNYARD2]] * [[Сервис Fail2ban#Интеграция fail2ban и snort]] ===== Модуль 6. Использование VPN для соединения сетей филиалов предприятия и удаленных пользователей ===== ==== Теория ==== * [[http://ru.wikipedia.org/wiki/VPN|Virtual Private Network — виртуальная частная сеть]] ==== Лабораторные работы ==== ==== 6.1 Использование сервиса SSH ==== === SSH вместо VPN (привязка к порту клиента) === Сценарий: Отключаем на host системе VirtualBox Host-Only Network адаптер и, используя доступность LAN с server, осуществляем доступ по HTTP в систему LAN через учетную запись user1 системы server * Добавляем учетную запись user1 в linux ([[Управление учетными записями в Linux#Добавление учетной записи]]), в freebsd ([[Управление учетными записями в FreeBSD#Добавление учетной записи]]) * [[Сервис SSH#SSH вместо VPN (привязка к порту клиента)]] === SSH вместо VPN (привязка к порту сервера) === Сценарий: отключаем доступность LAN с server (и других систем, имеющих туда маршрут), осуществляем доступ по RDP в сеть LAN через учетную запись user1 системы server с использованием ssh соединения между lan и server * Настройка Firewall ([[Сервис Firewall#Конфигурация для шлюза WAN - LAN - DMZ]]) * Назначаем host системе на интерфейсе "VirtualBox Host-Only Network" ip address 192.168.100+X.20/24 и подключаемся putty к lan * [[Сервис SSH#SSH вместо VPN (привязка к порту сервера)]], использовать Bitvise SSH Client (Tunnelier) ==== 6.2 Пакет OpenVPN ==== Сценарий: требуется предоставить авторизованный доступ внешних пользователей к любым LAN сервисам компании, например - CIFS * [[Пакет OpenSSL#Инициализация списка отозванных сертификатов]] lan# scp /etc/ssl/openssl.cnf gate:/etc/ssl/ lan# scp /var/www/html/ca.crt gate: lan# scp /var/www/html/ca.crl gate: * [[Пакет OpenSSL#Создание сертификата сервиса, подписанного CA]] для gate * [[Пакет OpenVPN]] * [[Пакет OpenVPN#Настройка client/server конфигурации]] * [[Пакет OpenSSL#Отзыв сертификатов]] Сценарий: требуется объединить сети филиалов * [[Пакет OpenVPN]] * [[Пакет OpenVPN#Настройка peer2peer конфигурации]] ===== Дополнительные материалы ===== * [[http://www.onlinepasswordgenerator.ru/|Генератор паролей]] * [[http://sectools.org/tag/crackers/|Top 125 Network Security Tools]] * [[http://www.opennet.ru/dev/alertmon/DoS_prevent.txt|Рекомендации по защите от DoS атак]] * [[https://www.linux.org.ru/news/security/11204691|Утилита для создания MitM-точек доступа: wifiphisher]] * [[http://www.vesti.ru/doc.html?id=2006216|Shellshock оставил беззащитным Интернет]]