Skip to content

Настройка брандмауэра

Настройка брандмауэра

Чаще всего, в Linux брандмауэр реализуется через утилиту iptables. Эта утилита содержит следующие компоненты:

  • Tables - используются для организации и категоризации правил
    • filter - используется для фильтрации сетевого трафика на основе IP-адресов, портов и протоколов
    • nat - используется для изменения IP-адресов источника или назначения сетевых пакетов
    • mangle - используется для изменения полей заголовков сетевых пакетов
  • Chains - используются для группировки набора правил, применяемых к определённому типу трафика
  • Rules - определяют критерии фильтрации сетевого трафика и действия, которые необходимо предпринять для пакетов, соответствующих этим критериям

    • ACCEPT - позволяет пакету пройти через брандмауэр
    • DROP - удаляет пакет, блокируя его прохождение
    • REJECT - удаляет пакет и отправляет сообщение об ошибке обратно на адрес источника
    • LOG - записывает информацию о пакете в системный журнал
    • SNAT - изменяет исходный IP-адрес пакета, обычно используемый для преобразования сетевых адресов (NAT) для преобразования частных IP-адресов в общедоступные IP-адреса
    • DNAT - изменяет IP-адрес назначения пакета, обычно используемый NAT для пересылки трафика с одного IP-адреса на другой
    • MASQUERADE - аналогично SNAT, но используется, когда исходный IP-адрес не является фиксированным
    • REDIRECT - перенаправляет пакеты на другой порт или IP-адрес
    • MARK - добавляет или изменяет значение метки Netfilter для пакета, которое может быть использовано для расширенной маршрутизации

    Пример работы правила: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT - добавляет новую запись в цепочку ВВОДА, которая позволяет принимать входящий TCP-трафик через порт 22 (SSH)

  • Matches - используются для соответствия определённым критериям фильтрации сетевого трафика, таким как IP-адреса источника или назначения, порты, протоколы и т.д.

    • -p - указывает протокол, которому нужно соответствовать
    • --dport - указывает порт назначения, которому нужно соответствовать
    • --sport - указывает порт источника, которому нужно соответствовать
    • -s - указывает IP-адрес источника, которому нужно соответствовать
    • -d - указывает IP-адрес назначения, которому нужно соответствовать
    • -m state - соответствует состоянию соединения
    • -m multiport - соответствует нескольким портам из диапазона
    • -m tcp - соответствует TCP-пакетам
    • -m udp - соответствует UDP-пакетам
    • -m string - сопоставляет пакеты, содержащие определённую строку
    • -m limit - сопоставляет пакеты с заданным ограничением скорости
    • -m conntrack - сопоставляет пакеты на основе информации об отслеживании их соединений
    • -m mark - сопоставляет пакеты на основе их метки Netfilter
    • -m mac - сопоставляет пакеты на основе их MAC-адресов
    • -m iprange - сопоставляет пакеты на основе диапазона IP-адресов

    Пример работы совпадений:

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

    Данная команда добавляет правило к цепочке INPUT в таблице filter, которое соответствует входящему TCP-трафику на порту 80: сопоставляет входящий TCP-трафик (-p tcp) на порту 80 (--dport 80) и переходит к целевому параметру ACCEPT (-j ACCEPT), если совпадение проходит успешно

  • Targets - определяют действия для пакетов, соответствующих определённому правилу