[Перевод] Kali Linux: упражнения по защите и мониторингу системы

→ Часть 1. Kali Linux: политика безопасности, защита компьютеров и сетевых служб
→ Часть 2. Kali Linux: фильтрация трафика с помощью netfilter
→ Часть 3. Kali Linux: мониторинг и логирование

В предыдущих трёх материалах мы рассказали о защите Kali Linux, о фильтрации трафика, о мониторинге. Сегодня подведём итоги и представим вашему вниманию несколько упражнений. Здесь приведён перевод разделов 7.6 и «Упражнения» главы 7 книги «Kali Linux Revealed».

19d13e851f764246b6b3a1e95cfe9035.jpg


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: защита при работе в сети


  1. Идентифицируйте все открытые порты в вашей установке Kali Linux.
  2. Настройте файрвол Kali так, чтобы он позволял осуществлять TCP-подключения только к портам 22, 80 и 443.
  3. Проверьте, заблокированы ли все остальные порты, используя утилиту вроде netcat.
  4. Настройте систему так, чтобы правила файрвола сохранялись после перезагрузки. Перезагрузите компьютер для того, чтобы это проверить.


Примечание: если есть такая возможность, хорошо бы ответы на вопросы сделать в сворачиваемом блоке. Аналогично — по ответам на другие вопросы.

▍Ответы к упражнению №1


Посмотреть
  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. Добейтесь работоспособности сетевого соединения.
  2. Настройку файрвола можно выполнить с помощью следующих команд:
    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 ...
  3. Попытайтесь, с хост-компьютера, подключиться к 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
  4. Теперь создайте скрипт 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: мониторинг служб


  1. Установите logcheck.
  2. Попытайтесь атаковать, методом грубой силы, собственную службу SSH, и посмотрите, заметит ли это logcheck, отправит ли он вам отчёт об атаке.
  3. Запланируйте задание cron для ежечасного запуска logcheck таким образом, чтобы он, после анализа файлов журналов, создавал лог-файл в /data/$(date-time).log.


▍Ответы к упражнению №2


Посмотреть
  1. Установите logcheck и запустите его в первый раз:
    apt-get install logcheck
    sudo -u logcheck logcheck -o
  2. Загрузите список паролей, атакуйте собственную службу 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
  3. Напишите bash-скрипт следующего содержания:
    mkdir -p /data/
    sudo -u logcheck logcheck -o > /data/$(date +"%m-%d-%Y-%T").log

    Сделайте его исполняемым и поместите в директорию /etc/cron.hourly.

→ Вот решение на Asciinema (текст можно копировать из видео).


▍Упражнение №3: защита файловой системы


  1. Установите tripwire. Начните наблюдение за изменениями файлов в директории /var/www/html/.
  2. Если вы всё сделали правильно, вы столкнётесь со множеством ошибок «File system error». Может быть вас хакнули? В любом случае, исправьте ситуацию.


▍Ответы к упражнению №3


Посмотреть
  1. Установите 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», поможет вам сделать вашу систему безопаснее и надёжнее.

Уважаемые читатели! Справились ли вы с упражнениями, или пришлось подглядывать в ответы?

© Habrahabr.ru