SuSEfirewall2
Материал из openSUSE.
Содержание |
Общая информация
SuSEfirewall2 является полноценным межсетевым экраном, так же известным как брэндмауэр(firewall). Это скрипт, который генерирует правила для iptables из конфигурационного файла /etc/sysconfig/SuSEfirewall2. SuSEfirewall2 защищает вас от сетевых атак, проверяя трафик и отбрасывая нежелательные или подозрительные пакеты, которые приходят по сети.
Для более широких возможностей настройки, брэндмауэр имеет три различные зоны(zones), которые вы можете назначить сетевым интерфейсам. Это позволяет ему выступать в роли маршрутизатора между тремя различными сетями, или в качестве сервера доступа в Интернет(или другую сеть) с использованием трансляции сетевых адресов.
+---------------------+
| Зона брэндмауэра
+----------+----------+
|
+--> [ Привязка к сетевому интерфейсу ]
|
+--> [ Разрешенные сервисы ]
Конфигурация
Для настройки SuSEfirewall2 :
- Вручную отредактируйте файл /etc/sysconfig/SuSEfirewall2 и выполните команду
/sbin/rcSuSEfirewall2 restart
или
- Используйте для настройки YaST (модуль YaST_Firewall)
Возможности
SuSEfirewall2 имеет слишком много различных настроек, чтобы их можно было реализовать в YaST, поэтому для тонких настроек используйте редактирование конфигурационного файла, в который включена подробная документация по всем функциям.
Если в какой-либо переменной может быть задано несколько значений, они записываются через пробел.
Например: FW_VARIABLE="value1 value2 value3,with,more,parameters"
Зоны брэндмауэра
SuSEfirewall2 имеет три различные зоны:
- EXT - Внешняя (небезопасная, Интернет) FW_DEV_EXT
- INT - Внутренняя (доверенная) FW_DEV_INT
- DMZ - Demilitarized FW_DEV_DMZ
Распределяйте сетевые интерфейсы по зонам в соответствии с вашими потребонстями. Если у вас только один интерфейс, лучше всего поместить его во внешнюю зону. Добавление сетевых интерфейсов производится добавлением имени интерфейса к переменным.
Например: FW_DEV_EXT="eth-id-00:e0:4c:9f:61:9a" FW_DEV_EXT="any eth-id-00:e0:4c:9f:61:9a" FW_DEV_INT="eth5 eth6"
Кроме того, внешняя зона имеет дополнительные функции, связанные с безопасностью. В переменной также можно указать значение any - включение всех интерфейсов, которые не назначены явно в других зонах.
Разрешение доступа к сервисам
Каждая зона имеет четыре типа сервисов:
- 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_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_FORDARD_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

