Home Wiki > SuSEfirewall2
Sign up | Login

SuSEfirewall2

tagline: Материал из openSUSE

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

Общая информация

SuSEfirewall2 — это, в своей основе, скрипт, который генерирует правила для iptables из конфигурации сохранённой в файле /etc/sysconfig/SuSEfirewall2. SuSEfirewall2 защищает вас от сетевых атак, отвергая или отбрасывая нежелательные пакеты, которые поступают на ваш сетевой интерфейс.

Для более широких возможностей настройки, брэндмауэр предоставляет три различные зоны(zones), в которые вы можете определить сетевые интерфейсы. Это позволяет SuSEfirewall2 выступать в роли маршрутизатора между тремя различными сетями, или в качестве сервера локальной сети, который предоставляет доступ в Интернет (или другую сеть) с использованием трансляции сетевых адресов.

 +------------------------+
 | любая Зона Брэндмауэра |
 +------------+-----------+
              |
              +--> [ имеет назначенные сетевые интерфейсы ]
              |
              +--> [ имеет определённые разрешённые сервисы ]

Конфигурация

Чтобы сконфигурировать SuSEfirewall2:

  • отредактируйте файл /etc/sysconfig/SuSEfirewall2 вручную и выполните команду
/sbin/SuSEfirewall2


  • используйте модуль конфигурации YaST описанный на странице YaST_Firewall

Возможности

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

Если в какой-либо переменной может быть задано несколько значений, они записываются через пробел.

Например:

FW_VARIABLE="value1 value2 value3,with,more,parameters"

Зоны брэндмауэра

SuSEfirewall2 имеет три различные зоны по умолчанию:

  • EXT - Внешняя зона (так называемая ненадёжная, Интернет)
  • INT - Внутренняя зона (полностью доверяемая, без фильтрации, ЛВС)
  • DMZ - Демилитаризованная зона (для серверов, которые должны быть доступны из интернета)

Сетевой интерфейс может быть отнесен к зонам добавлением имени интерфейса в переменные FW_DEV_зона, в которых зона - одна из настроенных зон.

Например:

FW_DEV_EXT="dsl0"
FW_DEV_EXT="any wlan0"
FW_DEV_INT="eth0 wlan1"

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

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

FW_ZONES="wlan"
FW_DEV_wlan="ra0"

Разрешение доступа к сервисам

Каждая зона брэндмауэра может разрешить четыре типа сервисов:

  • TCP - FW_SERVICES_EXT_TCP, FW_SERVICES_INT_TCP, FW_SERVICES_DMZ_TCP
  • UDP - FW_SERVICES_EXT_UDP, FW_SERVICES_INT_UDP, FW_SERVICES_DMZ_UDP
  • RPC - FW_SERVICES_EXT_RPC, FW_SERVICES_INT_RPC, FW_SERVICES_DMZ_RPC
  • IP - FW_SERVICES_EXT_IP, FW_SERVICES_INT_IP, FW_SERVICES_DMZ_IP

TCP и UDP могут быть заданы номером порта(port number), именем порта(port name) (соответствие между именем и номером вы можете найти в файле /etc/services) или диапазоном портов(port range) определённым двумя номерами портов разделенных двоеточием.

Например:

FW_SERVICES_EXT_TCP="ssh"
FW_SERVICES_EXT_TCP="ftp 22 telnet 512:514"
FW_SERVICES_EXT_UDP="631 400:405"

Кроме того, пакеты могут предоставлять файл конфигурации, который описывает, какие порты должны быть открыты для запуска конкретного сервиса, см. SuSEfirewall2/Service_Definitions_Added_via_Packages. Использование этого метода особенно удобно, если сервис нуждается в нескольких портах.

Более ограниченный доступ к сервисам

Вышеупомянутый способ разрешить доступ к услугам не очень ограничительный. Он позволяет или не позволяет. Существуют параметры, которые могут быть установлены, чтобы позволить более ограниченный доступ к сервису. Однако, определения разрешённых сервисов приведенные выше имеют приоритет над определениями указанными ниже когда используется тот же самый порт. Этими параметрами являются:

  • FW_SERVICES_ACCEPT_EXT, FW_SERVICES_ACCEPT_INT, FW_SERVICES_ACCEPT_DMZ

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

Таким образом, формат строки это список разделённых пробелами правил, состоящих из сети,протокола[,порта назначения[,порт источника [,флагов]]]

Например
FW_SERVICES_ACCEPT_EXT="0.0.0.0/0,tcp,22"
# 0.0.0.0/0 ограничивает доступ только через IPv4

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

  • hitcount=NUMBER  : ipt_recent --hitcount параметр
  • blockseconds=NUMBER : ipt_recent --seconds параметр
  • recentname=NAME  : ipt_recent --name параметр

Например:

# Позволить максимально три ssh подключения в минуту с одного и того же IP адреса где-то в Интернете:
FW_SERVICES_ACCEPT_EXT="0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"
# 0/0 позволяет доступ через IPv4 и IPv6

Маскарадинг

FW_ROUTE="yes"

FW_MASQUERADE="yes"

Также необходимо, чтобы были указаны внутренний интерфейс FW_DEV_INT (или FW_DEV_DMZ) и маскирующий интерфейс FW_MASQ_DEV, который по умолчанию равен внешнему FW_DEV_EXT.

Вы можете определить сети, которые будут маскироваться, разрешить доступ к определённым сервисам.

Реализуется это путём редактирования правила FW_MASQ_NETS.

  • Синтаксис: <destination network>
  • Синтаксис: <source network>[,<destination network>,<protocol>[,port[:port]]
  • Синтаксис: <source network>[,<destination host>,<protocol>[,port[:port]]
  • Синтаксис: <source network>[,<destination host>,<protocol>[,port]]
  • Синтаксис: <source network>[,<destination host>,<protocol>]

Например:

FW_MASQ_NETS="0/0"                       - неограниченный доступ.
FW_MASQ_NETS="192.168.1.0/24,0/0,tcp,80" - разрешить сети 192.168.1.0/24 доступ только к web ресурсам
FW_MASQ_NETS="192.168.1.1/32,0/0,tcp,80" - разрешить хосту 192.168.1.1/32 доступ только к web ресурсам
FW_MASQ_NETS="192.168.1.1/32,0/0,udp,87" - разрешить хосту 192.168.1.1/32 доступ в интернет по 87 порту UDP
FW_MASQ_NETS="192.168.1.1/32,0/0,tcp"     - разрешить хосту 192.168.1.1/32 доступ по любому TCP порту

Доступ к маскированным адресам

Реализуется путём редактирования 14) правила FW_FORWARD_MASQ.

Синтаксис: <source network>,<ip to forward to>,<protocol>,<port>[,redirect port,[destination ip]]

  Например:
  FW_FORWARD_MASQ="0/0,192.168.2.2,tcp,4662,4662,81.196.137.156 0/0,192.168.2.2,udp,4672,4672,81.196.137.156"

Пояснение: Весь трафик, идущий из Интернета на машину 81.196.137.156 (кот. маскирует машины внутренней сети) на tcp порт 4662 и на udp порт 4672, перенаправляется на внутреннюю машину 192.168.2.2. В результате возможны обращения к этой машине из внешней сети, что может потребоваться в некоторых случаях.

Доступ к компьютерам во внутренней сети

Для получения доступа к некому компьютеру (внутренней сети), с использованием определенного порта (например TCP), используется переменная FW_FORWARD_MASQ

Например:

FW_FORWARD_MASQ="0/0,192.168.0.11,tcp,80"

Все запросы на 80 TCP порт, приходящие из Интернет на внешний интерфейс фаервола, будут перенаправлены на внутренний компьютер, внутренней сети, с IP адресом 192.168.0.11

Такое перенаправление называют иногда пробросом порта во внутренную сеть.

Прозрачное перенаправление

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

Реализуется путём редактирования правила FW_REDIRECT.

Синтаксис: <source network>[,<destination network>,<protocol>[,dport[:lport]] Например:

FW_REDIRECT="192.168.2.0/24,0/0,tcp,80,3128"  -  перенаправить весь трафик, идущий на 80 порт, на 3128

Но для прозрачного перенаправления запросов пользованелей на прокси сервер, как правило этого недостаточно!

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

   httpd_accel_host virtual
   httpd_accel_port 80
   httpd_accel_with_proxy on
   httpd_accel_uses_host_header on

Ведение журнала

...

HTB - настройка максимальной скорости загрузки

...

IPv6

У конфигурации Интернет протокола версии 6 (IPv6) есть следующие пункты:

  • Поддержка IPv6 - FW_IPv6 да/нет(yes/no)
  • Конфигурация исходящих пакетов IPv6 - FW_IPv6_REJECT_OUTGOING да/нет/отбросить([yes]/no/drop)

Например:

FW_IPv6=""
FW_IPv6_REJECT_OUTGOING="no"
  • FW_IPv6 по умолчанию поддержка IPv6 в ядре, если параметр пустой.
  • FW_IPv6_REJECT_OUTGOING значение конфигурации по умолчанию - да(yes (отклонять)).

Чтобы разрешить пересылку пакетов из подсети IPv6 за SuSEfirewall2 установите FW_FORWARD="[ваш префикс IPv6 ]/64,2000::/3"

Неработающие элементы

  • SuSEfirewall2 не поддерживает все особенности IPv6.
  • Список неработающих ключевых слов:
    • FW_TRUSTED_NETS
    • FW_SERVICES_ACCEPT_EXT
    • ... (Не стесняйтесь добавлять)

Смотри также

Пожалуйста смотрите содержимое /usr/share/doc/packages/SuSEfirewall2/ из пакета SuSEfirewall2.