The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Squid(), pf, block all"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Squid(), pf, block all"  +/
Сообщение от serpentine email(ok) on 08-Ноя-12, 19:31 
Приветствую!

Есть хост с freebsd + squid + pf

Задача: раздавать инет пользователям посредством сквида + nat'ить адреса некоторых пользователей, посредством pf + предоставлять пользователям извне различные сервисы

Внизу рабочий конфиг, все работает, но не могу понять что необходимо добавить к правилу: block in log on $ext_if all

если прописываю данную блокировку и добавляю правило
pass out on $ext_if flags S/SA synproxy state то сквид перестает отвечать - т.е. просто waiting и все
Авторизация в сквиде идет ntlm с использованием winbindd на основе членства пользователей в группах AD

access.log для не работающего block:
1352388385.603  80241 192.168.0.3 TCP_MISS/200 37182 GET http://oper.ru/ admin DIRECT/84.204.58.26 text/html
access.log для работающего block:
1352388090.549      0 192.168.0.3 TCP_DENIED/407 1716 GET http://yandex.ru/yandsearch? - NONE/- text/html

Как я понимаю, перестает идти авторизация - а из-за чего - в этом вопрос, как переписать блокировки?


FreeBSD dmz 9.0-RELEASE FreeBSD 9.0-RELEASE #0:

##pf.conf
ext_if = "fxp0"  #внешний интерфейс
int_if = "em0" #внутренний интерфейс(192.168.0.1), в локальную сеть 192.168.0.0/24


table <FullAccess> { 192.168.0.5, 192.168.0.6, 192.168.0.20}
       TcpServices = "{ 25, 110, 3389, 5190 }"
         ServerRDS = 192.168.0.3
          Server1C = 192.168.0.81
      ServerGarant = 192.168.0.5
          ServerDC = 192.168.0.2


set block-policy return
set skip on lo0
scrub in all

# mail for all; DNS for dc01; nat for users

nat on $ext_if from $int_if:network to any port $TcpServices -> $ext_if
nat on $ext_if from $ServerDC to any port 53 -> $ext_if
nat on $ext_if from <FullAccess> to any -> $ext_if

# Services
rdr on $ext_if proto tcp from any to $ext_if port 5667 -> $ServerRDS port 3389
rdr on $ext_if proto tcp from any to $ext_if port 443 -> $ServerRDS port 443
rdr on $ext_if inet proto tcp from any to $ext_if port 5635 -> $Server1C port 3389
rdr on  $ext_if proto tcp from any to $ext_if port 80 -> $ServerGarant

####block in log on $ext_if all

antispoof quick for $int_if inet

pass in log on $ext_if proto tcp from any to $ServerRDS port 443 flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $ServerRDS port 3389 flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $Server1C port 3389 flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $ServerGarant port 80 flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $ext_if port {ftp, ftp-data} flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $ext_if port 4455 flags S/SA keep state

#pass out on $ext_if flags S/SA synproxy state

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Squid(), pf, block all"  +/
Сообщение от user (??) on 09-Ноя-12, 10:43 
>[оверквотинг удален]
>       ServerGarant = 192.168.0.5
>           ServerDC =
> 192.168.0.2
> set block-policy return
> set skip on lo0
> scrub in all
> # mail for all; DNS for dc01; nat for users
> nat on $ext_if from $int_if:network to any port $TcpServices -> $ext_if
> nat on $ext_if from $ServerDC to any port 53 -> $ext_if
> nat on $ext_if from <FullAccess> to any -> $ext_if

Я бы написал .... to !(self) port ... -> $ext_if

> # Services
> rdr on $ext_if proto tcp from any to $ext_if port 5667 ->
> $ServerRDS port 3389
> rdr on $ext_if proto tcp from any to $ext_if port 443 ->
> $ServerRDS port 443
> rdr on $ext_if inet proto tcp from any to $ext_if port 5635
> -> $Server1C port 3389
> rdr on  $ext_if proto tcp from any to $ext_if port 80
> -> $ServerGarant

Непонятно почему to $ext_if. Вы же редиректите запросы, первоначально предназначенные не к вам, а в "мир", соответсвенно, тоже либо any либо !(self).

> ####block in log on $ext_if all

Теперь нтиспуф.
> antispoof quick for $int_if inet

Теперь просто
block in log
block out log

Далее разрешающие правила. Делайте с опцией quick. Не используйте где попало synproxy state. Лучше modulate state. Долго расказывать но в первом случае можете потерять в скорости в разы.

pass in quick log on $ext_if inet proto tcp from any to $ServerRDS port
443 flags S/SA modulate state

> pass in log on $ext_if proto tcp from any to $ServerRDS port
> 3389 flags S/SA synproxy state
> pass in log on $ext_if proto tcp from any to $Server1C port
> 3389 flags S/SA synproxy state
> pass in log on $ext_if proto tcp from any to $ServerGarant port
> 80 flags S/SA synproxy state
> pass in log on $ext_if proto tcp from any to $ext_if port
> {ftp, ftp-data} flags S/SA synproxy state
> pass in log on $ext_if proto tcp from any to $ext_if port
> 4455 flags S/SA keep state

pass out on $ext_if flags S/SA modulate state


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Squid(), pf, block all"  +/
Сообщение от serpentine (ok) on 09-Ноя-12, 11:09 
>>[оверквотинг удален]
> Непонятно почему to $ext_if. Вы же редиректите запросы, первоначально предназначенные
> не к вам, а в "мир", соответсвенно, тоже либо any либо
> !(self).

ммм

я рассуждал, что пакет направляется на мой внешний интерфейс

> Теперь просто
> block in log
> block out log

я правильно понимаю что могу заменить эти строчки на block all log?

>  Далее разрешающие правила. Делайте с опцией quick. Не используйте где попало
> synproxy state. Лучше modulate state. Долго расказывать но в первом случае
> можете потерять в скорости в разы.

как я понимаю synproxy может защитить от sync флуда в отличии от module state?

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


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Squid(), pf, block all"  +/
Сообщение от serpentine (ok) on 09-Ноя-12, 11:32 
попробовал с учетом ваших замечаний

не сквид не нат не работают

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Squid(), pf, block all"  +/
Сообщение от user (??) on 09-Ноя-12, 18:08 
> попробовал с учетом ваших замечаний
> не сквид не нат не работают

Ну а на внутреннем что? Какие правила?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Squid(), pf, block all"  +/
Сообщение от serpentine email(ok) on 09-Ноя-12, 19:11 
>> попробовал с учетом ваших замечаний
>> не сквид не нат не работают
>  Ну а на внутреннем что? Какие правила?

выше я привел полный конфиг
нужно что-то еще добавить, типа
pass out on $int_if flags S/SA modulate state
?

p.s.
добавил правила и заработало
pass out quick on $ext_if flags S/SA modulate state
pass out quick on $int_if flags S/SA modulate state
pass in quick on $int_if inet proto tcp from $int_if:network to 192.168.0.1 flags S/SA modulate state

p.p.s
кажется пришло небольшое осознание
если я хочу заблокировать нежелательные соединения только извне, достаточно прописать
block in log on $ext_if

и дописать
pass out quick on $ext_if flags S/SA modulate state

если я блочу оба интерфейса - то соответственно разрешаю исходящие на внешнем, внутреннем,
а так же открываю доступ внутри сети к прокси - 192.168.01

2user - спасибо за помощь

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Squid(), pf, block all"  +/
Сообщение от user (??) on 09-Ноя-12, 23:31 
>>> попробовал с учетом ваших замечаний
>>> не сквид не нат не работают
>>  Ну а на внутреннем что? Какие правила?
> выше я привел полный конфиг
> нужно что-то еще добавить, типа
> pass out on $int_if flags S/SA modulate state
> ?
> p.s.
> добавил правила и заработало
> pass out quick on $ext_if flags S/SA modulate state

   Этим правилом ты даешь выход своему сквиду, нату и т.д.

> pass out quick on $int_if flags S/SA modulate state

  А это правило не обязательно. Вот почему: изначально пришел коннект на порт сквида от клиента в локальной сети(если сквид на самом роутере висит), например 192.168.0.1:3128, создается стейт, поэтому обратно пакеты пойдут, так как стейт существует.
Если это правило убрать, то, например, при взломе сервера и соответствующем уровне securelevel с роутера в локальную сеть не смогут попасть.

> pass in quick on $int_if inet proto tcp from $int_if:network to 192.168.0.1
> flags S/SA modulate state
> p.p.s
> кажется пришло небольшое осознание
> если я хочу заблокировать нежелательные соединения только извне, достаточно прописать
> block in log on $ext_if
> и дописать
> pass out quick on $ext_if flags S/SA modulate state

Да. Второе правило даст возможность отправлять пакеты с роутера в мир.

> если я блочу оба интерфейса - то соответственно разрешаю исходящие на внешнем,
> внутреннем,
> а так же открываю доступ внутри сети к прокси - 192.168.01
> 2user - спасибо за помощь

Мож почитать статейку http://www.opennet.me/tips/2680_freebsd_router_pf_altq_traff...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Squid(), pf, block all"  +/
Сообщение от serpentine (ok) on 12-Ноя-12, 09:00 
спасибо
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру