Добро пожаловать обратно, мои начинающие кибервоины!
Межсетевой экран — одна из ключевых мер безопасности, необходимых для обеспечения безопасности сети. В Linux есть ряд межсетевых экранов, доступных специалистам по информационной безопасности, которые могут быть критически важны для защиты систем без необходимости тратить большие средства на коммерческие системы. Для этого требуется лишь немного знаний и подготовки.
Межсетевой экран — это подсистема компьютера, которая блокирует входящий и исходящий сетевой трафик. Межсетевые экраны могут быть программными и аппаратными. Аппаратные межсетевые экраны обычно используются для защиты сети и компьютеров в ней, тогда как программный межсетевой экран защищает систему, в которой он размещен.
Iptables — это гибкий брандмауэр, разработанный для Linux и других операционных систем на базе *nix. Он использует командную строку для настройки цепочек политик, разрешающих или блокирующих трафик. Когда кто-то пытается подключиться к вашему компьютеру, iptables автоматически ищет правило, соответствующее типу трафика. Если соответствие не найдено, iptables возвращается к действию по умолчанию.
Межсетевой экран iptables был разработан проектом Netfilter и стал доступен как часть ядра Linux с января 2001 года. По мере развития iptables за прошедшие годы он развил функциональность многих коммерческих межсетевых экранов.
Давайте рассмотрим каждый из них.
Таблицы
Таблицы — это конструкция iptables, которая определяет категории функциональности, такие как фильтрация пакетов или NAT. Существует четыре таблицы: FILTER, NAT, MANGLE и RAW. Таблица Filter используется по умолчанию, если не указано иное. NAT используется для перезаписи источника и/или назначения пакетов. MANGLE используется для изменения пакетов, например, для модификации заголовка TCP. RAW используется для настройки исключений из отслеживания соединений.
Цепи
Каждая таблица имеет собственные встроенные цепочки, и пользователь может создавать свои собственные. Цепочки — это списки правил внутри таблицы. Для наших целей наиболее важными являются цепочки INPUT, OUTPUT и FORWARD.
ВХОД
Эта цепочка предназначена для пакетов, предназначенных для локальной системы.
ВЫХОД
Эта цепочка предназначена для пакетов, покидающих локальную систему.
ВПЕРЕД
Эта цепочка предназначена для пакетов, маршрутизируемых через локальную систему.
СООТВЕТСТВОВАТЬ
СООТВЕТСТВИЕ — это ситуация, когда пакет соответствует условию, установленному правилом. Затем iptables обрабатывает пакет в соответствии с действием, указанным в правиле.
ЦЕЛИ
iptables поддерживает набор целей, которые запускают действие, когда пакет соответствует условию правила. Наиболее важные из них: ACCEPT (пропустить пакет), DROP (отбросить пакет), LOG, REJECT (отбросить пакет и отправить сообщение об ошибке) и RETURN.
kali > sudo apt install iptables
Чтобы увидеть политику по умолчанию в ваших цепочках политик, просто введите:
кали > sudo iptables -L
Как видно на снимке экрана выше, все наши цепочки по умолчанию настроены на ACCEPT. В большинстве случаев вам понадобится, чтобы ваша система принимала соединения по умолчанию, но в очень безопасных системах может потребоваться установить значение по умолчанию BLOCK, а затем написать правило для каждого типа принимаемых соединений. Это очень безопасно, но очень утомительно и требует больших затрат на обслуживание. Пока оставим политику по умолчанию ACCEPT.
кали > sudo iptables -h
На первом из этих экранов вы видите ключевые параметры -A, -D и -L. Все они написаны заглавными буквами и позволяют добавить (-A), удалить (-D) и вывести (-L) список элементов цепочки соответственно.
На втором экране мы видим опции -s, -d и -j. Все они написаны строчными буквами и обозначают адрес источника, адрес назначения и адрес назначения соответственно.
-A это добавляет это правило в цепочку
INPUT проверяет соответствие пакетам, поступающим в локальную систему.
-s задает исходный адрес пакетов
-j задает цель, в данном случае DROP
Мы можем сделать то же самое для всей подсети, используя нотацию CIDR или 192.168.1.0/24.
Если мы хотим ОТБРАСЫВАТЬ пакеты, предназначенные для определенного порта, мы можем использовать опцию -p, за которой следует протокол (tcp), и –dport (порт назначения), за которым следует порт (ssh).
Если бы мы хотели принимать соединения с веб-сайтом www.amazon.com , мы могли бы создать правило, которое ПРИНИМАЕТ исходящее соединение (OUTPUT) по протоколу TCP (-p tcp) tp amazon.com (-d amazon.com)
kali > sudo iptables -A ВЫВОД -p tcp -d amazon.com -j ПРИНЯТЬ
Важно отметить, что iptables выполняет поиск DNS только в момент создания правила. При изменении IP-адреса правило перестанет действовать. Поэтому предпочтительнее использовать IP-адрес домена.
Если бы мы хотели заблокировать доступ к любым другим веб-сайтам, мы могли бы создать следующие два правила:
kali > sudo iptables -A ВЫВОД -p tcp –dport 80 -j DROP
kali > sudo iptables -A ВЫХОД -p tcp –dport 443 -j ОТБРОС
Порядок этих правил критически важен. iptables будет искать по всем правилам, пока не найдёт совпадение. Это означает, что если последние два правила, отбрасывающие порты 80 и 443, будут размещены перед правилом домена, пользователь никогда не сможет открыть amazon.com , поскольку правила отбрасывания сработают до того, как будут найдены правила домена.
Поэтому, когда локальная система пытается подключиться к amazon.com , она блокируется, а браузер отключается по тайм-ауту, как показано ниже.
Наконец, мы можем просмотреть нашу таблицу, используя опцию -L или list.
Чтобы удалить таблицу и начать заново, мы можем очистить (-F) таблицу.
кали > sudo iptables -F
Теперь, когда мы выведем таблицу на экран, мы увидим, что у нас есть чистый лист для создания новой таблицы.
Межсетевой экран — одна из ключевых мер безопасности, необходимых для обеспечения безопасности сети. В Linux есть ряд межсетевых экранов, доступных специалистам по информационной безопасности, которые могут быть критически важны для защиты систем без необходимости тратить большие средства на коммерческие системы. Для этого требуется лишь немного знаний и подготовки.
Межсетевой экран — это подсистема компьютера, которая блокирует входящий и исходящий сетевой трафик. Межсетевые экраны могут быть программными и аппаратными. Аппаратные межсетевые экраны обычно используются для защиты сети и компьютеров в ней, тогда как программный межсетевой экран защищает систему, в которой он размещен.
Iptables — это гибкий брандмауэр, разработанный для Linux и других операционных систем на базе *nix. Он использует командную строку для настройки цепочек политик, разрешающих или блокирующих трафик. Когда кто-то пытается подключиться к вашему компьютеру, iptables автоматически ищет правило, соответствующее типу трафика. Если соответствие не найдено, iptables возвращается к действию по умолчанию.
Межсетевой экран iptables был разработан проектом Netfilter и стал доступен как часть ядра Linux с января 2001 года. По мере развития iptables за прошедшие годы он развил функциональность многих коммерческих межсетевых экранов.
Основы Iptables
iptables состоит из некоторых базовых структур, известных как таблицы, цепочки и цели.Давайте рассмотрим каждый из них.
Таблицы
Таблицы — это конструкция iptables, которая определяет категории функциональности, такие как фильтрация пакетов или NAT. Существует четыре таблицы: FILTER, NAT, MANGLE и RAW. Таблица Filter используется по умолчанию, если не указано иное. NAT используется для перезаписи источника и/или назначения пакетов. MANGLE используется для изменения пакетов, например, для модификации заголовка TCP. RAW используется для настройки исключений из отслеживания соединений.
Цепи
Каждая таблица имеет собственные встроенные цепочки, и пользователь может создавать свои собственные. Цепочки — это списки правил внутри таблицы. Для наших целей наиболее важными являются цепочки INPUT, OUTPUT и FORWARD.
ВХОД
Эта цепочка предназначена для пакетов, предназначенных для локальной системы.
ВЫХОД
Эта цепочка предназначена для пакетов, покидающих локальную систему.
ВПЕРЕД
Эта цепочка предназначена для пакетов, маршрутизируемых через локальную систему.
СООТВЕТСТВОВАТЬ
СООТВЕТСТВИЕ — это ситуация, когда пакет соответствует условию, установленному правилом. Затем iptables обрабатывает пакет в соответствии с действием, указанным в правиле.
ЦЕЛИ
iptables поддерживает набор целей, которые запускают действие, когда пакет соответствует условию правила. Наиболее важные из них: ACCEPT (пропустить пакет), DROP (отбросить пакет), LOG, REJECT (отбросить пакет и отправить сообщение об ошибке) и RETURN.
Шаг №1: Установка Iptables
Iptables установлен практически на всех системах Linux и *nix, но если по какой-то причине в вашей системе не установлены таблицы iptables, вы можете загрузить их из репозитория.kali > sudo apt install iptables
Шаг №2: Настройка политики по умолчанию
Прежде чем приступить к настройке iptables, необходимо определить, какая политика будет применяться по умолчанию. Другими словами, что должен делать межсетевой экран с пакетами, не соответствующими ни одному правилу.Чтобы увидеть политику по умолчанию в ваших цепочках политик, просто введите:
кали > sudo iptables -L
Как видно на снимке экрана выше, все наши цепочки по умолчанию настроены на ACCEPT. В большинстве случаев вам понадобится, чтобы ваша система принимала соединения по умолчанию, но в очень безопасных системах может потребоваться установить значение по умолчанию BLOCK, а затем написать правило для каждого типа принимаемых соединений. Это очень безопасно, но очень утомительно и требует больших затрат на обслуживание. Пока оставим политику по умолчанию ACCEPT.
Шаг №3: помощь iptables
Далее давайте посмотрим на экран справки по iptables.кали > sudo iptables -h
На первом из этих экранов вы видите ключевые параметры -A, -D и -L. Все они написаны заглавными буквами и позволяют добавить (-A), удалить (-D) и вывести (-L) список элементов цепочки соответственно.
На втором экране мы видим опции -s, -d и -j. Все они написаны строчными буквами и обозначают адрес источника, адрес назначения и адрес назначения соответственно.
Шаг №4: Создайте некоторые правила
Теперь давайте создадим несколько правил. Предположим, вы хотите блокировать все пакеты, приходящие с IP-адреса 192.168.1.102. Чтобы создать это правило, делаем следующее:-A это добавляет это правило в цепочку
INPUT проверяет соответствие пакетам, поступающим в локальную систему.
-s задает исходный адрес пакетов
-j задает цель, в данном случае DROP
Мы можем сделать то же самое для всей подсети, используя нотацию CIDR или 192.168.1.0/24.
Если мы хотим ОТБРАСЫВАТЬ пакеты, предназначенные для определенного порта, мы можем использовать опцию -p, за которой следует протокол (tcp), и –dport (порт назначения), за которым следует порт (ssh).
Если бы мы хотели принимать соединения с веб-сайтом www.amazon.com , мы могли бы создать правило, которое ПРИНИМАЕТ исходящее соединение (OUTPUT) по протоколу TCP (-p tcp) tp amazon.com (-d amazon.com)
kali > sudo iptables -A ВЫВОД -p tcp -d amazon.com -j ПРИНЯТЬ
Важно отметить, что iptables выполняет поиск DNS только в момент создания правила. При изменении IP-адреса правило перестанет действовать. Поэтому предпочтительнее использовать IP-адрес домена.
Если бы мы хотели заблокировать доступ к любым другим веб-сайтам, мы могли бы создать следующие два правила:
kali > sudo iptables -A ВЫВОД -p tcp –dport 80 -j DROP
kali > sudo iptables -A ВЫХОД -p tcp –dport 443 -j ОТБРОС
Порядок этих правил критически важен. iptables будет искать по всем правилам, пока не найдёт совпадение. Это означает, что если последние два правила, отбрасывающие порты 80 и 443, будут размещены перед правилом домена, пользователь никогда не сможет открыть amazon.com , поскольку правила отбрасывания сработают до того, как будут найдены правила домена.
Поэтому, когда локальная система пытается подключиться к amazon.com , она блокируется, а браузер отключается по тайм-ауту, как показано ниже.
Наконец, мы можем просмотреть нашу таблицу, используя опцию -L или list.
Чтобы удалить таблицу и начать заново, мы можем очистить (-F) таблицу.
кали > sudo iptables -F
Теперь, когда мы выведем таблицу на экран, мы увидим, что у нас есть чистый лист для создания новой таблицы.