РЕШЕНО: вопрос по SuSEFirewall (одно из решений SuSEFirewall и несколько интерфейсов)

openSUSE, SUSE Linux Enterprise

Модератор: Модераторы разделов

Аватара пользователя
prostorNET
Сообщения: 237
Статус: хадж линукс
ОС: openSuSE_12.3 + CentOS

РЕШЕНО: вопрос по SuSEFirewall

Сообщение prostorNET »

Есть машинка с openSuSE на борту, на ней 4 интерфейса.
За eth0 - моя сеть 192.192.10.0/24
За eth1 - net1 192.168.1.0/24
За eth2 - net2 192.168.0.0/16
За eth3 - net3 192.16.0.0/16

Хочу собрать новую машинку на openSuSE, но столкнулся с некоторыми проблемами, буду очень признателен за помощь:

Есть такие правила
[0:0] -A PREROUTING -s 192.168.0.0/255.255.0.0 -d 88.122.333.33 -i eth2 -j DNAT --to-destination 10.10.10.2
это я так понимаю запросы из сети 192.168.0.0/16 за интерфейсом eth2 на хост 88.122.133.33(внешний ip почты) перенаправлять на хост 10.10.10.2(внутренний ip почты). Никак не могу понять как для файла SuSEFirewall объяснить что речь идет о сети за интерфейсом eth2?

[0:0] -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.192.10.113
а в этом правиле речь идет о пакетах сети 192.168.1.0/24 за интерфейсом eth1 через eth0 маскарадить за ip моей сети 192.192.10.113.
Как это объяснить SuSEFirewall`у?
"The quieter you become the more you are able to hear." © Lao Tzu
Спасибо сказали:
UTiM
Сообщения: 180
ОС: OpenSuse

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение UTiM »

Все дело в том, что SuSEFirewall это всего-лиш надстройка над iptables, позволяющая формулировать правила в более понятной, так сказать "естественной" форме. Поэтому надо не пытаться заставить SuSEFirewall "породить" нужное правило iptables, а просто использовать его для настройки сети - нужные правила он сам сгенерит.
По сути - все ваши задачи решаются с его помощью очень легко и быстро - просто вы пока не знаете как (правил на первый взгляд много) Я не буду отсылать вас по ссылкам - вы их сами найдете (например здесь в шапке), просто изложу краткий план настройки с названиями правил, на которые надо в первую очередь обратить внимание.

1. Распределяем наши интерфейсы по группам (FW_DEV_EXT ...INT ...DMZ) Естественно "внешний" интерфейс - в группу EXT, внутренние в INT, всякие почтовики и веб-сервера - в DMZ
2. Включаем роутинг (FW_ROUTE =yes), а затем и маскарадинг на внешнем интерфейсе (FW_MASQUERADE=yes), при этом указав этот интерфейс или всю зону EXT (FW_MASQ_DEV =zone:ext)
3. Разрешаем внутренним сетям или пользователям по отдельности ходить в интернет через маскарадинг (FW_MASQ_NETS)
4. Если вам необходимо, чтобы на ваш почтовик в DMZ или не дай бог в INT могли ходить снаружи - устраиваем "проброс" (FW_FORWARD_MASQ)
5. Если вам надо, чтоб пакеты ходили между интерфейсами/сетями (например между INT и DMZ) - указываем разрешающие правила в FW_FORWARD
6.Если вам необходимо открыть доступ к каким-то службам на самом шлюзе - смотрим раздел FW_SERVICES_
7.Если вы хотите, чтобы шлюз перехватывал запросы и направлял их на свой внутренний порт (например на свой прозрачный прокси) - рулите FW_REDIRECT

Остальные правила - до поры можно оставить "по умолчанию".
Спасибо сказали:
Аватара пользователя
prostorNET
Сообщения: 237
Статус: хадж линукс
ОС: openSuSE_12.3 + CentOS

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение prostorNET »

Спасибо за внимание уважаемый UTiM.
С минимальной настройкой и работой на двух интерфейсах SuSEFireall`a я ознакомился
и не испытываю каких либо затруднений в настройке, как через редактирования
текстового файла, так и через yast и последнее время через веб (что кстати говоря очень удобно,
при отсутствии графики и за что Вам отдельное спасибо).
Вопрос я поднял так как схема малость другая (попытался нарисовать, файл в атаче.)

Так вот схема:

Интернет -> Шлюз GW (3 интерфейса) -> Интранет (моя сеть) -> Шлюз TG (4-е интерфейса eth0, eth1, eth2, eth3) ->
-> далее есть три сети подключенные к шлюзу TG и у каждой сети свои разрешения.

Для eth0 (172.30.0.113) - моя сеть Интранет FW_DEV = EXT (маскарадинг на данном интерфейсе, так же есть почтовик внутр ip=10.10.10.2 внешний ip=xx.xx.xx.xx)
Для eth1 (192.168.1.1) - сеть1 (192.168.1.0/24) FW_DEV = INT, доступ к ресурсам инета (порты 80, 443, 53, 110, 143, 993, 995, 25, 528)
Для eth2 (192.168.8.210) - сеть2 (192.168.8.0/24) FW_DEV = EXT(маскарадинг и сдесь), в этой сети меня интересует только почтовый сервер 192.168.8.115
Для eth3 (192.16.0.2) - сеть3 (192.16.0.0/16) FW_DEV = INT, доступ к ресурсам инета (порты 80, 443, 53, 110, 143, 993, 995, 25, 528)

Для начала прописал маршрутизацию, за каким интерфейсом какая сеть лежит,
0.0.0.0/0 за eth0
192.168.1.0/24 за eth1
192.168.8.0/24 за eth2
192.16.0.0/16 за eth3
default gw eth0

Правила для сети1 и сети2 я написал, проверил все работает:

Код: Выделить всё

FW_MASQ_NETS="192.168.1.0/24,0/0,tcp,80 192.168.1.0/24,0/0,udp,53 192.168.1.0/24,0/0,tcp,443 192.168.1.0/24,0/0,tcp,110 192.168.1.0/24,0/0,tcp,143 192.168.1.0/24,0/0,tcp,993 192.168.1.0/24,0/0,tcp,995 192.168.1.0/24,0/0,tcp,25 192.168.1.0/24,0/0,tcp,528 192.16.0.0/16,0/0,tcp,80 192.16.0.0/16,0/0,udp,53 192.16.0.0/16,0/0,tcp,443 192.16.0.0/16,0/0,tcp,110 192.16.0.0/16,0/0,tcp,143 192.16.0.0/16,0/0,tcp,993 192.16.0.0/16,0/0,tcp,995 192.16.0.0/16,0/0,tcp,25 192.16.0.0/16,0/0,tcp,528"


И осталось мне настроить хождение пакетов (25, 110, 143, 993, 995 порты) между двумя внешними сетями eth0 (mail) & eth2 (mail) и вот тут у меня не получается.
Мне из моей сети 172.30.0.0/16 по портам 110,143,993,995,25 должен быть доступен 192.168.8.115
И при этом пакеты из моей сети 172.30.0.0/16 по портам 110,143,993,995,25 для хоста 192.168.8.115 тоже должны ходить.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
"The quieter you become the more you are able to hear." © Lao Tzu
Спасибо сказали:
UTiM
Сообщения: 180
ОС: OpenSuse

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение UTiM »

Очень подробно и правильно сформулированный вопрос! Вседа-бы так.

По идее для попадания из сети 172.30.0.0/16 на почтовик через маскарадинг на eth0 в 192.168.8.15 должен помочь "проброс"
FW_FORWARD_MASQ=192.30.0.0/16,192.168.8.15,tcp,110 и так далее на другие порты, но смущает наличие маскарадинга на eth2 - тут надо "опыты ставить". Так-же можно "эксперементнуть" с FW_FORWARD=192.30.0.0/16,192.168.8.15,tcp,110
Если первый вариант не проходить - то подумайте - так-ли уж необходим вам маскарадинг на eht2? Есть-ли необходимость прятать ip внутренних сетей от почтовика, если сеть 192.168.8.0/24 "глухая" - то-есть имеет только один шлюз через eth2? - если причина маскарадинга - защитится от сети 192.168.8.0/24 -то обзовите ее DMZ и разрешите из eth0 "проброс" - как указано, а из eth1 и eth3 - "форвардинг", но только на нужные порты нужного сервера (если из eth1 и eth3 на eth2 ходить не нужно - просто ничего не пишите -по умолчанию все запрещено).

На случай, если "официльные" методы не помогают, и вы хорошо разбираетесь в iptables - есть "черный ход" в виде правила по имени FW_CUSTOMRULES , которое ссылается на файл, куда вы можете вручную помещать настройки для iptab-леса. Но при этом вся "наглядность" настройки через SuseFirewall естественно - теряется...
Спасибо сказали:
Аватара пользователя
prostorNET
Сообщения: 237
Статус: хадж линукс
ОС: openSuSE_12.3 + CentOS

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение prostorNET »

Спасибо.
Сегодня если успею попробую, потом отпишусь...
"The quieter you become the more you are able to hear." © Lao Tzu
Спасибо сказали:
Аватара пользователя
prostorNET
Сообщения: 237
Статус: хадж линукс
ОС: openSuSE_12.3 + CentOS

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение prostorNET »

И так путем экспериментов получилось.
А теперь все по порядку, может кому мой опыт пригодится.

Что есть и что нам нужно:

Есть четыре сети.
Сеть NET-0 (интерфейс techgate eth0) - сеть моей компании на 100% контролируемая мной, адрес сети 172.30.0.0/16 . Это единственная сеть имеющая свой выход в инет через шлюз 172.30.0.1, так же в моей сети есть дополнительный шлюз (роутер) с адресом 172.30.0.113(имя ему techgate) именно через него мы и будем настраивать связь сетей и давать доступ другим в инет. Так же есть в пространстве моей сети зона DMZ в ней находиться мой почтовик с адресом 10.10.10.2 .

Сеть NET-1 (интерфейс techgate eth1) - сеть другой компании дружественная нам, но им мы даем только возможность в инет по следующим портам (80, 443, 110, 143, 993, 995, 25, 528 и еще разрешим проброс запросов dns т.е. 53 порт) и не предоставляем доступ к другим ресурсам нашей и других сетей. Адрес сети 192.168.1.0/24 шлюзом для данной сети служит интерфейc techgate eth1 с адресом 192.168.1.1 . Контролируем их выход в мир, но внутри они саморегулируются.

Сеть NET-2 (интерфейс techgate eth2) - сеть совершенной другой (чужой) компании со своей инфраструктурой, своим доступом в инет и прочими сервисами. Через шлюз techgate мы даем возможность сотрудникам получать доступ к почтовым аккаунтам, а серверам обмениваться почтой минуя инет (трафик достаточный, так как имеет место большого количества вложений) из всего выше сказанного нам нужно настроить общение по следующим портам 110, 143, 993, 995, 25

Сеть NET-3 (интерфейс techgate eth3) - сеть совершенной другой (чужой) компании со своей инфраструктурой. им мы даем только возможность в инет по следующим портам (80, 443, 110, 143, 993, 995, 25, 528 и еще разрешим проброс запросов dns т.е. 53 порт) и не предоставляем доступ к другим ресурсам нашей и других сетей. Адрес сети 192.16.0.0/16 шлюзом для данной сети служит интерфейc techgate eth3 с адресом 192.16.0.2 . Контролируем их выход в мир, но внутри они саморегулируются.

Настройки сети и маршрутов:

Код: Выделить всё

0.0.0.0/0 за eth0 c ip - 172.30.0.113
192.168.1.0/24 за eth1 с ip - 192.168.1.1
192.168.8.0/24 за eth2 c ip - 192.168.8.210
192.16.0.0/16 за eth3 c ip - 192.16.0.2
default gw eth0


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

И так наши правила:

Распределяем интерфейсы по зонам (зависит от того какие правила применяем), включаем роутинг, назначаем какие интерфейсы будем маскарадить, а так же в моем случаи интерфейсы внутренних зон тоже фаерволим:

Код: Выделить всё

FW_DEV_EXT="eth0","eth2"
FW_DEV_INT="eth1","eth3"
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_MASQ_DEV="zone:ext"
FW_PROTECT_FROM_INT="yes"


Теперь правила для сетей находящихся за интерфейсами принадлежащим внутренней зоне:

Код: Выделить всё

FW_MASQ_NETS="192.168.1.0/24,0/0,tcp,80 192.168.1.0/24,0/0,udp,53 192.168.1.0/24,0/0,tcp,443 192.168.1.0/24,0/0,tcp,110 192.168.1.0/24,0/0,tcp,143 192.168.1.0/24,0/0,tcp,993 192.168.1.0/24,0/0,tcp,995 192.168.1.0/24,0/0,tcp,25 192.168.1.0/24,0/0,tcp,528 192.16.0.0/16,0/0,tcp,80 192.16.0.0/16,0/0,udp,53 192.16.0.0/16,0/0,tcp,443 192.16.0.0/16,0/0,tcp,110 192.16.0.0/16,0/0,tcp,143 192.16.0.0/16,0/0,tcp,993 192.16.0.0/16,0/0,tcp,995 192.16.0.0/16,0/0,tcp,25 192.16.0.0/16,0/0,tcp,528"


Мне нужен был доступ к серверу по ssh и www из сети с интерфейса eth0 (так как к стандартному управлению сервером, теперь использую OSFW - веб интерфейс):

Код: Выделить всё

FW_SERVICES_EXT_TCP="www","ssh"


Теперь правила для хождения пакетов между почтовыми серверами и клиентами:

Код: Выделить всё

FW_FORWARD_MASQ="192.168.8.0/24,10.10.10.2,tcp,110,110,XX.XX.XX.XX"
FW_FORWARD_MASQ="192.168.8.0/24,10.10.10.2,tcp,143,143,XX.XX.XX.XX"
FW_FORWARD_MASQ="192.168.8.0/24,10.10.10.2,tcp,993,993,XX.XX.XX.XX"
FW_FORWARD_MASQ="192.168.8.0/24,10.10.10.2,tcp,995,995,XX.XX.XX.XX"
FW_FORWARD_MASQ="192.168.8.0/24,10.10.10.2,tcp,25,25,XX.XX.XX.XX"
FW_FORWARD_MASQ="172.30.0.0/16,192.168.8.115,tcp,110,110,192.168.8.115"
FW_FORWARD_MASQ="172.30.0.0/16,192.168.8.115,tcp,143,143,192.168.8.115"
FW_FORWARD_MASQ="172.30.0.0/16,192.168.8.115,tcp,993,993,192.168.8.115"
FW_FORWARD_MASQ="172.30.0.0/16,192.168.8.115,tcp,995,995,192.168.8.115"
FW_FORWARD_MASQ="172.30.0.0/16,192.168.8.115,tcp,25,25,192.168.8.115"


P.S. XX.XX.XX.XX - внешний адрес моего почтовика
Пожалуй все, запускаем файер и проверяем.
Надеюсь это краткое описание настройки SuSEFirewall2 с
количеством интерфейсов более двух пригодится.
"The quieter you become the more you are able to hear." © Lao Tzu
Спасибо сказали:
UTiM
Сообщения: 180
ОС: OpenSuse

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение UTiM »

Маленькая рекомендация.
Общее правило

Код: Выделить всё

FW_SERVICES_EXT_TCP="www","ssh"

рекомендую заменить на более частное (с указанием источника)

Код: Выделить всё

FW_SERVICES_ACCEPT_EXT =172.30.0.0/16,tcp,80 172.30.0.0/16,tcp,22

, так как в противном случае вы открываете доступ на шлюз по данным портам из любых EXT сетей (в т.ч. из eth2). Вместо 172.30.0.0/16 лучше даже указать адрес конкретной машины, с которой планируется администрировать сервер.
Спасибо сказали:
Аватара пользователя
prostorNET
Сообщения: 237
Статус: хадж линукс
ОС: openSuSE_12.3 + CentOS

Re: РЕШЕНО: вопрос по SuSEFirewall

Сообщение prostorNET »

Спасибо, очень дельное замечание, как то упустил это из виду.
"The quieter you become the more you are able to hear." © Lao Tzu
Спасибо сказали: