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

IPFW - помогите разобраться

Добавлено: 2009-07-26 23:27:44
risk94
Есть шлюз, есть сервак в локалке ну и сама локалка.
Стоит следующая задача:

Необходимо пробросить с внешнего интерфейса порты ( http, ftp) на сервак в локалке, и также раздавать пользователям локалки интернет по впн.

Что зделано:
ВПН собран, вроде как функционирует, дает апишники и прочия, но не пускает в инет. На серваке в локалке работает http и ftp

Я думаю что у меня затыка с фаерволом, не осилю я его все никак.. :oops: :sorry:

Помогите разобраться. Каких данных не хватает - буду выкладывать. спасибо

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 0:44:28
paradox
опишии последовательность действий которую ты сделал что бы понять в чем проблема

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:12:25
risk94
колупаюсь уж недели две.
и tcpdumpом смотрел, и переделывал фаер, и конфиги мучал, да кучу всего пробовал. в логах ниче аномального не нашел.

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:31:17
paradox
pass all from any to any
divert natd all from any to any via сдесь имя интерфейса который идет через инет

natd незабудь настроить
и гетефей енабле поставь
усе
инет для юзерей с локалки будет

сделаей прийдешь отчитаешь
потом дальше будем смотреть

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:41:59
risk94
такое у меня уже есть. даже чуток побольше. вот мой фаер (ток не ржите-с)

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

oif="nve0"                                                                                                           
        onet="190.*.*.252"                                                                                                  
        omask="255.255.255.252"                                                                                              
        oip="190.*.*.254"                                                                                                   
                                                                                                                             
        iif="ste0"                                                                                                           
        inet="172.16.0.0"                                                                                                    
        imask="255.255.0.0"                                                                                                  
        iip="172.16.100.100"                                                                                                 
                                                                                                                             
        ${fwcmd} add check_state                                                                                             
                                                                                                                             
        ${fwcmd} add pipe 1 tcp from ${oip} to any via ${oif}                                                                
        ${fwcmd} add pipe 1 udp from ${oip} to any via ${oif}                                                                
        ${fwcmd} add pipe 1 ip from ${oip} to any via ${oif}                                                                 
        ${fwcmd} pipe 1 config bw 100Mbit/s
        
        # VPN PPTP                                                                                                           
        ${fwcmd} add allow tcp from ${iip} 1723 to any keep-state                                                            
        ${fwcmd} add allow tcp from any to ${iip} 1723                                                                       
        ${fwcmd} add allow gre from any to any                                                                               
                                                                                                                             
        ${fwcmd} add pipe 3040 all from not ${inet}:${imask} to 192.168.14.2                                                 
        ${fwcmd} add pipe 3041 all from 192.168.14.2 to not ${inet}:${imask}                                                 
        ${fwcmd} pipe 3040 config bw 250KBit/s                                                                               
        ${fwcmd} pipe 3041 config bw 150KBit/s                                                                               
                                                                                                                             
        # SSH                                                                                                                
        ${fwcmd} add allow tcp from any to me 22                                                                             
        ${fwcmd} add allow tcp from me 22 to any established
        
        # DNS                                                                                                                
        ${fwcmd} add allow udp from any to any domain                                                                        
        ${fwcmd} add allow udp from any domain to any                                                                        
                                                                                                                             
        # HTTP                                                                                                               
        ${fwcmd} add allow tcp from any to 172.16.0.221 80 in via ${oif} setup                                               
                                                                                                                             
        # NATD Rules                                                                                                         
        setup_loopback                                                                                                       
                                                                                                                             
        #${fwcmd} add deny tcp from ${inet}:${imask} to any http,https via ${oif}                                            
                                                                                                                             
        ${fwcmd} add deny tcp from any to any 135,136,137,138,139 via ${oif}                                                 
                                                                                                                             
        ${fwcmd} add divert natd all from any to ${oip} via ${oif}                                                           
        case ${natd_enable} in                                                                                               
        [Yy][Ee][Ss])                                                                                                        
                if [ -n "${natd_interface}" ]; then                                                                          
                   ${fwcmd} add divert natd all from ${inet}:${imask} to any via ${natd_interface}                           
                fi                                                                                                           
                ;;                                                                                                           
        esac

        # FTP                                                                                                                
        ${fwcmd} add allow all from any to 172.16.0.221 50000-50100 in via ${oif} setup                                      
        ${fwcmd} add allow tcp from any to me 20,21                                                                          
        ${fwcmd} add allow tcp from me 20,21 to any established                                                              
                                                                                                                             
                                                                                                                             
        ${fwcmd} add pass ICMP from any to any # Razreshit ping                                                              
        ${fwcmd} add deny icmp from any to any frag # Zapretit fragmentirovanie paketi                                       
                                                                                                                             
        ${fwcmd} add deny tcp from any to me 135,136,137,138,139 via ${oif}
                                                                                                                             
                                                                                                                             
        ${fwcmd} add pass tcp from any to any setup                                                                          
        ${fwcmd} add pass tcp from any to any established                                                                    
                                                                                                                             
        ${fwcmd} add deny all from any to me                                                                                 
        ${fwcmd} add deny all from any to any
        ;;
вот с этим вот у меня выполняется проброс на сервак в локалку,сайты выглядывают наружу, и с ними фтп. НО, фаер мне кажеться очень открытым (если не сказать больше) и не пашет впн. С таким фаером инет есть у вссех даже без коннекта к впн, что не есть хорошо.

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:48:46
paradox
убейте весь фаер
и оставте те два правила что я сказал
вам хватит

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:49:58
paradox
и поделитесь секретом
где вы вычитали или откуда взяли что фаер обязательно должен содержать как можно больше правил?
скажите пожалуста
я пойду прибью ту контору(или форум) где это советуют

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 9:56:13
risk94
те правила которые Вы мне советуете - они же просто откроют фаервол, так? Но ведь мне же нужно чтобы доступ к инету люди получали авторизировавшись у впн сервака. Или я чето опять недопонимаю? а пробросы портов на внутреннюю машинку??

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:02:27
paradox
правильно

а дальше по мере вашего понимания будем усложнять фаервол

что бы после

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

pass all from any to any
divert natd all from any to any via ng0
юзеры ходили токо через MPD который висит в локальной сети
и не выходили в нет через divert

разрешаем все через тунели ng* например

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

pass all from сетьтунеелей to сеть тунелей
и зпрещаем юзерам со своимиобычными айпи с локалки выходить в нет
мочим их айпи на инетовском интерфейсе

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

deny all from локалкасеть to any via ng0

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:14:47
risk94
Ок.
Вот текущие правила:

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

# ipfw show
00100      0        0 pipe 1 tcp from 190.*.*.254 to any via nve0
00100      0        0 allow ip from any to any via lo0
00200      0        0 pipe 1 udp from 190.*.*.254 to any via nve0
00200      0        0 deny ip from any to 127.0.0.0/8
00300      0        0 pipe 1 ip from 190.*.*.254 to any via nve0
00300      0        0 deny ip from 127.0.0.0/8 to any
00400     74     4808 allow tcp from any to me dst-port 22
00500     56    23648 allow tcp from me 22 to any established
00600      0        0 allow tcp from any to any
00700      0        0 divert 8668 ip from any to 190.*.*.254 via nve0
00800      0        0 divert 8668 ip from 172.16.0.0/16 to any via nve0
00900     48     4075 deny ip from any to any
65535 794151 77571663 deny ip from any to any
так?
Теперь вводим подсеть для тунелей?

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

        VPN_net="192.168.14.0"                                                                                               
        VPN_mask="255.255.255.0"
и добовляем правило после диверта

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

${fwcmd} add allow tcp from ${VPN_net}:${VPN_mask} to any
правильно?

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:27:01
paradox
рисуй схему

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:28:11
risk94
paradox писал(а):рисуй схему
не понял

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:37:01
hizel
после divert-ов allow надо давать, divert только преобразует адреса, но не пускает

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:43:23
risk94
походу я ваш язык не понимаю ((

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 10:45:20
risk94
у когонить есть фаер для примера? чтоб я смог почитать его?

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 11:19:08
paradox
hizel писал(а):после divert-ов allow надо давать, divert только преобразует адреса, но не пускает
тьфу сначла divert потом аллов


>risk94
зачем тебе чужие дебри
напиши свой
в чем затруднение?

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 11:23:56
risk94
да во всем. чето я теперь совсем запутался. Когда правила нужно ставить до диверта, а когда после??

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 11:32:25
paradox
divert
сюда вставляешь всяко разно
pass all
deny all

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 12:37:01
risk94
работает только с теми правилами что я писал. блин где я туплю??

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 13:08:32
paradox
ты просто не хочешь понять и разорбаться как работает фаер

есть еще такая опция log она логирует каждый пакет который проходит по такому log правилу
добавь его и изучай

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 13:49:45
risk94
ок, попробую.

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 14:03:14
risk94
Еще вопрос. Почему когда я указываю вот такие правила (Правила стоят после диверта):

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

00800 allow log logamount 100 tcp from any to any dst-port 80
00900 allow log logamount 100 tcp from any 80 to any established
то проброс происходит. А если

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

00800 allow log logamount 100 tcp from any to ${srvip} dst-port 80
00900 allow log logamount 100 tcp from ${srvip} 80 to any established
то проброса не происходит ??

В логах пишет accept

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 14:15:18
paradox
потому что нужно понимать что такое via
и где нужно перехвачивать пакет(на каком интерфейсе)

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 14:24:09
risk94
ага. курю дальше.

Re: IPFW - помогите разобраться

Добавлено: 2009-07-27 14:55:39
risk94
хм. перепробовал походу все варианты с via не просветлело ...