The OpenNET Project / Index page

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

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

"ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от evg89 (ok) on 25-Ноя-12, 15:56 
Ну вот я и добрался до фаервола. Ядро скомпилировано со всеми соответствующими опциями для ipfw и nat. Сразу разобраться с правилами не получилось, подскажите - а сущетсвуют ли конфиги-примеры, конфиги-шаболны, не знаю даже как их назвать... Что бы с комментариями, комментируешь что не нужно, меняешь, смотришь как работает. Я думаю так проще будет разобраться, подкиньте ссылок, а может и своих конфигов. Заранее спасибо!
Ответить | Правка | Cообщить модератору

Оглавление

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


1. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от user (??) on 25-Ноя-12, 20:35 
> Ну вот я и добрался до фаервола. Ядро скомпилировано со всеми соответствующими
> опциями для ipfw и nat. Сразу разобраться с правилами не получилось,
> подскажите - а сущетсвуют ли конфиги-примеры, конфиги-шаболны, не знаю даже как
> их назвать... Что бы с комментариями, комментируешь что не нужно, меняешь,
> смотришь как работает. Я думаю так проще будет разобраться, подкиньте ссылок,
> а может и своих конфигов. Заранее спасибо!

А погуглить?
http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/

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

2. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от evg89 (ok) on 12-Дек-12, 21:29 
Были дела. Сегодня добрался до сервера, который требуется настроить. Вернее доберусь завтра, сейчас в блокнотике набросал правила.

Что крутится на сервере и уже настроено (фаервол - опен): почта sendmail, впн mpd5, веб-сервер apache (на нем 1 сайт), кэширующий прокси squid+squidguard (должен быть прозрачным) для выхода в интернет из локальной сети.

Посмотрел примеры конфигов, покопался в сети, вот что вышло:

#IPFW firewall: /etc/firewall.conf

ipfw="/sbin/ipfw -q"
local="hn0"
local_ip="10.0.0.100"
inet="hn1"
inet_ip="XXX.XXX.XXX.XXX"

#clear rules
${ipfw} -q -f flush

#loopback
${ipfw} add allow all from any to any via lo0
${ipfw} add deny all from any to 127.0.0.0/8
${ipfw} add deny all from 127.0.0.0/8 to any
${ipfw} add deny tcp from any to any fraq

#anti-hack from outside
${ipfw} add deny ip from me to any in recv ${local}

#deny netbios
${ipfw} add deny ip from any 137-139 to any
${ipfw} add deny ip from any to any 137-139

#SSH for localhost allow
${ipfw} add allow tcp from me 22 to any
${ipfw} add allow tcp from any to me 22

#DNS transfers to world
${ipfw} add allow udp from me 53 to any
${ipfw} add allow udp from any to me 53

#DNS, NTP, SNMPx2, DNSs
${ipfw} add allow udp from me to any 53,123,161
${ipfw} add allow udp from any 53,123,161 to me

#VPN-connect - MPD5
${ipfw} add allow tcp from me 1723 to any keep-state
# GRE for MPD5
${ipfw} add allow gre from any to any

#PROXY (прозрачный)
${ipfw} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80-83,8080-8088 out via ${inet}

#FTP & HTTP from this server to world
${ipfw} add allow tcp from me to any 20,21,80,443 keep-state
#Passive FTP backports
${ipfw} add allow tcp from me to any 49151-65535 keep-state

#for apache
${ipfw} add allow tcp from any to ${inet_ip} 80 via ${inet}

#nat
${ipfw} nat config log if ${inet} reset same_ports
${ipfw} add nat 1 ip from any to any via ${inet}

#MAIL (SMTP,POP3,IMAP,IMAPs, POP3s)
${ipfw} add allow tcp from 10.0.0.0/24{1-231,240-254} to any 25,110,143,993,995 keep-state
${ipfw} add allow tcp from any to ${inet_ip} 25,110,143,993,995 via ${inet}

#log
${ipfw} add deny log logamount 3000 all from any to any

${ipfw} add deny ip from any to any


Уверен, что есть косяки и несостыковки, просьба подправить и направить на путь истинный. Так же с ходу не разобрался - как ввести некоторые ip из локалки, которым разрешено все и в инет бы они ходили не через прокси и торренты качать, если приспичит?))) Подскажите, пожалуйста!? Заранее спасибо!

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

3. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от user (??) on 13-Дек-12, 01:44 
Вам бы почитать в общем о стратегии написания правил для файерволов. Просто, кажеться у вас нет понятия вцелом. Извините если обидел :-)

>[оверквотинг удален]
> #loopback
> ${ipfw} add allow all from any to any via lo0
> ${ipfw} add deny all from any to 127.0.0.0/8
> ${ipfw} add deny all from 127.0.0.0/8 to any
> ${ipfw} add deny tcp from any to any fraq
> #anti-hack from outside
> ${ipfw} add deny ip from me to any in recv ${local}
> #deny netbios
> ${ipfw} add deny ip from any 137-139 to any
> ${ipfw} add deny ip from any to any 137-139

  Зачем это?? Стратегия: запрещаем все, кроме нужных портов\протоколов. Фаер работает по первому срабатыванию правила, поэтому тут мы открываем "окна" (порты, если хотите).

>[оверквотинг удален]
> #DNS transfers to world
> ${ipfw} add allow udp from me 53 to any
> ${ipfw} add allow udp from any to me 53
> #DNS, NTP, SNMPx2, DNSs
> ${ipfw} add allow udp from me to any 53,123,161
> ${ipfw} add allow udp from any 53,123,161 to me
> #VPN-connect - MPD5
> ${ipfw} add allow tcp from me 1723 to any keep-state
> # GRE for MPD5
> ${ipfw} add allow gre from any to any

У вас на сервере ВПН- клиент? Если не клиент, а сервер, то лучше указать дополнительно к keep-state опцию limit XX. Где ХХ - нужное вам число. Подробнее - в мане.

> #PROXY (прозрачный)
> ${ipfw} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80-83,8080-8088 out via
> ${inet}
> #FTP & HTTP from this server to world
> ${ipfw} add allow tcp from me to any 20,21,80,443 keep-state
> #Passive FTP backports
> ${ipfw} add allow tcp from me to any 49151-65535 keep-state

Вы написали правила с keep-state. А где правило check-state, которое будет фактически пропускать ваш keep-state-трафик в обратном направлении??

> #for apache
> ${ipfw} add allow tcp from any to ${inet_ip} 80 via ${inet}

А фильтрацию по флагам тут не делаете? Вот пример из Хендбука
# Allow in standard www function because I have apache server
$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2


>[оверквотинг удален]
> ${ipfw} add allow tcp from 10.0.0.0/24{1-231,240-254} to any 25,110,143,993,995 keep-state
> ${ipfw} add allow tcp from any to ${inet_ip} 25,110,143,993,995 via ${inet}
> #log
> ${ipfw} add deny log logamount 3000 all from any to any
> ${ipfw} add deny ip from any to any
> Уверен, что есть косяки и несостыковки, просьба подправить и направить на путь
> истинный. Так же с ходу не разобрался - как ввести некоторые
> ip из локалки, которым разрешено все и в инет бы они
> ходили не через прокси и торренты качать, если приспичит?))) Подскажите, пожалуйста!?
> Заранее спасибо!

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

P.S.: Пробуйте организовать per-interface acl, потом посмотрите как будет все просто и понятно.

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

4. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от evg89 (ok) on 13-Дек-12, 06:40 
#for apache
${ipfw} allow tcp from me to any dst-port 80,443 out via ${inet}
${ipfw} allow tcp from any 80,443 to me in via ${inet}
${ipfw} allow tcp from me 80,443 to any out via ${inet}
${ipfw} allow tcp from any to me dst-port 80,443 in via ${inet}

Вот такой пример мне кинули...

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

5. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от evg89 (ok) on 13-Дек-12, 07:28 
как этого и следовало ожидать и как вы и говорили сервер с таким рулесетом не пингуется, сам не пингует, не доступен по ssh и т.п.

Давайте попорядку с каких правил начать?

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

6. "ipfw + ядерный nat. конфиг скрипта."  +1 +/
Сообщение от evg89 (ok) on 16-Дек-12, 22:26 
вот, что у меня вышло (hn0 - смотрит в сеть, hn1 - в нет):

ipfw show
00100       0          0 check-state
00200   45012    8140672 allow ip from any to any via lo0
00300       0          0 deny ip from any to 127.0.0.0/8
00400       0          0 deny ip from 127.0.0.0/8 to any
00500       0          0 deny icmp from any to any frag
00600       0          0 deny ip from any to 10.0.0.0/24 in via hn1
00700       0          0 deny log logamount 1000 icmp from any to 255.255.255.255 in via hn1
00800       0          0 deny log logamount 1000 icmp from any to 255.255.255.255 out via hn1
00900  908367   55805652 fwd 127.0.0.1,3128 tcp from 10.0.0.0/24 to any dst-port 80-83,8080-8088
01000 1906640 1524770504 nat 123 ip from any to any via hn1
01100 1226094 1450435649 allow tcp from any to any established
01200       0          0 allow ip from 83.246.140.139 to any out xmit hn1
01300       0          0 allow igmp from any to 224.0.0.0/8 in via hn1
01400       0          0 allow igmp from any to 239.0.0.0/8 in via hn1

01500       0          0 allow udp from any to 239.0.0.0/8 in via hn1
01600       0          0 allow udp from any 53 to any via hn1
01700       0          0 allow udp from any to any dst-port 123 via hn1
01800       0          0 allow tcp from any to me dst-port 22 in via hn1
01900       0          0 allow tcp from any to me dst-port 80 in via hn1
02000       0          0 allow tcp from any to me dst-port 20,21,64000-64999 via hn1
02100       6        336 allow icmp from any to any icmptypes 0,8,11
02200   37849    4535099 allow ip from any to any via hn0
02300       0          0 deny log logamount 10000 ip from any to any
65535      75       4753 deny ip from any to any

Осталось добавить завтра правила для мпд. Сейчас вроде бы все работает, но.... Видно что натится, заворачивается на сквид, а кое-что зарубается... Но вот сижу я сейчас весь вечер по ssh из дома, а в правиле 1800 по нулям... Где ошибка в конфиге?

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

7. "ipfw + ядерный nat. конфиг скрипта."  +/
Сообщение от smart20 email(ok) on 21-Сен-13, 23:00 
> Осталось добавить завтра правила для мпд. Сейчас вроде бы все работает, но....
> Видно что натится, заворачивается на сквид, а кое-что зарубается... Но вот
> сижу я сейчас весь вечер по ssh из дома, а в
> правиле 1800 по нулям... Где ошибка в конфиге?

Такая я же беда и у меня, сижу весь день разбираюсь, почему мой ipfw не хочет пробрасывать пакеты идущие с 80 порта для squid, чтобы не делал счетчик всегда показывает ноль. Кто знает, в чем у меня трабл ?
--------------------------------------------------------
#!/bin/sh

ipfw -q flush
sysctl net.inet.ip.fw.autoinc_step=10
cmd="ipfw -q add"

pif="vr0"        # WAN interface
mylan="192.168.0.0/24"    # LAN net
oip="192.168.1.6"    # IP WAN interface
iif="fxp0"        #LAN interface

$cmd 0010 allow ip from any to any via lo0        #dlya petlevogo interface
$cmd allow ip from $mylan to any in via $iif    
$cmd allow ip from any to $mylan out via $iif

$cmd allow ip from any to any 53 in via $pif         # dlya DNS 53 port
$cmd allow ip from any 53 to $oip in via $pif         # dlya DNS 53 port

$cmd divert natd ip4 from $mylan to any out via $pif    #NATD
$cmd divert natd ip4 from to any to $oip in via $pif    #NATD

$cmd allow ip from $oip to any out via $pif        # vhodyash. otvet na interface WAN    
$cmd allow ip from any to $oip in via $pif
$cmd allow ip from $mylan to any in via $iif
$cmd allow ip from $mylan to any out via $pif
$cmd allow ip from any to $mylan in via $pif
$cmd allow ip from any to $mylan out via $iif

$cmd fwd 192.168.0.1,3128 tcp from any to any 80 out via fxp0            #vot eto glavnaya ZASADA, ne rabotaet forwarding!!!!
$cmd deny log all from any to any
-------------------------------------------------------------------------

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

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

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




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

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