====== Обеспечение безопасности 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 оставил беззащитным Интернет]]