TimVin

SuSEfirewall2

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"

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

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

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

  • 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
Рубрики: Linux