Настройка межсетевого экрана Kali с помощью iptables

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь настраивать межсетевой экран в Kali Linux с помощью iptables — мощного инструмента для управления правилами фильтрации IP-пакетов в ядре Linux. Основная цель — понять и применить правила брандмауэра для повышения сетевой безопасности путем контроля трафика на основе IP-адресов, портов и протоколов. Благодаря пошаговым практическим заданиям вы научитесь просматривать текущие правила iptables, блокировать определенные IP-адреса, разрешать трафик на назначенных портах и сохранять свои конфигурации. Работая в предварительно настроенном контейнере Kali Linux в виртуальной среде LabEx, вы приобретете практические навыки управления настройками брандмауэра для защиты сетевого трафика.

Установка и просмотр правил iptables

На этом первом этапе вы установите iptables и научитесь просматривать текущие правила брандмауэра внутри контейнера Kali Linux. Это важная отправная точка для понимания существующей конфигурации перед внесением каких-либо изменений.

Когда вы откроете терминал в среде LabEx VM, вы автоматически подключитесь к оболочке контейнера Kali Linux. Вам не нужно вручную запускать контейнер или входить в него — среда уже полностью готова к работе. Начнем с установки iptables и изучения текущего состояния правил.

iptables — это утилита командной строки, позволяющая управлять правилами фильтрации IP-пакетов в ядре Linux. Эти правила определяют, как обрабатывается сетевой трафик: принять, отбросить или перенаправить пакеты на основе определенных критериев, таких как исходный IP-адрес или номера портов. Просмотр правил помогает увидеть, какие политики действуют в данный момент.

Сначала обновим список пакетов и установим iptables. Введите следующую команду и нажмите Enter:

apt update && apt install -y iptables

Эта команда обновит список доступных пакетов и установит iptables за один шаг. Оператор && гарантирует, что установка начнется только в случае успешного завершения обновления.

Пример ожидаемого вывода (фактический вывод может отличаться):

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.x.x-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Теперь, когда iptables установлена, выполните следующую команду, чтобы вывести список текущих правил. Введите команду и нажмите Enter:

iptables -L -v -n

Разберем параметры этой команды:

  • iptables: инструмент для управления правилами брандмауэра.
  • -L: выводит список всех правил в выбранных цепочках.
  • -v: подробный режим вывода, включая счетчики пакетов и байтов.
  • -n: отображает IP-адреса и порты в числовом формате без разрешения имен.

После выполнения этой команды вы увидите вывод, похожий на приведенный ниже. Точный результат может зависеть от начальной конфигурации контейнера.

Пример ожидаемого вывода:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

В этом выводе отображаются три основные цепочки: INPUT для входящего трафика, FORWARD для транзитного трафика и OUTPUT для исходящего трафика. Для каждой цепочки указана политика по умолчанию (например, ACCEPT) и конкретные правила, если они есть. Если цепочки пусты, как в этом примере, это означает, что пользовательские правила не применены, и весь трафик регулируется политиками по умолчанию.

Уделите время изучению вывода. Понимание текущего состояния брандмауэра критически важно перед добавлением или изменением правил, чем мы и займемся на следующих этапах. Этот базовый шаг гарантирует, что вы знакомы со стартовой конфигурацией iptables в вашем контейнере Kali Linux.

Понимание цепочек и политик iptables

Теперь, когда вы установили iptables и просмотрели начальные правила, давайте углубимся в принципы работы этого инструмента перед созданием собственных правил. На этом этапе вы узнаете о различных цепочках и их политиках по умолчанию.

iptables организует правила брандмауэра в цепочки — списки правил, по которым проверяются пакеты. Существует три основных встроенных цепочки:

  • INPUT: обрабатывает пакеты, предназначенные для локальной системы.
  • FORWARD: обрабатывает пакеты, маршрутизируемые через систему.
  • OUTPUT: обрабатывает пакеты, исходящие от локальной системы.

У каждой цепочки есть политика по умолчанию, которая определяет судьбу пакетов, не подпавших ни под одно конкретное правило. Самые распространенные политики — это ACCEPT (разрешить пакет) и DROP (отбросить пакет без уведомления отправителя).

Давайте более детально изучим текущие настройки политик. Выполните следующую команду, чтобы увидеть подробную информацию о каждой цепочке:

iptables -L -v -n --line-numbers

Опция --line-numbers добавляет порядковые номера к каждому правилу, что облегчает ссылку на них в дальнейшем.

Пример ожидаемого вывода:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Обратите внимание, что все цепочки в данный момент имеют политику ACCEPT. Это означает, что если пакет не соответствует ни одному правилу, он будет пропущен. Счетчики пакетов и байтов показывают 0, так как в этой новой среде контейнера трафик еще не обрабатывался.

Понимание этих основ крайне важно перед добавлением пользовательских правил, так как вам необходимо знать, как пакеты проходят через систему и каким будет поведение по умолчанию для неклассифицированного трафика.

Блокировка определенного IP-адреса

Теперь перейдем к непосредственной настройке брандмауэра и заблокируем трафик с определенного IP-адреса. Это стандартная мера безопасности для предотвращения нежелательного доступа или потенциальных угроз из конкретного источника.

Блокировка IP-адреса в iptables означает создание правила для отбрасывания (DROP) входящих пакетов с этого адреса. Когда пакет отбрасывается, система игнорирует его, фактически прекращая любую связь с указанным IP. В этом упражнении мы заблокируем гипотетический IP-адрес 192.168.1.100 в качестве безопасного примера для практики.

Введите следующую команду в терминале контейнера Kali Linux и нажмите Enter, чтобы добавить правило, блокирующее весь входящий трафик с адреса 192.168.1.100:

iptables -A INPUT -s 192.168.1.100 -j DROP

Разберем команду:

  • iptables: инструмент управления.
  • -A INPUT: добавляет (append) правило в конец цепочки INPUT, отвечающей за входящий трафик.
  • -s 192.168.1.100: указывает исходный (source) IP-адрес для сопоставления.
  • -j DROP: устанавливает действие «отбросить» для пакетов с этого адреса.

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

Чтобы убедиться, что правило активно, выполните команду просмотра списка правил:

iptables -L -v -n

Пример ожидаемого вывода:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

В выводе появилось правило в цепочке INPUT, которое отбрасывает весь трафик от 192.168.1.100. Счетчики пакетов (pkts) и байтов (bytes), скорее всего, будут равны 0, если с этого IP не было попыток соединения.

Выполнив этот шаг, вы научились ограничивать доступ для нежелательных или вредоносных источников. На следующем этапе мы научимся разрешать трафик для определенных портов, чтобы обеспечить работу необходимых сервисов.

Разрешение трафика на определенном порту

После блокировки IP-адреса следующим важным навыком является разрешение трафика на конкретных портах для обеспечения доступа к нужным службам. На этом этапе вы добавите правило, разрешающее входящий трафик на определенный порт.

Порты используются сетевыми службами для связи. Например, веб-серверы часто используют порт 80 для HTTP-трафика. Разрешение трафика на порту означает создание правила для принятия (ACCEPT) входящих пакетов, направленных на этот порт. В качестве примера мы разрешим трафик на порту 80.

Введите следующую команду в терминале и нажмите Enter, чтобы разрешить входящий TCP-трафик на порт 80:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Разбор команды:

  • iptables: инструмент управления.
  • -A INPUT: добавление правила в цепочку входящего трафика.
  • -p tcp: указывает протокол TCP, который обычно используется для таких служб, как HTTP.
  • --dport 80: указывает порт назначения (destination port) 80.
  • -j ACCEPT: устанавливает действие «принять» для соответствующих пакетов.

Подтверждения в терминале не будет, что говорит об успешном добавлении правила.

Проверьте текущий список правил:

iptables -L -v -n

Пример ожидаемого вывода:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Теперь в цепочке INPUT видны два правила: блокировка 192.168.1.100 и разрешение TCP-трафика на порт 80.

Вы научились открывать доступ к конкретным службам (например, веб-серверу), сохраняя при этом безопасность остальных портов. Далее мы сохраним эти настройки, чтобы их можно было использовать в будущем.

Сохранение конфигурации iptables

На заключительном этапе вы научитесь сохранять конфигурацию iptables. Это важно, так как по умолчанию правила хранятся в оперативной памяти и будут утеряны при перезагрузке контейнера. Сохранение позволяет зафиксировать настройки для последующего использования или восстановления.

В обычной ситуации правила iptables существуют только во время работы системы. Сохранение их в файл позволяет вести учет конфигурации, что полезно для документации или восстановления правил с помощью команды iptables-restore. Мы сохраним правила в файл в директории /root.

Введите следующую команду и нажмите Enter, чтобы сохранить текущие правила в файл iptables-rules:

iptables-save > /root/iptables-rules

Разбор команды:

  • iptables-save: экспортирует текущие правила из памяти в стандартный поток вывода.
  • > /root/iptables-rules: перенаправляет этот вывод в файл iptables-rules в папке /root, перезаписывая его, если он уже существует.

После выполнения команды правила будут сохранены в указанный файл.

Чтобы убедиться в правильности сохранения, просмотрите содержимое файла:

cat /root/iptables-rules

Пример ожидаемого вывода:

## Generated by iptables-save v1.x.x on ...
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.100/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
## Completed on ...

В файле отображена сохраненная конфигурация, включая правила блокировки IP 192.168.1.100 и разрешения порта 80. Формат файла совместим с утилитой iptables-restore.

Вы успешно сохранили настройки брандмауэра. Это критически важный навык для работы в реальных условиях. Теперь вы владеете базовыми методами управления межсетевым экраном с помощью iptables.

Резюме

В ходе этой лабораторной работы вы изучили основы настройки межсетевого экрана в Kali Linux с использованием iptables в контейнерной среде. Вы начали с просмотра текущих правил для понимания начального состояния системы. Затем вы обновили список пакетов и установили iptables. После этого вы добавили правила для блокировки трафика с определенного IP-адреса и разрешения доступа к конкретному порту, усилив контроль над сетевыми подключениями. Наконец, вы сохранили конфигурацию в файл для использования в будущем. Эти шаги дали вам фундаментальные навыки управления сетевой безопасностью с помощью фильтрации трафика в iptables.