Страница 1 из 1

HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-12 14:49:34
jenks
Уважаемые гуру обясните неучу как сделать что бы пользователи в обход сквида могли получать и отправлять почту по 25 и 110 портам..... Схема проста: настроил связку FreeBSD+Squid+Sams+Rejik по логину и паролю по статье http://www.lissyara.su/articles/freebsd ... ams+rejik/ и к нему прекрутил IPFW по статье http://www.lissyara.su/articles/freebsd/tuning/ipfw/, для использования 25 и 110 портов на использование почты я прочитал что необходимо скомпилировать ядро с поддержкой фаервола что бы он собственно перенаправлял запросы...

При всём при этом интернет работает отправляя запросы пользователей на 3128 порт аутентифицируясь по логину и паролю тут всё нормально, а вот Outlook не могу никак прекрутить, я так понимаю нужно прописать правила перенаправляющие порты 25 и 110...

Вот мои конфиги по IPFW:

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

cat /etc/rc.conf

ifconfig_msk0="inet 195.158.31.6  netmask 255.255.255.252"        -(Это IP - в инет)
ifconfig_rl0="inet 192.168.10.250  netmask 255.255.255.0"            -(Это IP - в локалку)
firewall_enable="YES"
firewall_script="/usr/local/etc/rc.d/ipfw.sh"
firewall_type="SIMPLE"
natd_enable="YES"
natd_interface="msk0"
firewall_quiet="NO"
gateway_enable="YES"

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

cat /usr/local/etc/rc.d/ipfw.sh

#!/bin/sh

ipfw="/sbin/ipfw -q"

local="192.168.10.0/24"
net="195.158.31.6"

oif="rl0"
iif="msk0"

${ipfw} -f flush

${ipfw} add check-state

${ipfw} add 1 allow ip from any to any via lo0

${ipfw} add 2 allow tcp from any 22 to any
${ipfw} add 3 allow tcp from any to any 22

${ipfw} add 4 deny ip from any to 127.0.0.0/8
${ipfw} add 5 deny ip from 127.0.0.0/8 to any

${ipfw} add 6 deny ip from any to 10.0.0.0/8 in via ${iif}
${ipfw} add 7 deny ip from any to 172.16.0.0/12 in via ${iif}
${ipfw} add 8 deny ip from any to 192.168.0.0/16 in via ${iif}
${ipfw} add 9 deny ip from any to 0.0.0.0/8 in via ${iif}

${ipfw} add 10 deny ip from any to 169.254.0.0/16 in via ${iif}
${ipfw} add 11 deny ip from any to 240.0.0.0/4 in via ${iif}
${ipfw} add 12 deny icmp from any to any frag

${ipfw} add 13 deny log icmp from any to 255.255.255.255 in via ${iif}
${ipfw} add 14 deny log icmp from any to 255.255.255.255 out via ${iif}

${ipfw} add 15 fwd 127.0.0.1,3128 tcp from ${local} to any 80 via ${iif}

${ipfw} add 16 divert natd ip from ${local} to any out via ${iif}
${ipfw} add 17 divert natd ip from any to ${net} in via ${iif}

${ipfw} add 18 deny ip from 10.0.0.0/8 to any out via ${iif}
${ipfw} add 19 deny ip from 172.16.0.0/12 to any out via ${iif}
${ipfw} add 20 deny ip from 192.168.0.0/16 to any out via ${iif}
${ipfw} add 21 deny ip from 0.0.0.0/8 to any out via ${iif}

${ipfw} add 22 deny ip from 169.254.0.0/16 to any out via ${iif}
${ipfw} add 23 deny ip from 224.0.0.0/4 to any out via ${iif}
${ipfw} add 24 deny ip from 240.0.0.0/4 to any out via ${iif}

${ipfw} add 25 allow tcp from any to any established

${ipfw} add 26 allow ip from ${net} to any out xmit ${iif}

${ipfw} add 27 allow udp from any 53 to any via ${iif}
${ipfw} add 28 allow udp from any to any 53 via ${iif}
${ipfw} add 29 allow udp from any to any 123 via ${iif}
${ipfw} add 30 allow tcp from any to ${net} 21 via ${iif}

${ipfw} add 31 allow tcp from any to ${net} 49152-65535 via ${iif}

${ipfw} add 32 allow icmp from any to any icmptypes 0,8,11
${ipfw} add 33 allow tcp from any to ${net} 80 via ${iif}
${ipfw} add 34 allow tcp from any to ${net} 143 via ${iif}
${ipfw} add 35 allow tcp from any to ${net} 110 via ${iif}
${ipfw} add 36 allow tcp from any to any via ${oif}
${ipfw} add 37 allow udp from any to any via ${oif}
${ipfw} add 38 allow icmp from any to any via ${oif}
${ipfw} add 39 deny ip from any to any
${ipfw} add 40 allow tcp from any to ${net} 25 via ${iif}
Гуглил, искал везде все пишут по разному что только не пробовал не получается, помогите пожалуйста, проксю повесил на работе инет идёт ,а начальство требует дурацкий Outlook почту ещё чтоб фурычала.... Благодарю за ответ !!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-12 15:39:27
kharkov_max
Squid для Вашей задачи не при чем.

Вам нужно настроить в фаерволе NAT - про это есть куча статей.
Условно правила любого фаервола можно разделить так:
1. Определение переменных (таблиц)
2. Правила нормализации трафика
3. Правила Nat, редиректа.
4. Правила фильтрации.

Вам нужно разобраться с 3 и 4.
Для начала включите в 4 allow all to all и настройте 3 пунк, когда заработает включайте 4й.
По сути Вам нужно дать внутренней сети Nat по портам 25 и 110.

Если Вы новичек - лучше начните с PF фаервола, он проще и возможно устроит Вас на 100%.
Если нужен именно ipfw - то разбирайтесь от простого к сложному, не нужно сразу писать много правил, делайте все постепенно.

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-12 18:49:24
koklushkin
squid к 110 и 25 порту отношения не имеет.
Резреши все всем с минимальным правилом и настрой nat что бы ходила почта, а потом крути под свои нужды.

P.S. PF рулит. Имхо!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-12 19:19:42
jenks
Спасибо за направление на изыскание, будем пилить в этом направлении! Но не могли бы вы поделиться конкретными примерами к сожалению ввиду ограниченности времени, на верно не успею, а мне осталось только пробросить 25 и 110 порты для Outlook......

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-12 20:56:38
koklushkin

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

ext_if="em0"
int_if="em1"

int_net="{10.0.0.0/8}"
host2="10.48.245.5"

tcp_out="20,21,25,110,443,465,3128"

table <bruteforce> persist file "/var/log/bruteforce"

set block-policy drop
set skip on lo
set timeout { frag 10, tcp.established 3600 }
scrub in all no-df fragment reassemble
scrub out all random-id max-mss 1400

nat on $ext_if from $int_net to !(self) -> ($ext_if)

block all

antispoof log quick for {lo0, $int_if, $ext_if}

block drop quick from <bruteforce>

pass quick on $int_if inet proto tcp from $int_net to any port {$tcp_out} modulate state

pass in on $int_if  proto udp from $int_net  to any   port domain   queue qdns keep state

pass in on $int_if proto tcp from $host2 to $int_if  port ssh  queue ( qssh, qack ) synproxy state (max-src-conn-rate 5/360, overload <bruteforce> flush global)

pass out on $ext_if   modulate state
ядро

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

device pf
device pflog
device pfsync
для примера хватит) будут вопросы спрашивай!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-13 6:07:05
sadchok

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

Gateway# cat /etc/rc.ipfw1
#!/bin/sh
 fwcmd="/sbin/ipfw"
 ${fwcmd} -f flush 
# VAR
 if_dmz="vr0"                   # внешний сетевой интерфейс
 ip_dmz="172.16.0.2"            # ip внешнего сетового интерфейса
 if_cor="rl1"                   # сетевой интерфейс корпоративной сети
 ip_cor="192.168.24.0/24"       # корпоративная сеть
 if_lan="rl0"                   # сетевой интерфейс локальной сети
 ip_lan="172.16.24.0/24"        # наша подсетка

# Для себя любимого

 ${fwcmd} add check-state 
 ${fwcmd} add allow ip from me to any keep-state via ${if_dmz}
 ${fwcmd} add allow ip from me to any keep-state via ${if_cor}
 ${fwcmd} add allow ip from me to any  
 
# Consultant

 ${fwcmd} add allow ip from 172.16.24.0/24 to 192.168.24.101 via ${if_cor}  
 ${fwcmd} add allow ip from 192.168.24.101 to 172.16.24.0/24 via ${if_cor}

# proxy
 
 ${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.24.0/24 to not me dst-port 80 in recv ${if_lan}

# NAT

 ${fwcmd} nat 1 config log if ${if_cor} reset same_ports redirect_addr 172.16.24.2 192.168.24.2
 ${fwcmd} add nat 1 ip from any to any via ${if_cor}

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-14 13:14:18
jenks
Спасибо всем за ответ буду пробовать !!!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 12:48:20
jenks
С добавление правил моему конфигу заработала почта через Outlook mail.ru, yandex.ru, icq, mail agent:
Тоесть обращение на 80 идёт на обработку Squid 3128, а всё остальное через нат....

${ipfw} add 41 allow all from ${local} to me 3128
${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80

${ipfw} add 43 allow tcp from any to ${net} 995 via ${iif}

${ipfw} add 44 allow tcp from any to ${net} 2041 via ${iif}
${ipfw} add 45 allow tcp from any to ${net} 2042 via ${iif}

${ipfw} add 46 allow tcp from any to ${net} 5190 via ${iif}

${ipfw} add 48 allow tcp from any to ${net} 465 via ${iif}
${ipfw} add 49 allow tcp from any to ${net} 993 via ${iif}
${ipfw} add 50 allow tcp from any to ${net} 20 via ${iif}

${ipfw} add 51 allow tcp from any to ${net} 1024 via ${iif}
${ipfw} add 52 allow tcp from any to ${net} 443 via ${iif}



Осталось пробросить Торрент и Скайп....
Погуглив нашол мануал как пробросить на закачку и раздачу Торрент:

maks="192.168.10.193" (это я)
iif="msk0" (это моя сетевая которая смотрит наружу в Интернет)
inif="192.168.10.250" (это локальный адресс моего сервака с Прокси)


${ipfw} add allow udp from any to ${maks} 30341 in via ${iif}
${ipfw} add allow udp from any to ${maks} 30341 out via ${inif}
${ipfw} add allow udp from ${igor} 30341 to any in via ${inif}


rc.conf

natd_flags=»-dynamic -f /etc/natd.conf

cat /etc/natd.conf

redirect_port udp 192.168.10.193:30341 30341


По совету мануала это порт (30341) был прописан в Торрент клиенте на Винде. Или есть какие то специфические настройки Торрент клиента для взаимодействия через Фаер.....?
Данная процедура не сработала к сожалению.....

как можно реализовать Торрент на закачку и раздачу и Скайп тоже, прошу Вашей помощи..... Желательно с примерами если можно.......Help ! :st:

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:05:21
kharkov_max
Если по простому ...

Повесь на Squid порты 80 443 8080 8081 и от себя можешь парочку добавить.

1. Skype через Squid.
2. Торрент на скачку через Nat - дай полный NAT тому компу у которого стоит торент клиент (по всем портам). На сколько я понимаю это твой комп.

А на раздачу нужно порты пробрасывать.
Тут или без раздачи сидеть или учи IPFW. (сорбственно зачем на работе что то раздавать ?) На месте Вашего начальства узнав про такое я бы Вас уволил.
Если будешь учить ipfw - используй сразу ядерный NAT а не natd.

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:07:59
kharkov_max
jenks писал(а):С добавление правил моему конфигу заработала почта через Outlook mail.ru, yandex.ru, icq, mail agent:
Тоесть обращение на 80 идёт на обработку Squid 3128, а всё остальное через нат....
Фаер супер - зачем тебе тогда Squid ?
Не проще ли всех пустить через NAT ?

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:10:04
jenks
Буду пробывать спасибо!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:12:58
jenks
Я пускаю Юзеров через Логин пароль через сквид а админю через Sams, удобно через него, а всё остальное через нат вот Торрент иСкайп остало только пробросить.....

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:13:16
Гость
kharkov_max писал(а): Условно правила любого фаервола можно разделить так:
1. Определение переменных (таблиц)
2. Правила нормализации трафика
3. Правила Nat, редиректа.
4. Правила фильтрации.
Вот она, вот она схема фаервола моей мечты!!! Спасибо тебе, товарищ!

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:19:55
jenks
Уважаемый kharkov_max вы не могли бы привести пример правила которое даёт полный НАТ как вы написали ниже на скачку торрента, об этом я как то и не подумал..

(2. Торрент на скачку через Nat - дай полный NAT тому компу у которого стоит торент клиент (по всем портам). На сколько я понимаю это твой комп.)

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:29:10
jenks
Спасибо вам ОГРОМНЕЙШЕЕЕ! kharkov_max Скайп повесил подредактировав строку

${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80

изменил на

${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80,443

осталось торрент....

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 13:37:49
kharkov_max
jenks писал(а):Я пускаю Юзеров через Логин пароль через сквид а админю через Sams, удобно через него, а всё остальное через нат вот Торрент иСкайп остало только пробросить.....
Обрати внимание на то что ты "пытаешься" пускать пользователей через прозрачный Squid - для прозрачного Squid авторизация по большому счету не нужна.
Т.е.
Пользователь идет идет в инет на сайт висящий на 80 или 443 порту, фаер ловит обращение по этим портам и заворачивает трафик в Squid на порт 3128, далее Squid от себя выкачивает страничку и отдает ее пользователю. Для пользователя это выглядит не заметно (он не настраивает в браузере подключение к Squid и не вводит логин и пароль) - пользователь думает что ходит в инет напрямую.

Что сделал ты - ты пустил юзеров через Squid только по 80 порту, а все остальное пустил через NAT.
Ведь сайты в инете работают не только на 80 портах, а как же 8080 или 8081 или 443 и т.д ?
Т.е. задачу руководства ты сделал на половину - я бы даже сказал что ни как не сделал ... Просто замылил им глаза (тебе должно быть стыдно ...)

Определись для начала зачем тебе или руководству нужен Squid (к примеру для подсчета трафика или для будущих правил по которым будут блокироваться сайты или данные, музыка/ файлы).

Если это так - то лучше:
1. Настроить не прозрачный Squid (на каждом клиенте в браузере или программе ICQ и т.д ) нужно будет указывать подключение к прокси. (в твоем фаере отключить правила fwd)
2. Выключи NAT по всем портам (т.е. ни кого не пускать в инет) - оставь Nat только на 25 и 110 портах (для почты).
3. Не используй ipfw - тебе PF за глаза хватит и он гораздо проще и понятнее для начинающих. Правила NAT и редиректа там делаются в 5 сек по одной строчке. Примеров в инете ВАЛОМ. А ты взял сложный фаер IPFW и не понимая принципов работы фаервола вообще пытаешься как то его "натянуть" ...

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 14:11:19
jenks
Я настроил связку Squid+Sams+Rejik и авторизация в Шаблоне Sams поставил по Логину и паролю (NSCA) и при запуске браузера он требует Логин и Пароль, а если мы не прописываем прокси вобще или прописываем его на 80 или 8080 порты то он не работает с натом, соответственно и интернет не работает , у меня не прозрачный прокси стоит в том то и дело а все запросы идут на сквид....

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Добавлено: 2011-12-16 14:28:46
kharkov_max
Вроде как твои слова....
а всё остальное через нат....
Разберись по шагам как работает то что ты настроил.

На данный момент из того что ты показал в squid попадает трафик клиента который хочет идти в инет на сайты по портам 80 и 443