→ Часть 1. Kali Linux: политика безопасности, защита компьютеров и сетевых служб
→ Часть 2. Kali Linux: фильтрация трафика с помощью netfilter
→ Часть 3. Kali Linux: мониторинг и логирование
В предыдущих трёх материалах мы рассказали о защите Kali Linux, о фильтрации трафика, о мониторинге. Сегодня подведём итоги и представим вашему вниманию несколько упражнений. Здесь приведён перевод разделов 7.6 и «Упражнения» главы 7 книги «Kali Linux Revealed».
7.6. Итоги
В этой главе мы рассмотрели концепции формирования политик безопасности, рассказали о том, на что стоит обратить внимание, создавая подобную политику, и описали некоторые угрозы, которые направлены как на компьютеры, так и на самих специалистов в области информационной безопасности. Мы обсудили меры по защите ноутбуков и настольных компьютеров, показали приёмы настройки встроенного в ядро Linux файрвола netfilter
. И, наконец, мы рассмотрели средства и стратегии для мониторинга Kali, показали как внедрить их для того, чтобы получить возможность вовремя обнаруживать потенциальные угрозы. Теперь подведём итоги, вспомним самое важное.
- Уделите время формированию политики безопасности.
- Если вы используете Kali Linux на общедоступном сервере, смените все стандартные пароли для служб, которые можно настраивать (подробнее — в разделе 7.3. «Защита сетевых служб») и ограничьте к ним доступ с помощью файрвола (подробнее — в разделе 7.4. «Файрвол или фильтрация пакетов»). Сделать это нужно до запуска служб.
- Используйте
fail2ban
для отражения атак, основанных на угадывании пароля, или удалённых атак на пароли методом грубой силы. - Если вы поддерживаете веб-службы, организуйте работу с ними через HTTPS для предотвращения перехвата трафика, который может включать аутентификационные куки-файлы, третьими лицами.
- Реальный риск часто возникает если вы путешествуете от клиента к клиенту. Например, ваш ноутбук могут украсть или изъять на таможне. Подготовьтесь к такому развитию событий, используя полное шифрование диска (подробнее — в разделе 4.2.2. «Установка на полностью зашифрованную файловую систему»). Рассмотрите возможность настройки функции самоуничтожения (подробности — в разделе «Установка пароля самоуничтожения для повышения уровня безопасности»). Это позволит вам надёжно защитить данные клиентов.
- Настройте правила файрвола (раздел 7.4. «Файрвол или фильтрация пакетов») для блокировки любого исходящего трафика, за исключением того, который генерирует ваше VPN-соединение. Как результат, вы организуете для себя безопасное сетевое подключение, а если оно окажется разорванным, вы тут же об этом узнаете (а не переключитесь на доступ к интернету по локальной сети).
- Отключите неиспользуемые службы. Kali упрощает эту задачу, так как все внешние сетевые службы по умолчанию отключены.
- В ядро Linux встроен файрвол
netfilter
. Не существует универсальных правил настройки файрволов, подходящих на все случаи жизни, так как пользователи могут предъявлять разные требования к сетям и сетевым службам. Настроить файрвол так, как нужно именно вам, можно из пространства пользователя, используя командыiptables
иip6tables
. - Программа
logcheck
умеет мониторить лог-файлы, просматривая их, по умолчанию, ежечасно, и отправлять администратору отчёты, содержащие необычные записи, для дальнейшего анализа. - Утилита
top —
это интерактивный инструмент, которые выводит список выполняющихся процессов. - Команда
dpkg --verify
(илиdpkg -V
) позволяет вывести отчёт о системных файлах, которые были модифицированы (возможно — злоумышленником). Её недостаток заключается в том, что сравнивая файлы, она полагается на их контрольные суммы, которые могут быть изменены хорошо подготовленным злоумышленником. - Инструмент Advanced Intrusion Detection Environment (AIDE) позволяет проверять целостность файлов, он обнаруживает любые изменения при сравнении существующих файлов с ранее сохранённым образом эталонной системы.
- Средство
tripwire
очень похоже на AIDE, но оно использует методику подписывания конфигурационного файла, благодаря чему атакующий не может изменить его так, чтобы он указывал на нужную ему версию эталонной базы данных. - Рассмотрите возможность использования утилит
rkhunter
,checksecurity
, иchkrootkit
, которые предназначены для поиска руткитов.
Упражнения
Ниже приведены несколько упражнений, которые позволят вам попрактиковаться в обеспечении безопасности Kali Linux.
▍Упражнение №1: защита при работе в сети
- Идентифицируйте все открытые порты в вашей установке Kali Linux.
- Настройте файрвол Kali так, чтобы он позволял осуществлять TCP-подключения только к портам 22, 80 и 443.
- Проверьте, заблокированы ли все остальные порты, используя утилиту вроде
netcat
. - Настройте систему так, чтобы правила файрвола сохранялись после перезагрузки. Перезагрузите компьютер для того, чтобы это проверить.
Примечание: если есть такая возможность, хорошо бы ответы на вопросы сделать в сворачиваемом блоке. Аналогично — по ответам на другие вопросы.
▍Ответы к упражнению №1
- Проверьте открытые порты:
root@kali:~# netstat -tulpen root@kali:~# iptables -n -L INPUT
Если в вашей системе некоторые порты уже заблокированы, или имеются ранее установленные правила
iptables
, вы можете от всего этого избавиться:root@kali:~# iptables -F INPUT root@kali:~# iptables -P INPUT ACCEPT root@kali:~# iptables -P FORWARD ACCEPT root@kali:~# iptables -P OUTPUT ACCEPT
Теперь проверьте, можете ли вы подключиться к порту 4444 на вашем компьютере, воспользовавшись
netcat
следующим образом:root@kali:~# nc -lnvp 4444 listening on [any] 4444 ...
С вашего хоста (если Kali запущена на виртуальной машине), или с другого компьютера, попробуйте подключиться к экземпляру
netcat
, который прослушивает порт 4444. После подключения введите что-нибудь с клавиатуры. Текст должен появиться там, где запущенnetcat
:root@HOST_MACHINE:~# nc -v 172.16.161.136 4444 aaaaaaaa
Обратите внимание на то, что если вы вводите текст с клавиатуры, но он не появляется на экране, значит — что-то пошло не так. Разберитесь с этим прежде чем продолжать. Если Kali установлена на виртуальную машину — переключитесь на использование сетевого моста вместо NAT. Добейтесь работоспособности сетевого соединения.
- Настройку файрвола можно выполнить с помощью следующих команд:
iptables -P INPUT DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
Теперь проверьте, можно ли снова подключиться к порту 4444 на машине, защищённой файрволом:
root@kali:~# nc -lvp 4444 listening on [any] 4444 ...
- Попытайтесь, с хост-компьютера, подключиться к
netcat
. Попытка подключения должна завершиться неудачей.root@HOST_MACHINE:~# nc -v 172.16.161.136 4444 nc: connectx to 172.16.161.136 port 4444 (tcp) failed: Operation timed out
- Теперь создайте скрипт
iptables
из ранее заданных правил:root@kali:~# iptables-save > /usr/local/etc/myconfig.fw
Зарегистрируйте конфигурационный скрипт в директиве
pre-up
файла/etc/network/interfaces
. Перезагрузите систему для того, чтобы убедиться в том, что настройки файрвола сохранились.auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp pre-up iptables-restore < /usr/local/etc/myconfig.fw
→ Вот решение на Asciinema (текст из видео копировать нельзя).
Вот как всё выглядит, с точки зрения хост-системы, с которой осуществляется подключение к виртуальной машине с Kali Linux.
▍Упражнение №2: мониторинг служб
- Установите
logcheck
. - Попытайтесь атаковать, методом грубой силы, собственную службу SSH, и посмотрите, заметит ли это
logcheck
, отправит ли он вам отчёт об атаке. - Запланируйте задание
cron
для ежечасного запускаlogcheck
таким образом, чтобы он, после анализа файлов журналов, создавал лог-файл в/data/$(date-time).log
.
▍Ответы к упражнению №2
- Установите
logcheck
и запустите его в первый раз:apt-get install logcheck sudo -u logcheck logcheck -o
- Загрузите список паролей, атакуйте собственную службу SSH с помощью брутфорсера
hydra
, посмотрите, что сообщит об этомlogcheck
:wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/500-worst-passwords.txt hydra -l root -P 500-worst-passwords.txt 127.0.0.1 ssh tail -f /var/log/auth.log sudo -u logcheck logcheck -o
- Напишите bash-скрипт следующего содержания:
mkdir -p /data/ sudo -u logcheck logcheck -o > /data/$(date +"%m-%d-%Y-%T").log
Сделайте его исполняемым и поместите в директорию
/etc/cron.hourly
.
→ Вот решение на Asciinema (текст можно копировать из видео).
▍Упражнение №3: защита файловой системы
- Установите
tripwire
. Начните наблюдение за изменениями файлов в директории/var/www/html/
. - Если вы всё сделали правильно, вы столкнётесь со множеством ошибок «File system error». Может быть вас хакнули? В любом случае, исправьте ситуацию.
▍Ответы к упражнению №3
- Установите
tripwire
и задайте файлы, которые вы хотите защитить:apt-get install tripwire # yes, yes, yes, yes nano /etc/tripwire/twpol.txt # list the directories and files you want to protect
Добавьте следующий блок кода в файл политик
tripwire
:# Webserver file and folder monitoring ( rulename = "Web server file and directories", severity = $(SIG_HI) ) { /var/www/html -> $(SEC_BIN); }
Теперь сделайте так, чтобы
tripwire
реагировал на изменения файлов в директории/var/www/html
:twadmin -m P /etc/tripwire/twpol.txt #Create Policy File tripwire --init #Initialize database tripwire --check #Initial integrity check touch /var/www/html/shell_backdoor.php tripwire --check tripwire --update-policy -Z low /etc/tripwire/twpol.txt tripwire --check
→ Вот решение на Asciinema (текст нельзя копировать из видео).
▍Информация к размышлению
- Вот интересный пример использования
iptables
. Можно превратить любой компьютер с беспроводным интерфейсом в беспроводную точку доступа с помощьюhostapd
. Вот источник этой идеи:iptables -t nat -F iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT echo '1' > /proc/sys/net/ipv4/ip_forward (DNS, dhcp still required)
- Взгляните на это потрясающее руководство по iptables.
▍Итоги
Надеемся, то, что вы узнали из серии материалов, в которых мы публиковали переводы фрагментов седьмой главы книги «Kali Linux Revealed», поможет вам сделать вашу систему безопаснее и надёжнее.
Уважаемые читатели! Справились ли вы с упражнениями, или пришлось подглядывать в ответы?
Автор: ru_vds