Shorewall - это легко настраиваемый, удобный файрволл для малых сетей. Оно является надстройкой над системой Netfilter (iptables/ipchains) ядра Linux. Оно на выходе генерирует из своих правил правила (конфигурации) понятные для iptables/ipchains. В ней не предоставлено какие либо пользовательские интерфейсы для конфигурирования. Правка конфигурационных файлов можно сделать любым текстовым редактором.
Это было краткое ознакомление, а теперь перейдем к установке и конфигурированию.
Установка
Установку можно произвести скачав .rpm или .deb пакет или же автоматически.Для Fedora/CentOS
# rpm -ivh shorewall-x.x.x.noarch.rpmИли
# yum install shorewall
Для Ubuntu/Debian
# dpkg -i shorewall-x.x.x.debИли
# apt-get install shorewall
Конфигурация
Конфигурационные Shorewall лежат в папке/etc/shorewall
Часто используемые и основные конфигурационные файлы это:
# /etc/shorewall/policy # /etc/shorewall/interfaces # /etc/shorewall/zones # /etc/shorewall/rules # /etc/shorewall/tunnels
/etc/shorewall/interfaces
В данном файле содержиться описание интерфейсов. То есть какой интерфейс (сетевой адаптер) должен распознаваться каким образом.
К примеру.
#ZONE INTERFACE BROADCAST OPTIONS net eth0 detect loc eth1 detect
Правило выше говорит что сетевой адаптер eth0 должен распознаваться как "МИР", в то время как сетевой адаптер eth1 должен распознаваться как локаль.
Если вы не знаете какой из интерфейсов у вас выходит в "МИР". то наберите следующую команду
# ip route ls
Данная команда покажет вам какой интерфейс через какой шлюз выходит в интернет
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.2 metric 1 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.3 metric 1 default via 192.168.0.4 dev eth0 proto static
В моем случае это интерфейс eth0 выходить в интернет через 192.168.0.4
Если вы поднимаете файрволл по локальной сети для тестирования. Как и в моем случае так как маска обеих моих интерфейсов 192.168.0.0/24 то вы можете в этом же конфигурационном файле указать, какие адреса понимать как внешние а какие локальные. Пример
#ZONE INTERFACE BROADCAST OPTIONS net eth0 detect loc eth1 detect nets=(192.168.0.110,192.168.0.100)
Пример выше обясняет что адреса 192.168.0.110 и 192.168.0.100 понимать как локальные адреса для интерфейса eth1 и все остальное как внешние адреса eth0.
Если у вас кроме eth0 имеется и другие соединения к примеру VPN то необходимо и ее определить и ее интерфейс. К примеру у вас есть VPN соединение и она создает программный сетевой адаптер
tun0
.#ZONE INTERFACE BROADCAST OPTIONS net eth0 detect loc eth1 detect vpn tun0 detect routeback
К vpn соединениям обязательно в Опциях необходимо писать
routeback
. Данная опция говорит о том что ответы на запрос по данному туннелю передавались по этому же туннелю. Кроме этого необходимо также последовательно изменить конфигурационные файлы в /etc/shorewall/tunnels
и /etc/shorewall/policy
для того чтобы VPN трафик между двумя сетями проходило и соединение состоялось. Это мы узнаем при рассмотрение соотвествующих конфигурационных файлов./etc/shorewall/zones
Данный конфигурационный файл используется для определния зон.
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 vpn ipv4
Это говорит что fw это файрволл a все отальное net, loc, vpn это зоны определющиеся по ipv4.
/etc/shorewall/policy
В этом конфигурационном файле описывается абстрагированное правило - это означает если какое то правило не был найден в конфигурационном файле правил
/etc/shorewall/rules
то примениться данное правило. То есть последовательность чтения правил это /etc/shorewall/rules
потом /etc/shorewall/policy
.Пример:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST $FW net ACCEPT info net all DROP info loc net REJECT info # THE FOLLOWING POLICY MUST BE LAST all all REJECT info
Первая строка разрешает все соединения от файрвола к "МИРУ". Вторая строка сбрасывает все соеднинения от интернета ко всем. Третья строка запрещает все соединения от локальных компьютеров к файрволу. И Последняя строка, она не должна изменяться и должна быть последним всегда, данная строка запрещает все соединения которые не описаны правилами выше.
/etc/shorewall/rules
Написание правил в shorewall очень просты. В каждой строке пишется одно правило в последовательности команда, источник, назначение, протокол, порт назначенного, порты источника и т.д как показано внизу
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER MARK # PORT PORT(S) DEST LIMIT GROUP
Теперь к примеру нам необходимо все веб соединения c мира на этот компьютер перенаправить на локальный 192.168.0.110, так как у нас веб сервер находиться на этой машине для это мы пишем.
ACCEPT net loc:192.168.0.110:80 tcp 80,443И все этого достаточно. Ну вы можете это же правило написать по другому. Shorewall для общеизвестных программ предлагаем свои макросы. К примеру правило выше можно было так же написать следующим образом
Web/ACCEPT net loc:192.168.0.110:80По написанию правил есть у shorewall своя хорошо написанная документация вот тут
Комментариев нет:
Отправить комментарий