The OpenNET Project / Index page

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

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

"помогите советом с ipfw"  +/
Сообщение от rt1975 (ok) on 17-Дек-10, 17:37 
Есть офисный шлюз на freebsd, на котором крутится mysql, apache, squid. Задача - чтоб все сервисы в локалке были доступны, а извне был доступен только 22й порт, а все остальное закрыто. Накатал вот такой срипт  (ext и int - соответственно смотрят на прова и локалку)-

        localnet="192.168.1.0/24"
        extip="1.2.6.5"
        intip="192.168.1.1"
        extiface="rl0"
        intiface="vr0"

        ${fwcmd} add 09999 skipto 10000 all from any to any via ${extiface}
        ${fwcmd} add 09999 skipto 11000 all from any to any via ${intiface}
        ${fwcmd} add 09999 skipto 65000 ip from any to any

# ETXERNAL INTERFACE

        ${fwcmd} add 10110 deny ip from any to 192.168.0.0/16 in recv ${extiface}
        ${fwcmd} add 10110 deny ip from 192.168.0.0/16 to any in recv ${extiface}
        ${fwcmd} add 10110 deny ip from any to 172.16.0.0/12  in recv ${extiface}
        ${fwcmd} add 10110 deny ip from 172.16.0.0/12 to any  in recv ${extiface}
        ${fwcmd} add 10110 deny ip from any to 10.0.0.0/8     in recv ${extiface}
        ${fwcmd} add 10110 deny ip from 10.0.0.0/8 to any     in recv ${extiface}
        ${fwcmd} add 10110 deny ip from any to 169.254.0.0/16 in recv ${extiface}
        ${fwcmd} add 10110 deny ip from 169.254.0.0/16 to any in recv ${extiface}

        ${fwcmd} add 10120 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 recv ${extiface}

        ${fwcmd} add 10510 divert natd all from ${localnet} to any out xmit ${extiface}
        ${fwcmd} add 10520 divert natd all from any to ${extip} in recv ${extiface}

        ${fwcmd} add 10920 allow gre from ${extip} to any out xmit ${extiface}
        ${fwcmd} add 10920 allow gre from any to ${extip} in recv ${extiface}

        ${fwcmd} add 10930 check-state

        ${fwcmd} add 10940 allow tcp from me to any out xmit ${extiface} setup keep-state
        ${fwcmd} add 10940 allow udp from me to any out xmit ${extiface} keep-state
        ${fwcmd} add 10940 allow icmp from any to any via ${extiface} keep-state

        ${fwcmd} add 10950 allow tcp from any to ${extip} 22 in recv ${extiface} keep-state

        ${fwcmd} add 10990 allow all from any to ${localnet} via ${extiface}

        ${fwcmd} add 10998 deny log all from any to any via ${extiface}
        ${fwcmd} add 10999 skipto 65000 log ip from any to any

# INTERNAL INTERFACE 1

        ${fwcmd} add 11110 deny all from not 192.168.1.0/24 to any in recv ${intiface}

        ${fwcmd} add 11520 fwd 192.168.1.1,3128 tcp from 192.168.1.0/24 to any 21,23,70,80,210,280,488,591,777,2041,2042,5190,9080,9443 recv ${intiface}

        ${fwcmd} add 11910 allow all from any to 192.168.1.0/24 out xmit ${intiface}
        ${fwcmd} add 11910 allow all from 192.168.1.0/24 to any in recv ${intiface}
        ${fwcmd} add 11920 allow all from any to 255.255.255.255 via ${intiface}
        ${fwcmd} add 11920 allow all from 255.255.255.255 to any via ${intiface}

        ${fwcmd} add 11998 deny all from any to any via ${intiface}
        ${fwcmd} add 11999 skipto 65000 log ip from any to any

# DEFAULT RULE

        ${fwcmd} add 65000 pass log all from any to any
        ${fwcmd} фвв 65535 deny ip from any to any

При этом на тот же сквид можно законнектится телнетом на 3128 порт.. Где накосячил и что добавить нужно?

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

Оглавление

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


1. "помогите советом с ipfw"  +/
Сообщение от GD on 17-Дек-10, 23:29 
> Есть офисный шлюз на freebsd, на котором крутится mysql, apache, squid. Задача
> - чтоб все сервисы в локалке были доступны, а извне был
> доступен только 22й порт, а все остальное закрыто. Накатал вот такой
> срипт  (ext и int - соответственно смотрят на прова и
> локалку)-

[skip]

> При этом на тот же сквид можно законнектится телнетом на 3128 порт..
> Где накосячил и что добавить нужно?

а нельзя обойти аккуратным прописыванием listen-ов в ваших демонах?

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

2. "помогите советом с ipfw"  +/
Сообщение от Square (ok) on 18-Дек-10, 03:50 
Добавьте в natd опцию deny_incomings
Вообще конфиг перегружен ненужными правилами очень сильно ,а некоторые - вообще бессмысленны.. например правило за номером 10990...Фееричная дырка в безопасности...
Легальных пакетов попадающих под это правило быть не может.. о чем вы думали когда писали такое??

А уж об чем думали когда писали
add 09999 skipto 65000 ip from any to any
add 65000 pass log all from any to any
Одному Ходже Насреддину известно...

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

3. "помогите советом с ipfw"  +/
Сообщение от rt1975 (ok) on 18-Дек-10, 04:15 
> Добавьте в natd опцию deny_incomings
> Вообще конфиг перегружен ненужными правилами очень сильно ,а некоторые - вообще бессмысленны..
> например правило за номером 10990...Фееричная дырка в безопасности...
> Легальных пакетов попадающих под это правило быть не может.. о чем вы
> думали когда писали такое??
> А уж об чем думали когда писали
> add 09999 skipto 65000 ip from any to any
> add 65000 pass log all from any to any
> Одному Ходже Насреддину известно...

:) согласен, эти правила в общем-то бессмысленны.. За одним исключением - по этим правилам я мониторю каунты - если счетчик по ним отличается от значения 0 - значит есть повод почесать маковку.. Но при всем при этом систему они не нагружают, так как очередь до них не доходит.
ipfw -a list -
10990    0      0 allow ip from any to 192.168.1.0/24 via rl0
Зато ОЧЕНЬ помогли при написании и мониторинге всего этого.. да так и остались висеть, как только все отточу - погрохаю нафик. Кстати - по непонятной мне причине все заработало, причем похоже после ребута. С чем связано - непонятно..

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

4. "помогите советом с ipfw"  +/
Сообщение от rt1975 (ok) on 18-Дек-10, 04:18 
ЗЫ: Большое спасибо за отклик на просьбу о помощи. Буду рад советам по оптимизации всего этого, тем более, что сейчас нужно будет поднимать впн для доступа из вне в локальную сеть..
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "помогите советом с ipfw"  +/
Сообщение от rr (ok) on 18-Дек-10, 08:25 
> Добавьте в natd опцию deny_incomings

Не будет ли эта опция причиной, что подключиться к боксу снаружи к внешнему адресу будет невозможно?

> Вообще конфиг перегружен ненужными правилами очень сильно ,а некоторые - вообще бессмысленны..
> например правило за номером 10990...Фееричная дырка в безопасности...

Рассмотрим соединение общий случай без прозрачного проксирования.
Клиент из сети 192.168... начинает tcp подключение к внешнему адресу.

пакеты из внутренней сети проходят через внутренний интерфейс и попадают под правило
${fwcmd} add 11910 allow all from 192.168.1.0/24 to any in recv ${intiface}

далее пакет передается на внешний интерфейс и попадает под правило
${fwcmd} add 10510 divert natd all from ${localnet} to any out xmit ${extiface}
возвращается в цепочку правил и попадает под правило
${fwcmd} add 10940 allow tcp from me to any out xmit ${extiface} setup keep-state

внешний хост отвечает
входящие пакеты от внешнего хоста попадают под правило
${fwcmd} add 10520 divert natd all from any to ${extip} in recv ${extiface}
адрес назначения меняется на адрес 192.168..... и пакет возвращается в цепочку правил
сейчас уже на внешнем интерфейсе проверяется входящий пакет с адресом назначения 192.168....  какое правило пропустит этот пакет на внешнем интерфейсе?

под созданное динамическое правило от
${fwcmd} add 10940 allow tcp from me to any out xmit ${extiface} setup keep-state
пакет не подпадает так как указан адрес me, адрес внешнего интерфейса, надо же проверять адрес 192.168. .....
а попадет пакет под правило
${fwcmd} add 10990 allow all from any to ${localnet} via ${extiface}

В данном случае это правило нужно.
В общем случает правило нужно изменить для одностороннего прохождения пакетов.
Наличие этого правило зависит от других правил.

> Легальных пакетов попадающих под это правило быть не может.. о чем вы
> думали когда писали такое??
> А уж об чем думали когда писали
> add 09999 skipto 65000 ip from any to any
> add 65000 pass log all from any to any
> Одному Ходже Насреддину известно...

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

6. "помогите советом с ipfw"  +/
Сообщение от rt1975 (ok) on 22-Дек-10, 12:07 
> В общем случает правило нужно изменить для одностороннего прохождения пакетов.

Учел этот момент, спасибо.

>> Одному Ходже Насреддину известно...

Я же писал - это для тестов :) Итоговый вариант пока вот такой:


        localnet="192.168.1.0/24"
        vpnnet="192.168.0.0/24"
        extip="XX.XX.XX.XX"
        intip="192.168.1.1"
        vpnip="192.168.0.1"
        extiface="rl0"
        intiface="vr0"
        vpniface="ng0" – добавился VPN интерфейс, через MPD5 для доступа к localnet извне
        bcast="255.255.255.255"


        ${fwcmd} table 1 flush – для bruteblock
        ${fwcmd} table 2 flush
        ${fwcmd} table 2 add 10.0.0.0/8
        ${fwcmd} table 2 add 169.254.0.0/16
        ${fwcmd} table 2 add 172.16.0.0/12
        ${fwcmd} table 2 add 192.168.0.0/12
        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

        ${fwcmd} add 09999 skipto 10000 all from any to any via ${extiface}
        ${fwcmd} add 09999 skipto 11000 all from any to any via ${intiface}
        ${fwcmd} add 09999 skipto 12000 all from any to any via ${vpniface}
# ETXERNAL INTERFACE
        ${fwcmd} add 10110 deny ip from any to table\(2\) in recv ${extiface}
        ${fwcmd} add 10110 deny ip from table\(2\) to any in recv ${extiface}
        ${fwcmd} add 10110 deny ip from table\(1\) to any in recv ${extiface}

        ${fwcmd} add 10120 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 recv ${extiface}

        ${fwcmd} add 10510 divert natd all from ${localnet} to any out xmit ${extiface}
        ${fwcmd} add 10530 divert natd all from any to ${extip} in recv ${extiface}

        ${fwcmd} add 10920 allow gre from ${extip} to any out xmit ${extiface}
        ${fwcmd} add 10920 allow gre from any to ${extip} in recv ${extiface}

        ${fwcmd} add 10930 check-state

        ${fwcmd} add 10940 allow tcp from me to any out xmit ${extiface} setup keep-state
        ${fwcmd} add 10940 allow udp from me to any out xmit ${extiface} keep-state
        ${fwcmd} add 10940 allow icmp from any to any via ${extiface} keep-state

        ${fwcmd} add 10950 allow tcp from any to ${extip} 22 in recv ${extiface} keep-state
        ${fwcmd} add 10960 allow tcp from any to ${extip} 1723 in recv ${extiface} keep-state
        ${fwcmd} add 10990 allow all from any to ${localnet} out xmit ${extiface}
        ${fwcmd} add 10990 allow all from any to ${vpnnet} out xmit ${extiface}

        ${fwcmd} add 10998 deny log all from any to any via ${extiface}
# INTERNAL INTERFACE
        ${fwcmd} add 11110 deny all from not ${localnet} to any in recv ${intiface}

        ${fwcmd} add 11520 fwd ${intip},3128 tcp from ${localnet} to any 23,70,80,210,280,488,591,777,2041,2042,5190,9080,9443 recv ${intiface}

        ${fwcmd} add 11910 allow all from any to ${localnet} out xmit ${intiface}
        ${fwcmd} add 11910 allow all from ${localnet} to any in recv ${intiface}
        ${fwcmd} add 11920 allow all from any to ${bcast} via ${intiface}
        ${fwcmd} add 11920 allow all from ${bcast} to any via ${intiface}

        ${fwcmd} add 11998 deny log all from any to any via ${intiface}

# VPN INTERFACE

        ${fwcmd} add 13110 deny all from not ${vpnnet} to any in recv ${vpniface}

        ${fwcmd} add 13910 allow all from any to ${vpnnet} out xmit ${vpniface}
        ${fwcmd} add 13910 allow all from ${vpnnet} to any in recv ${vpniface}
        ${fwcmd} add 13920 allow all from any to ${bcast} via ${vpniface}
        ${fwcmd} add 13920 allow all from ${bcast} to any via ${vpniface}

        ${fwcmd} add 13998 deny log all from any to any via ${vpniface}
# DEFAULT RULE
       ${fwcmd} add 65535 deny log all from any to any

И есть еще вопрос – необходимо, чтоб у клиента VPN при подключении был доступ к интернет. Как правильно это прописать? Добавить правило
        ${fwcmd} add 10520 divert natd all from ${vpnnet} to any out xmit ${extiface} ?

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

7. "помогите советом с ipfw"  +/
Сообщение от rt1975 (ok) on 22-Дек-10, 13:49 
${fwcmd} add 10990 allow all from any to ${localnet} via ${extiface}
${fwcmd} add 10990 allow all from any to ${vpnnet} via ${extiface}

Эти строки оставил все-таки в изначальном варианте, так как с out не учитывается приходящий пакет из ната. Тем более, что тут остаются только честные пакеты, все левое отсеивается правилом 10110.

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

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

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




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

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