- Фаерволл Кали Линукс: настройка iptables
- Знакомство с таблицами iptables
- ВНИМАНИЕ!
- Фаерволл Кали Линукс: основные правила
- Фаерволл Кали Линукс: добавляем правила
- Фаерволл Кали Линукс: сохраняем настройки
- Kali Linux: упражнения по защите и мониторингу системы
- 7.6. Итоги
- Упражнения
- ▍Упражнение №1: защита при работе в сети
- ▍Ответы к упражнению №1
- ▍Упражнение №2: мониторинг служб
- ▍Ответы к упражнению №2
- ▍Упражнение №3: защита файловой системы
- ▍Ответы к упражнению №3
- ▍Информация к размышлению
- ▍Итоги
- Брандмауэр или фильтрация пакетов в Kali Linux
- 7.4 Брандмауэр или фильтрация пакетов
- 7.4.1 Поведение Netfilter
- Что такое ICMP?
- 7.4.2 Синтаксис iptables и ip6tables
- Правила
- Отрицательные условия
- 7.4.3 Создание правил в Kali Linux
- 7.4.4 Установка правил для каждой загрузки
Фаерволл Кали Линукс: настройка iptables
В статье рассмотрены основные правила настройки и принципы построения того, что принимается за фаерволл Кали Линукс.
Перед тем, как приступить к настройкам безопасности в Дебиан, необходимо уяснить, что таблицы iptables строго говоря не являются сервисом или службой. Речь идёт о специфической команде, которая позволяет манипулировать фаерволлом сетевого фильтра ядра системы. Она позволяет лишь выдавать, сохранять и, соотвественно, удалять соответствующие команды.
Знакомство с таблицами iptables
Возможности этой команды в Дебиан и других системах различны. Так, в Redhat и Fedora вроде как существует конкретный скрипт в /etc/init.d, который призван изменять конфигурацию iptables (напрямую его останавливать и запускать). Так что, работая в Кали Линукс, пользователи ошибочно пытаются применять подобную технику, но неизменно сталкиваются с отказом системы на такие действия. Нет, скрипт, конечно, можно написать и впоследствии им пользоваться. Но по умолчанию пользователи Дебиан этого скрипта не найдут.
Проверим наличие таблиц командой:
Бывает, что терминал молчит. Тогда доустановим таблицы командой
Чтобы приступить к настройкам таблиц, предлагаю вам создать пустой файл firewall.rules , который затем можно будет конфигурировать вручную из терминала или в любом текстовом редакторе. Сделаем это командой:
Сразу запоминаем ещё одну команду:
которая позволит вернуть предыдущие настройки (ей можно с успехом воспользоваться и для того же создания нового файла конфигурации; вновь введённая, она равнозначна предыдущей).
Для реализации следующих команд нам понадобятся root права. Вводим их последовательно, внося изменения в созданный только что файл:
Теперь сохраняем данные в файле firewall.rules уже знакомой вам командой:
Можете открыть и полюбопытствовать на проделанные изменения:
Или прямо из терминала:
ВНИМАНИЕ!
Теперь фаерволл Кали сконфигурирован теперь так, что ВСЯКИЙ может попасть КУДА УГОДНО. Подобная конфигурация — лёгкий способ настроить Кали для начала тестирования на проникновения при сетевой настройке виртуальных операционных систем. Открытые настройки позволяют пинговать Кали из гостевой ОС (в качестве которых у вас на хозяйской Кали могут присутствовать гостевые системы семейства Windows). Вариант, когда виртуальная машина настраивается таким образом, чтобы и гостевая и хост-система взаимопинговались, рассмотрен в статье Сетевые настройки VirtualBox в Кали Линукс.
Фаерволл Кали Линукс: основные правила
Интересующие нас в файле firewall.rules содержат следующие пустые цепочки. Откройте их список командой:
Эти цепочки показывают установки (запрет или разрешения) на типы сетевого трафика. Так, input отвечает за соединения, прибывающий на облачный сервер, output отвечает за исходящий трафик, а forward — за данные, пропускаемые системой. Каждая из цепочек,, как видно, имеет свой параметр с именем policy, которым определяется как сетевой трафик следует обработать. По умолчанию никаких фильтров на траф не предусмотрено (стоит значение accept).
Фаерволл Кали Линукс: добавляем правила
Фаерволл Кали Линукс обычно рекомендуется конфигурировать одним из двух традиционных вариантов. Либо установить правило по умолчанию принимать, и затем блокировать нежелательный трафик с помощью специальных правил, либо использовать правила для определения разрешённого трафика, обрабатывать его должным образом, а остальной поток данных просто блокировать. За основу принят именно второй вариант.
Чтобы приступить к работе с таблицами, сначала нужно добавить правила для того, чтобы фаерволл пропускал входящий трафик для нужных служб. Iptables в состоянии отслеживать трафик соединения. Вот команда на Разрешить установленные соединения:
Сейчас и потом проверяйте проделанные изменения командой:
Теперь разрешим трафик для конкретного порта для работы по защищённому каналу:
Флаг ssh в команде переводит защищённый трафик на предназначенный по умолчанию для этого порт за номером 22. Кстати, запомните эту команду. Она вам пригодится, если вы задумаете открыть для трафика другие порты. Давайте воспользуемся это командой прямо сейчас: разрешим соединение с HTTP сервером. Получается (вместо HTTP можно сразу указать номер порта), что команда примет такой вид:
И так далее по мере надобности. После добавления разрешающих правил, на остальные наложим запрет командой:
Подобные правила для политик настраиваются похожим образом для каждой из цепочек по принципу «имя_цепочки — DROP/ACCEPT«.
Фаерволл Кали Линукс: сохраняем настройки
После перезагрузки сервера, настройки исчезнут. Чтобы сохранить работу, не забывайте сохраняться командой в начале статьи:
перепишет существующие правила
добавит новое правило к существующим. Вот так выглядит простой набор команд в числе работы с фаерволом Кали.
Источник
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
- Проверьте открытые порты:
Если в вашей системе некоторые порты уже заблокированы, или имеются ранее установленные правила iptables , вы можете от всего этого избавиться:
Теперь проверьте, можете ли вы подключиться к порту 4444 на вашем компьютере, воспользовавшись netcat следующим образом:
С вашего хоста (если Kali запущена на виртуальной машине), или с другого компьютера, попробуйте подключиться к экземпляру netcat , который прослушивает порт 4444. После подключения введите что-нибудь с клавиатуры. Текст должен появиться там, где запущен netcat :
Обратите внимание на то, что если вы вводите текст с клавиатуры, но он не появляется на экране, значит — что-то пошло не так. Разберитесь с этим прежде чем продолжать. Если Kali установлена на виртуальную машину — переключитесь на использование сетевого моста вместо NAT. Добейтесь работоспособности сетевого соединения.
Настройку файрвола можно выполнить с помощью следующих команд:
Теперь проверьте, можно ли снова подключиться к порту 4444 на машине, защищённой файрволом:
Попытайтесь, с хост-компьютера, подключиться к netcat . Попытка подключения должна завершиться неудачей.
Теперь создайте скрипт iptables из ранее заданных правил:
Зарегистрируйте конфигурационный скрипт в директиве pre-up файла /etc/network/interfaces . Перезагрузите систему для того, чтобы убедиться в том, что настройки файрвола сохранились.
→ Вот решение на Asciinema (текст из видео копировать нельзя).
Вот как всё выглядит, с точки зрения хост-системы, с которой осуществляется подключение к виртуальной машине с Kali Linux.
▍Упражнение №2: мониторинг служб
▍Ответы к упражнению №2
- Установите logcheck и запустите его в первый раз:
Загрузите список паролей, атакуйте собственную службу SSH с помощью брутфорсера hydra , посмотрите, что сообщит об этом logcheck :
Напишите bash-скрипт следующего содержания:
Сделайте его исполняемым и поместите в директорию /etc/cron.hourly .
→ Вот решение на Asciinema (текст можно копировать из видео).
▍Упражнение №3: защита файловой системы
▍Ответы к упражнению №3
- Установите tripwire и задайте файлы, которые вы хотите защитить:
Добавьте следующий блок кода в файл политик tripwire :
Теперь сделайте так, чтобы tripwire реагировал на изменения файлов в директории /var/www/html :
→ Вот решение на Asciinema (текст нельзя копировать из видео).
▍Информация к размышлению
- Вот интересный пример использования iptables . Можно превратить любой компьютер с беспроводным интерфейсом в беспроводную точку доступа с помощью hostapd . Вот источник этой идеи:
▍Итоги
Надеемся, то, что вы узнали из серии материалов, в которых мы публиковали переводы фрагментов седьмой главы книги «Kali Linux Revealed», поможет вам сделать вашу систему безопаснее и надёжнее.
Уважаемые читатели! Справились ли вы с упражнениями, или пришлось подглядывать в ответы?
Источник
Брандмауэр или фильтрация пакетов в Kali Linux
7.4 Брандмауэр или фильтрация пакетов
Брандмауэр является частью компьютерного оборудования с аппаратным обеспечением, программным обеспечением или и тем, и другим, которое анализирует входящие или исходящие сетевые пакеты (приходящие или исходящие из локальной сети) и пропускает только те, которые соответствуют конкретным предопределенным условиям.
Фильтрующий сетевой шлюз является типом брандмауэра, который защищает всю сеть. Обычно он устанавливается на выделенный компьютер, сконфигурированный как шлюз для сети, таким образом, что он может анализировать все пакеты, которые проходят и выходят из сети. В качестве альтернативы существует локальный брандмауэр, выступающий службой программного обеспечения, которая работает на одной конкретной машине, чтобы фильтровать или ограничивать доступ к некоторым службам на этом компьютере или, возможно, предотвращать исходящие соединения от различного шпионского программного обеспечения, которое пользователь мог установить случайно или специально.
Ядро Linux встраивает брандмауэр netfilter. Не существует окончательного решения по настройке любого брандмауэра т.к. требования пользователя и сети довольно разнятся. Тем не менее, вы можете контролировать netfilter из пользовательского пространства с помощью команд iptabtes и ip6tabtes. Разница между этими двумя командами заключается в том, что первая работает для сетей IPv4, тогда как последняя работает на IPv6. Поскольку оба стека сетевых протоколов, вероятно, будут работать в течение многих лет, оба инструмента необходимо будет использовать параллельно. Вы также можете использовать отличный инструмент fwbuitder на основе графического интерфейса пользователя, который обеспечивает графическое представление правил фильтрации.
Однако, вы все же решили настроить его, netfilter является реализацией брандмауэра Linux, поэтому давайте подробнее рассмотрим, как он работает.
7.4.1 Поведение Netfilter
Netfilter использует четыре различные таблицы, в которых хранятся правила, регулирующие три типа операций проводимых над пакетами:
- filter касается правил фильтрации
(принятия, отказа или игнорирования пакета); - nat (Трансляция сетевых адресов (Network Address Translation)) касается перевода исходных или целевых адресов и портов пакетов;
- mangle относится к другим изменениям в IP-пакетах (включая ToS (поле типа обслуживания) Type of Service-field и опции));
- raw позволяет другие изменения, проводимые вручную, над пакетом пока они не достигнут системы отслеживания соединения.
Каждая таблица содержит списки правил, называемых цепями (chains). Брандмауэр использует стандартные цепи для обработки пакетов на основе предопределенных обстоятельств. Администратор может создавать другие цепочки, которые будут использоваться только при передаче одной из стандартных цепочек (будь то прямо или косвенно).
Таблица filter обладает тремя стандартными цепями:
- INPUT (ВХОДЯЩИМИ): касается пакетов, назначением которых является сам брандмауэр;
- OUTPUT (ИСХОДЯЩИМИ): касается пакетов, выпускаемых брандмауэром;
- FORWARD (ПРЯМЫМИ): касается пакетов, проходящих через брандмауэр (который не является ни их источником, ни местом назначения).
Таблица nat также обладает тремя стандартными цепями:
- PREROUTING: для изменения пакетов сразу после их поступления;
- POSTROUTING: для изменения пакетов, когда они готовы начать свой путь;
- OUTPUT (ИСХОДЯЩИМИ): для изменения пакетов, сгенерированных самим брандмуэром.
Эти цепи изображены на рисунке 7.1, «Как называются цепи Netfilter«.
Рисунок 7.1 Как называются цепи Netfilter
Каждая цепочка представляет собой список правил; каждое правило представляет собой набор условий и действие, которые предпринимаются при выполнении условий. При обработке пакета брандмауэр сканирует соответствующую цепочку, одно правило за другим, и когда условия для одного правила выполняются, он перескакивает (отсюда параметр -j в командах) к указанному действию для продолжения обработки. Наиболее распространенные типы поведения стандартизированы, и для них существуют специальные действия. Принятие одного из этих стандартных действий прерывает обработку цепочки, поскольку дальнейшая судьба пакетов уже предрешена (не принимая во внимание исключение, упомянутое ниже). Ниже перечислены действия Netfilter.
- ACCEPT (ПРИНЯТЬ): позволить пакетам двигаться далее своей дорогой.
- REJECT (ОТКЛОНИТЬ): отклонить пакет с помощью пакета ошибок протокола управляющих сообщений в интернете (Internet control message protocol (ICMP)) (опция -reject-with type опция iptables определяет тип отправляемой ошибки).
- DROP (СБРОСИТЬ): удалить (игнорировать) пакет.
- LOG (ЗАРЕГИСТРИРОВАТЬ): зарегистрировать (через syslogd) сообщения с описанием пакета. Обратите внимание, что это действие не прерывает обработку, а выполнение цепочки продолжается по следующему правилу, поэтому регистрация отклоненных пакетов требует как правила LOG, так и правила REJECT/DROP. Общие параметры, связанные с регистрацией, включают в себя:
- -log-level, с предупреждением по умолчанию, указывает уровень серьезности syslog.
- -log-prefix позволяет указать префикс текста для различения зарегистрированных сообщений.
- -log-tcp-sequence, -log-tcp-options, и —log-ip-options обозначают дополнительные данные, которые должны быть помещены в сообщение: соответственно, порядковый номер TCP, параметры TCP и параметры IP.
- ULOG: зарегистрировать сообщения через ulogd, который может быть лучше адаптирован и более эффективен, чем syslogd для обработки большого количества сообщений; обратите внимание, что это действие, подобно LOG, также возвращает обработку к следующему правилу в вызывающей цепочке.
- chain_name (имя цепи): перескочить на указанную цепь и оценить её правила.
- RETURN (ВЕРНУТЬ): прервать обработку текущей цепочки и вернуться к вызывающей цепочке; в случае, если текущая цепочка является стандартной, то вызывающей цепочки не существует, поэтому вместо нее выполняется действие по умолчанию (которое определяется с помощью параметра -p для iptables).
- SNAT (только в таблице nat): применяет источник трансляции сетевых адресов (Source Network Address Translation (SNAT)). Дополнительные опции описывают точные изменения, которые нужно применить, включая опцию -to-source address-port, которая определяет новый источник IP адреса и/или порта.
- DNAT (только в таблице nat): применяет назначение трансляции сетевых адресов (Destination Network Address Translation (DNAT)). Дополнительные опции описывают точные изменения, которые нужно применить, включая опцию -to- destination address-port, которая определяет новый источник IP адреса и/или порта.
- MASQUERADE (МАСКИРОВКА (только в таблице nat)): применяет маскировку (особый случай Source NAT).
- REDIRECT (ПЕРЕНАПРАВЛЕНИЕ (только в таблице nat)): прозрачно перенаправить пакет на данный порт самого брандмауэра; это можно использовать для настройки прозрачного веб-прокси, который работает без конфигурации на клиентской стороне, поскольку клиент считает, что он подключается к получателю, тогда как на самом деле сообщения фактически проходят через прокси-сервер. Опция -to-ports port(s) указывает порт или диапазон портов, в которых пакеты должны быть перенаправлены.
Другие действия, особенно те, которые касаются таблицы mangle, не вошли в данный раздел. Не смотря на это, на страницах руководства iptables и ip6tables имеется исчерпывающий объем информации.
Что такое ICMP?
Межсетевой протокол управления сообщениями (Internet Control Message Protocol (ICMP)) является протоколом, используемым для передачи вспомогательной информации по сообщениям. Он проверяет сетевое соединение с помощью команды ping, которая отправляет сообщение запроса отклика ICMP, на которое получатель должен отвечать с соответствующим ICMP сообщением. Он сигнализирует о том, что брандмауэр отклоняет пакет, указывает на переполнение в буфере приема, предлагает лучший маршрут для следующих пакетов в соединении и т. д. Этот протокол определяется несколькими документами RFC. RFC777 и RFC792 были первыми, но многие другие расширили и/или пересмотрели протокол.
Для справки, приемный буфер представляет собой небольшую зону памяти, в которой хранятся данные между тем временем, когда они приходят из сети, и временем, когда ядро обработает их. Если эта зона заполнена, то соответственно, новые данные не могут быть получены, и ICMP будет сигнализировать о проблеме, чтобы источник мог замедлить скорость их передачи (которая в идеале должно должна быть отрегулирована через некоторое время).
Обратите внимание, что несмотря на то, что сеть IPv4 может работать без ICMP, ICMPv6 строго требуется для сети IPv6, поскольку он объединяет в себе несколько функций, которые были в мире IPv4, распространяются через ICMPv4, Internet Croup Membership Protocol (IGMP), и Address Resolution Protocol (ARP). ICMPv6 характеризуется в RFC4443.
7.4.2 Синтаксис iptables и ip6tables
Команды iptables и ip6tables используются для управления таблицами, цепями и правилами. Их опция -t table обозначает? с какой таблицей работать (по умолчанию, filter).
Команды
Большинство опций, которые взаимодействуют с цепями перечислены ниже:
- -L chain перечисляет правила в цепочке. Обычно это используется с опцией -n для отключения разрешения имен (например, iptables -n -L INPUT будет отображать правила, относящиеся к входящим пакетам).
- -N chain создает новую цепочку. Вы можете создавать новые цепочки для множества различных целей, включая тестирование новой сетевой службы или для парирования сетевой атаки.
- -X chain удаляет пустую неиспользуемую цепь (например, iptables -X ddos-attack).
- -A chain rule добавляет правило в конце данной цепочки. Помните, что правила обрабатываются сверху вниз, поэтому не забывайте об этом при их добавлении.
- -I chain rule_num rule вставляет правило перед номером правила rule_num. Как и в опции -A, учитывайте порядок обработки при вводе новых правил в цепочку.
- -D chain rule_num (или -D chain rule) удаляет правило в цепочке; первый вариант синтаксиса определяет правило, которое должно быть удалено по его числу (iptables -L -line-numbers будет отображать эти числа), а последний вариант идентифицирует его по его содержимому.
- -F chain сбрасывает цепочку (удаляет все ее правила). Например, чтобы удалить все правила, связанные с исходящими пакетами, вы должны запустить iptables -F OUTPUT. Если ни одна цепочка не указана, все правила в таблице удаляются.
- -P chain action определяет действие по умолчанию или «политику» для данной цепочки; обратите внимание, что только стандартные цепи могут иметь такую политику. Чтобы сбросить весь входящий трафик по умолчанию, вам необходимо выполнить iptables -P INPUT DROP.
Правила
Каждое правило выражается как conditions -j action action_options.. Если несколько условий описаны в одном правиле, то критерием является конъюнкция (логическая функция И), которая хотя бы имеет ограничение, как и каждое отдельное условие.Условие -p protocol соответствует полю протокола IP-пакета. Наиболее распространенными значениями являются tcp, udp, icmp и icmpv6. Это условие может быть дополнено условиями портов TCP, такими как -source-port port port и -destination-portporf.
Отрицательные условия
Добавление к условию восклицательного знака, отрицает условие. Например, отрицание условия на опции -p соответствует «любой пакет с протоколом отличным от того, который указан». Этот механизм отрицания может быть применен ко всем другим условиям.
Условия -s address или -s network/mask соответствует исходному адресу пакета. Аналогично, -d address or -d network/mask соответствует адресу назначения.
Условие -i interface выбирает пакеты, исходящие из заданного сетевого интерфейса. -o interface выбирает пакеты, выходящие на определенный интерфейс.
Условие —state state (состояние) condition соответствует состоянию пакета в соединении (это требует модуль ipt_ conntrack kernel для отслеживания соединения). Состояние NEW описывает пакет запускающий новое соединение, ESTABLISHED соответствует пакетам, принадлежащим к уже существующему соединению, и RELATED соответствует пакетам, инициирующим новое соединение, которое связано с существующим (что полезно для соединений ftp-данных в активном режиме протокола FTP).
Существует множество доступных опций для iptables и ip6tables, и их освоение требует глубокого изучения и длительного процесса набора опыта. Однако одна из опций, которую вы будете использовать чаще всего, — это та, которая блокирует вредоносный сетевой трафик с хоста или диапазона хостов. Например, чтобы незаметно блокировать входящий трафик с IP-адреса 10.0.1.5 и 31.13.74.0/24 класса C подсети:
Другая часто используемая команда iptables — это разрешить сетевой трафик для определенной службы или порта. Чтобы пользователи могли подключаться к SSH, HTTP и IMAP, вы можете запускать следующие команды:
Правилом хорошей компьютерной гигиены является очистка старых и ненужных правил. Самый простой способ удаления правил iptables — ссылаться на правила по номеру строки, который вы можете получить с помощью опции -line-numbers. Тем не менее, будьте очень осторожны: при сбросе правила будут перенумерованы все правила, появляющиеся дальше в цепочке.
Существуют более конкретные условия, в зависимости от общих условий, описанных выше. Для получения дополнительной информации рекомендуем ознакомиться с Iptables и ip6tables
7.4.3 Создание правил в Kali Linux
Для создания каждого правила требуется один вызов iptables или ip6tables. Ввод этих команд вручную может быть очень утомительным процессом, поэтому вызовы обычно хранятся в сценарии, таким образом, что система автоматически настраивается одинаково каждый раз, когда машина загружается. Этот скрипт может быть написан вручную, но также может быть довольно интересно подготовить его с помощью инструмента высокого уровня, такого как fwbuilder.
Принцип прост. На первом этапе опишите все элементы, которые будут задействованы в действительных правилах:
- Сам брандмауэр с сетевыми интерфейсами;
- Сети, с их соответственными диапазонами IP ranges;
- Сервера;
- Порты, принадлежащие к службам, размещенным на данном сервере.
Затем создайте правила с помощью простых действий перетаскивания объектов, как показано на рисунке 7.2, «Главное окно Fwbuilder» . Несколько контекстных меню могут изменить условие (например, отрицая его). Затем нужно выбрать и настроить действие.
Что касается IPv6, вы можете либо создать два разных набора правил для IPv4 и IPv6, либо создать только одно, и позволить fwbuilder переводить правила в соответствии с адресами, назначенными объектам.
Рисунок 7.2 Главное окно Fwbuilders
fwbuilder создаст скрипт, настраивающий брандмауэр в соответствии с правилами, которые вы определили. Его модульная архитектура дает возможность генерировать сценарии, предназначенные для разных систем, включая iptables для Linux, ipf для FreeBSD и pf для OpenBSD.
7.4.4 Установка правил для каждой загрузки
Для того чтобы внедрять правила брандмауэра каждый раз, когда машина загружается, вам необходимо зарегистрировать скрипт конфигурации в соответствующей директиве файла /etc/network/interfaces file . В следующем примере скрипт хранится в /usr/tocat/etc/arrakis.fw .
Данный пример предполагает, что вы используете ifupdown для настройки сетевых интерфейсов. Если вы используете что-то другое (вроде NetworkManager или systemd-networkd), тогда ознакомьтесь с их соответствующей документацией для того, чтобы определить способ, каким образом выполнить скрипт после того, как интерфейс был запущен.
Источник