LINUX.ORG.RU
ФорумAdmin

host-gw : решение на SQUID & IPFW


0

0

Планируется поднятие сервера под FreeBSD 4.5, играющего роль шлюза в
интернет для клиентов в офисе. На нем также находится почтовый сервер
(domain.ru).

Условимся:
Интерфейс dc0 (IP 195.195.195.195) смотрит на ISP
Интерфейс rl0 (IP 10.0.0.1) смотрит во внутреннюю сеть.

Планирую все запросы пользователей (помимо почты) свести на SQUID, то есть дать им доступ со своих машин только на шлюз 10.0.0.1, порт 8080 (не считая портов почты), где будет сидеть SQUID, который и будет осуществлять доступ пользователей наружу в мир, работая при этом с прокси провайдера (parent).
Это облегчит контроль за их работой, позволит гибко осуществлять
разграничения необходимые, подсчет трафика и прочие вещи.

Почтой пользоваться скорее всего все будут с локального почтового сервера, расположенного на этом же шлюзе или через броузер, у кого есть ящики на серверах в инете.
Поднимать или нет natd пока не решил.

Ниже привожу первоначальный необходимый набор правил ipfw, по которым и хочу получить критику с вашей стороны.
Смысл их должен быть понятен в целом, может чего убрать или добавить нужно, либо иначе как-то решить тот или иной момент.


#!/bin/sh

fwcmd="/sbin/ipfw"


${fwcmd} -f flush

# Разрешаем трафик по local интерфейсу
${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.0/8
${fwcmd} add deny all from 127.0.0.0/8 to any

# защищаемся от спуфинга, типа так:
${fwcmd} add deny ip from 10.0.0.0/24 to any in via dc0
${fwcmd} add deny ip from 195.195.195.195 to any in via rl0

# Запрещаем прохождение фрагментированных пакетов
${fwcmd} add deny icmp from any to any frag

# Разрешаем прохождение ICMP пакетов
${fwcmd} add pass ICMP from any to any

# разрешаем traceroute
${fwcmd} add pass udp from 195.195.195.195 to any 33434-33523 out via dc0

# Разрешаем работу с SMTP протоколом
${fwcmd} add pass tcp from any to any 25
${fwcmd} add pass tcp from any 25 to any

# Squid port 8080
${fwcmd} add pass tcp from 10.0.0.0/24 to 10.0.0.1 8080
${fwcmd} add pass tcp from 10.0.0.1 8080 to 10.0.0.0/24

# Squid ISP
${fwcmd} add pass tcp from 195.195.195.195 to ip_isp_squid 3128,3130
${fwcmd} add pass tcp from ip_isp_squid 3128,3130 to 195.195.195.195
${fwcmd} add pass udp from 195.195.195.195 to ip_isp_squid 3130
${fwcmd} add pass udp from ip_isp_squid 3130 to 195.195.195.195

# Разрешаем работу по портам 20,21,80 напрямую, при неудаче через
ip_isp_squid
${fwcmd} add pass tcp from 195.195.195.195 to any 20,21,80
${fwcmd} add pass tcp from any 20,21,80 to 195.195.195.195

# Разрешаем работу с DNS серверами
${fwcmd} add pass tcp from any to any 53
${fwcmd} add pass tcp from any 53 to any
${fwcmd} add pass udp from any to any 53
${fwcmd} add pass udp from any 53 to any

# Разрешаем забор почты по POP3 протоколу
${fwcmd} add pass tcp from any to any 110
${fwcmd} add pass tcp from any 110 to any

# Разрешаем доступ по ssh
${fwcmd} add pass tcp from good_ip to 195.195.195.195 22
${fwcmd} add pass tcp from 195.195.195.195 22 to good_ip

# Deny all log
${fwcmd} add deny log all from any to any


Знаю, что нужно использовать keep-state и check-state в связке с правилами ${fwcmd} add pass udp from any ХХ to any, иначе я даю доспут к своему шлюзу откуда угодно по tcp\udp.

Как это все правильнее прописать, хотелось бы примеры данных правил услышать по моему случаю.


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.