Помогите с настройкой ipfw.

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Помогите с настройкой ipfw.

Сообщение celarent_Israel »

Здраствуйте дорогие друзья. :) Вот появилась проблемка с настройкой фареволла, помогите плиз разобраться.
Имеем FreeBSD 6.1, 2 сетевухи (sk0 и rl0) - комп не является раутером или чем-то в этом роде. Подключение к инету через раутер 192.168.123.254 (sk0 - 192.168.123.0/24). rl0 (10.0.0.0/24) - домашняя сетка.
Правила из rc.firewall

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

[Cc][Ll][Ii][Ee][Nn][Tt])
        ############
        # This is a prototype setup that will protect your system somewhat
        # against people from outside your own network.
        ############

        # set these to your network and netmask and ip
        net1="192.168.123.0"
        net2="10.0.0.0"
        mask="255.255.255.0"
        ip1="192.168.123.1"
        ip2="10.0.0.1"
        if1="sk0"
        if2="rl0"

        setup_loopback

        # Deny any traffic from 10.x.x.x to 192.x.x.x
        ${fwcmd} add deny all from ${net1}:${mask} to ${net2}:${mask}
        ${fwcmd} add deny all from ${net2}:${mask} to ${net1}:${mask}

        # Allow any traffic in the home net
        ${fwcmd} add pass all from ${ip2} to ${net2}:${mask} via ${if2} out
        ${fwcmd} add pass all from ${net2}:${mask} to ${ip2} via ${if2} in

        # Allow any traffic out for internet.
        ${fwcmd} add pass all from ${ip1} to any via ${if1} out

        # Deny IP fragments to pass through
        ${fwcmd} add deny all from any to any via ${if1} frag
        ${fwcmd} add deny icmp from any to any via ${if1} icmptype 8

        # Allow setup of SMTP connections
        ${fwcmd} add pass tcp from any 25 to ${ip1} via ${if1} in

        # Allow setup of POP3 connections
        ${fwcmd} add pass tcp from any 110 to ${ip1} via ${if1} in

        # Allow FTP connections
        ${fwcmd} add pass tcp from any 20 to ${ip1} via ${if1} in
        ${fwcmd} add pass tcp from any 21 to ${ip1} via ${if1} in

        # Allow DNS queries out in the world
        ${fwcmd} add pass udp from any 53 to ${ip1} via ${if1} in

        # Allow NTP queries out in the world
        ${fwcmd} add pass udp from any 123 to ${ip1} via ${if1} in

        # Allow HTTP & HTTPS connections
        ${fwcmd} add pass tcp from any 80 to ${ip1} via ${if1} in
        ${fwcmd} add pass tcp from any 443 to ${ip1} via ${if1} in

        # Allow ICQ connections
        ${fwcmd} add pass all from any 5190 to ${ip1} via ${if1} in

        # Allow 4662 4672 4665 imcoming connections
        ${fwcmd} add pass tcp from any to ${ip1} 4662 via ${if1} in
        ${fwcmd} add pass tcp from any to ${ip1} 4665 via ${if1} in
        ${fwcmd} add pass udp from any to ${ip1} 4672 via ${if1} in

        # Everything else is denied by default, unless the
        # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
        # config file.
       ;;


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

darkstone% sudo ipfw list
Password:
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 deny ip from 192.168.123.0/24 to 10.0.0.0/24
00500 deny ip from 10.0.0.0/24 to 192.168.123.0/24
00600 allow ip from 10.0.0.1 to 10.0.0.0/24 via rl0 out
00700 allow ip from 10.0.0.0/24 to 10.0.0.1 via rl0 in
00800 allow ip from 192.168.123.1 to any via sk0 out
00900 deny ip from any to any via sk0 frag
01000 deny icmp from any to any via sk0 icmptypes 8
01100 allow tcp from any 25 to 192.168.123.1 via sk0 in
01200 allow tcp from any 110 to 192.168.123.1 via sk0 in
01300 allow tcp from any 20 to 192.168.123.1 via sk0 in
01400 allow tcp from any 21 to 192.168.123.1 via sk0 in
01500 allow udp from any 53 to 192.168.123.1 via sk0 in
01600 allow udp from any 123 to 192.168.123.1 via sk0 in
01700 allow tcp from any 80 to 192.168.123.1 via sk0 in
01800 allow tcp from any 443 to 192.168.123.1 via sk0 in
01900 allow ip from any 5190 to 192.168.123.1 via sk0 in
02000 allow tcp from any to 192.168.123.1 dst-port 4662 via sk0 in
02100 allow tcp from any to 192.168.123.1 dst-port 4665 via sk0 in
02200 allow udp from any to 192.168.123.1 dst-port 4672 via sk0 in
65535 deny ip from any to any


На интерфейсе rl0 - всё ок.
На sk0 работает всё кроме осла и ftp. Никак не пойму в чём дело. :(
Тяжело быть роботом...
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

Ауууу, люди вы где? :huh:
Тяжело быть роботом...
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

01100 allow tcp from any 25 to 192.168.123.1 via sk0 in
01200 allow tcp from any 110 to 192.168.123.1 via sk0 in
01300 allow tcp from any 20 to 192.168.123.1 via sk0 in
01400 allow tcp from any 21 to 192.168.123.1 via sk0 in
01500 allow udp from any 53 to 192.168.123.1 via sk0 in
01600 allow udp from any 123 to 192.168.123.1 via sk0 in
01700 allow tcp from any 80 to 192.168.123.1 via sk0 in
01800 allow tcp from any 443 to 192.168.123.1 via sk0 in
01900 allow ip from any 5190 to 192.168.123.1 via sk0 in


В этих правилах описано, что разрешен трафик от любого хоста с порта 25, например, к хосту 192.168.123.1 и т.д. Что под этим подразумевалось? Например отправка почты по протоколу SMTP с хоста 192.169... на любой другой должна выглядеть так:

allow tcp from 192.168.123.1 25 to any out via sk0

При этом мы еще должны разрешить ответный трафик таким правилом:

(1) allow tcp from any to 192.168.123.1 25 in via sk0

Если Вы хотите использовать правило

00800 allow ip from 192.168.123.1 to any via sk0 out

то вышеотквоченные строчки Вам надо привести к виду (1).
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Помогите с настройкой ipfw.

Сообщение Maestro »

Не стал открывать новую тему. Граждане - помогите чем могите!!! Не могу разобраться, почему мой роутер не выпускает меня по http. Ситуация следующая. Есть шлюз на freebsd - за ним стоит прокси сервер Керио на винде2003сервер, настроен на 3128 например. Создаю правила, которое все запрещает - 65535, первое антиспуфинг, перекрываю RFC1918, multicast, net-test и т.д. по умолчанию в simple.

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

        # Allow anything on the internal net
        ${fwcmd} add allow all from any to any via ${iif}

        # Allow anything outbound from this net
        ${fwcmd} add allow all from ${onet}:${omask} to any out via ${oif}

        # Allow IP fragments to pass through
        ${fwcmd} add pass all from any to any frag

        # Разрешить ICMP пакеты по типам в обе стороны
        ${fwcmd} add allow icmp from any to any icmptypes 0,3,4,8,11

        # Разрешить DNS для локального сервера
          ${fwcmd} add allow udp from (адрес ДНС прова 87.224.197.1) 53 to any
          ${fwcmd} add allow udp from any to 87.224.197.1 53
          ${fwcmd} add allow udp from 87.224.213.1 53 to any
          ${fwcmd} add allow udp from any to 87.224.213.1 53

и тут загвоздка
создаю правило для 80 и 443 порта

${fwcmd} add allow tcp from (адрес прокси, пусть будет 172.16.0.20) 1025-65535 to any 80,443
${fwcmd} add allow tcp from any 80,443 to 172.16.0.20 1025-65535 established

и... не работает (((

${fwcmd} add allow tcp from any to any 80,443
${fwcmd} add allow tcp from any 80,443 to any
работает тока так - наэкспериментировался до опупения . :wacko:

Может стоит просто в тупую настроить портмапинг??? Тогда я не совсем понимаю, нафик мне файрвол (

Вывод tcpdump доказывает что правила
${fwcmd} add allow tcp from (адрес прокси, пусть будет 172.16.0.20) 1025-65535 to any 80,443
${fwcmd} add allow tcp from any 80,443 to 172.16.0.20 1025-65535 established
корректны

Хотя не совсем... пишет

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

win 65535 <mss 1460 nop.nop.sackOK>
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

Кстати, пипл, поделитесь рбочим скриптом ipfw для примера, так сказать. И если можно, разъясните в чём прикол динпмических правил (там setup, established всяких). Никак не пойму как енто работает. :unsure:
Тяжело быть роботом...
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Помогите с настройкой ipfw.

Сообщение Maestro »

Setup И Esteblished - не динамические праила... причем явно не динамическме. Динамические правила создаются совершенно по другому. Keep-state, check-state - че то типа этого. Многие говорят что это не нежно. Но вумные дядьки, те, кто писал фрю - пишут, что файрвол - нормальный, должен иметь умотаться правил, и способен на такую гибкость, какую ни одна форточка предложить не может Вот так!
дайте денег на обновление портов :)
Спасибо сказали:
Grass_snake
Сообщения: 21

Re: Помогите с настройкой ipfw.

Сообщение Grass_snake »

celarent_Israel писал(а):
10.11.2006 22:17
Здраствуйте дорогие друзья. :) Вот появилась проблемка с настройкой фареволла, помогите плиз разобраться.

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

65535 deny ip from any to any


Для начала перед последним правилом я бы вписал бы следующее:

${fwcmd} add 65534 deny log all from any to any // Vsem_NAH!

И потом внимательно посмотрел бы на результат в /var/log/security

На интерфейсе rl0 - всё ок.
На sk0 работает всё кроме осла и ftp. Никак не пойму в чём дело. :(


Для работы FTP, как обычно, требуются стандартные 20-й, 21-й порт и какой-нибудь из диапазона 1024-65535, назначаемы клиентом или сервером (активное или пассивное соединение мы выбрали). Может, в этом проблема?
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

В этом, а как правило то правильно написать для этого?
Тяжело быть роботом...
Спасибо сказали:
Grass_snake
Сообщения: 21

Re: Помогите с настройкой ipfw.

Сообщение Grass_snake »

celarent_Israel писал(а):
28.11.2006 13:06
В этом, а как правило то правильно написать для этого?


Я не очень удачно ответил в прошлый раз. В квотинг попало это:

---------------------------------------------------------------------------------
Для начала перед последним правилом я бы вписал бы следующее:

${fwcmd} add 65534 deny log all from any to any // Vsem_NAH!

И потом внимательно посмотрел бы на результат в /var/log/security
---------------------------------------------------------------------------------

Что видно в вышеуказанном логе при попытках соединиться с удалённым FTP?
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

Показывает что соединяется с хостом бла.бла.бла.бла:21 но при переходе в PASV затыкается.
Тяжело быть роботом...
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

Протокол FTP использует два соединения. По одному передаются команды, по второму данные. Есть еще два типа соединения - пассивное и активное, которые определяют кто устанавливает соединение и какие порты используются. Пусть у нас будет активное соединение. При нем клиент устанавливает соединение с непривилегированного порта (>1023) на порт 21 сервера. По этому соединению передаются команды. Потом сервер открывает соединение с 20 порта на другой непривилегированный порт клиента, по которому передаются данные. Соответственно для клиента будет следующий набор правил:

# управляющее соединение
add pass tcp from me to any 21 out via ${ext_if}
add pass tcp from any 21 to me in via ${ext_if}

# канал данных
add pass tcp from any 20 to me in via ${ext_if}
add pass tcp from me to any 20 out via ${ext_if}

Где ${ext_if} - имя внешнего интерфейса, например sk0. При пассивном соединении клиент устанавливает оба соединения к серверу, первое как обычно на 21 порт, а второе на непривилегированный порт сервера. На какой именно порт сообщает сервер по управляющему каналу.
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

При пассивном соединении клиент устанавливает оба соединения к серверу, первое как обычно на 21 порт, а второе на непривилегированный порт сервера. На какой именно порт сообщает сервер по управляющему каналу.


А как это правильно прописать правилом? Ведь порты каждый сервер использует разные.
Тяжело быть роботом...
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

pass tcp from me to any 21 out via ${ext_if}
pass tcp from me to any 1023-65535 out via ${ext_if}

и ответный трафик не забыть.
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

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


${fwcmd} add pass all from ${ip1} to any via ${if1} out
${fwcmd} add pass tcp from any 20 to ${ip1} via ${if1} in
${fwcmd} add pass tcp from any 21 to ${ip1} via ${if1} in

? :huh:
Тяжело быть роботом...
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

celarent_Israel писал(а):
30.11.2006 23:31


Переводим Ваши правила на русский язык.

${fwcmd} add pass all from ${ip1} to any via ${if1} out

Разрешить весь исходящий трафик от ip1 ко всем через if1.

${fwcmd} add pass tcp from any 20 to ${ip1} via ${if1} in

Разрешить tcp с любого узла с порта 20 к адресу ip1 входящий через if1.

${fwcmd} add pass tcp from any 21 to ${ip1} via ${if1} in

Разрешить tcp с любого узла с порта 21 к адресу ip1 входящий через if1.

Теперь берем листочек бумаги, внимательно читаем то, что я написал выше про протокол FTP, рисуем 2 прямоугольника (кружка, что-то другое). Один наш комп, второй сервер. Рисуем линии, обозначающие поток управления и поток данных. Стрелочками указываем направление установления соединения. Не забываем то же самое сделать для ответного трафика. У нас получаются векторы. В начале и конце каждого вектора рисуем цифру, обозначающую порт. По полученному рисунку пишем правила для файерволла. Это не издевательство. Такие рисунки здорово помогают понять что происходит и такие рисунки есть в любой книжке или учебнике по построению брандмауэров.
Спасибо сказали:
Аватара пользователя
celarent_Israel
Сообщения: 164
Статус: Теперь я робот...
ОС: Debian 4.0 Lenny, WinXP

Re: Помогите с настройкой ipfw.

Сообщение celarent_Israel »

Вот, сделал новый конфиг фареволла. Прошу оценить, так сказать. Что правильно, что нет. Может надо добавить что-то. :rolleyes:

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

[Cc][Ll][Ii][Ee][Nn][Tt])
    ############
    # This is a prototype setup that will protect your system somewhat
    # against people from outside your own network.
    ############

    # set these to your network and netmask and ip
    ifi="sk0"
    ifh="rl0"
    inet="192.168.123.0"
    hnet="10.0.0.0"
    mask="255.255.255.0"
    dns1="194.90.1.5"
    dns2="212.143.212.143"
    ipi="192.168.123.1"
    iph="10.0.0.1"

    setup_loopback

    # Deny traffic between inet & hnet
    ${fwcmd} add deny ip from ${inet}:${mask} to ${hnet}:${mask}
    ${fwcmd} add deny ip from ${hnet}:${mask} to ${inet}:${mask}

    # Deny fragmented packets in hnet
    ${fwcmd} add deny ip from ${iph} to ${hnet}:${mask} via ${ifh} out frag
    ${fwcmd} add deny ip from ${hnet}:${mask} to ${iph} via ${ifh} in frag

    # Allow traffic in hnet
    ${fwcmd} add pass ip from ${iph} to ${hnet}:${mask} via ${ifh} out
    ${fwcmd} add pass ip from ${hnet}:${mask} to ${iph} via ${ifh} in

    ${fwcmd} check-state

    # Deny fragmented packets in inet
    ${fwcmd} add deny ip from ${ipi} to any via ${ifi} out frag
    ${fwcmd} add deny ip from any to ${ipi} via ${ifi} in frag

    # Rules for icmp packets in inet
    ${fwcmd} add deny icmp from any to ${ipi} via ${ifi} in frag
    ${fwcmd} add deny icmp from any to ${ipi} via ${ifi} in icmptype 0 4 5 8 10 13 15 17
    ${fwcmd} add pass icmp from ${ipi} to any via ${ifi} out
    ${fwcmd} add pass icmp from any to ${ipi} via ${ifi} in

    # Allow DNS
    ${fwcmd} add pass udp from ${ipi} to ${dns1} 53 via ${ifi} keep-state
    ${fwcmd} add pass udp from ${ipi} to ${dns2} 53 via ${ifi} keep-state

    # Allow NTP
    ${fwcmd} add pass udp from ${ipi} to any 123 via ${ifi} keep-state

    # Allow HTTP/HTTPS
    ${fwcmd} add pass tcp from ${ipi} to any 80 via ${ifi} out
    ${fwcmd} add pass tcp from any 80 to ${ipi} via ${ifi} in
    ${fwcmd} add pass tcp from ${ipi} to any 443 via ${ifi} out
    ${fwcmd} add pass tcp from any 443 to ${ipi} via ${ifi} in

    # Allow POP3
    ${fwcmd} add pass tcp from ${ipi} 110 to any via ${ifi} out
    ${fwcmd} add pass tcp from any to ${ipi} 110 via ${ifi} in

    # Allow SMTP
    ${fwcmd} add pass tcp from ${ipi} 25 to any via ${ifi} out
    ${fwcmd} add pass tcp from any to ${ipi} 25 via ${ifi} in

    # Allow ICQ
    ${fwcmd} add pass tcp from ${ipi} to any 5190 via ${ifi} out
    ${fwcmd} add pass tcp from any 5190 to ${ipi} via ${ifi} in

    # Allow FTP
    ${fwcmd} add pass tcp from ${ipi} to any 20 via ${ifi} out
    ${fwcmd} add pass tcp from any 20 to ${ipi} via ${ifi} in
    ${fwcmd} add pass tcp from ${ipi} to any 21 via ${ifi} out
    ${fwcmd} add pass tcp from any 21 to ${ipi} via ${ifi} in
    ${fwcmd} add pass tcp from ${ipi} to any keep-state

    # Allow TeamSpeak to Alex`s server
    ${fwcmd} add pass tcp from ${ipi} to 84.95.244.160 8111 via ${ifi} out
    ${fwcmd} add pass tcp from 84.95.244.160 8111 to ${ipi} via ${ifi} in

    # Log all denied connections
    ${fwcmd} add deny log ip from any to any via ${ifi}

    # Everything else is denied by default, unless the
    # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
    # config file.
;;


Кстати, ещё один вопросик - какие порты использует cvsup (client/server)? :unsure:
Тяжело быть роботом...
Спасибо сказали:
victron
Сообщения: 23

Re: Помогите с настройкой ipfw.

Сообщение victron »

А почему б не использовать для всего tcp-трафика одно правило
allow tcp from me to any via ${ifi} keep-state . Чем меньше правил тем меньше нагрузка на систему. Действие keep-state можно посмотреть #ipfw -ad list .
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

victron писал(а):
16.01.2007 23:56
А почему б не использовать для всего tcp-трафика одно правило

Чтобы ненужные процессы в сеть не лезли.

allow tcp from me to any via ${ifi} keep-state

Такие правила лучше писать в полной нотации, что бы пакеты не проходили через fw лишний раз. Например так:
allow tcp from me to any setup out via ${ifi} keep-state
Спасибо сказали:
Igor Yakimchuk
Сообщения: 110
ОС: FreeBSD

Re: Помогите с настройкой ipfw.

Сообщение Igor Yakimchuk »

celarent_Israel писал(а):
02.12.2006 17:46
Кстати, ещё один вопросик - какие порты использует cvsup (client/server)? :unsure:

если мне память не изменяет то 5999
Спасибо сказали:
novenkii
Сообщения: 3

Re: Помогите с настройкой ipfw.

Сообщение novenkii »

помогите с настройкой IPFW(правила приведены ниже). Стуация такая: нужен выход на сайт по протоколу https, в правилах прописан доступ на порт 443 разрешен обмен пакетами с сервером, но Fierwall блокирует выход на сервер. Если его отключть, то открывается доступ и остается открытым при повторном запуске IPFW, но на следующий день снова блокируется.В строке 1 прописан диапазон своей подсети.Если эту строчку убрать, доступ не блокируется.Уибрать ее нельзя, блокируется доступ к этой машине для других компов подсети.
В чем прикол?

#!/bin/sh
#

IPFW="./ipfw"

$IPFW -f flush

$IPFW add pass all from any to any via lo0

$IPFW 1 add pass all from XX.XX.XX.XX/XX to any via eth0

$IPFW 2 add pass all from XX.XX.XX.XX to any in via eth0
$IPFW 3 add pass all from any to XX.XX.XX.XX out via eth0
$IPFW 4 add pass all from XX.XX.XX.XX to any in via eth0

$IPFW 5 add pass all from any to XX.XX.XX.XX 443 out via eth0
$IPFW 6 add pass all from XX.XX.XX.XX 443 to any in via eth0
$IPFW 7 add pass all from any to XX.XX.XX.XX 443 out via eth0
$IPFW 8 add pass all from XX.XX.XX.XX 443 to any in via eth0

$IPFW 9 add pass all from XX.XX.XX.XX to any via eth0

$IPFW 10 add pass all from XX.XX.XX.XX/XX to any via eth0

$IPFW add 02500 allow tcp from any to me XX in via eth0
$IPFW add 02500 allow tcp from any to me XX in via eth0
$IPFW add 02500 allow tcp from any to me XX in via eth0
$IPFW add 02500 allow tcp from any to me 443 in via eth0
$IPFW add pass ip from me to any out keep-state via eth0

$IPFW add 65534 deny all from any to any
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

novenkii писал(а):
22.02.2007 06:26
помогите с настройкой IPFW


Если хотите, что бы Вам помогли, приводите реальный конфиг. По Вашим ХХХ ничего не понятно, телепатов нет.
Спасибо сказали:
Аватара пользователя
killdos
Сообщения: 187
Статус: Cклеротик
ОС: FreeBSD, NetBSD, винда

Re: Помогите с настройкой ipfw.

Сообщение killdos »

#!/bin/sh
#
IPFW="./ipfw"
$IPFW -f flush
$IPFW add pass all from any to any via lo0
$IPFW add deny icmp from any to any frag
$IPFW add pass icmp from any to any
$IPFW add pass all from any to any established
$IPFW 1 add pass all from XX.XX.XX.XX/XX to any via eth0 setup keep-state
$IPFW 3 add pass tcp from any to XX.XX.XX.XX 443 out via eth0 setup
$IPFW 5 add pass udp from any to XX.XX.XX.XX 53 out via eth0 keep-state
и так далее.....

мысль ясна?
"UNIX is simple and coherent..." (c) Dennis Ritchie, "GNU's Not UNIX" (c) Richard Stallman
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

Пардон, мне не ясна :)

#!/bin/sh
#
IPFW="/sbin/ipfw"
$IPFW -f flush
$IPFW add pass all from any to any via lo0
$IPFW add deny icmp from any to any frag
$IPFW add pass icmp from any to any
$IPFW add deny all from any to any established
$IPFW add check-state
$IPFW add pass all from XX.XX.XX.XX/XX to any via eth0 setup keep-state
$IPFW add pass tcp from any to XX.XX.XX.XX 443 in via eth0 setup keep-state
$IPFW add pass udp from any to XX.XX.XX.XX 53 in via eth0 keep-state

Это если я правильно понял автора, но это гадание. Без реальных адресов, вместо ХХХ понять сложно, т.к. могут быть варианты. Это отдельный хост с одним интерфейсом? Это гейт с несколькими интерфейсами? Если не гейт, то в чем сокральный смысл следующей строки?

$IPFW add pass all from XX.XX.XX.XX/XX to any via eth0 setup keep-state
Спасибо сказали:
Аватара пользователя
killdos
Сообщения: 187
Статус: Cклеротик
ОС: FreeBSD, NetBSD, винда

Re: Помогите с настройкой ipfw.

Сообщение killdos »

для того чтобы появился доступ к удалённому серверу по https, не важно гейт у автора, или одна машина, достаточно двух правил:

pass ip from any to any established
pass tcp from any to any 443 setup

это при условии что что уже настроен нат/прокси (если это гейт) и есть доступ к DNS
"UNIX is simple and coherent..." (c) Dennis Ritchie, "GNU's Not UNIX" (c) Richard Stallman
Спасибо сказали:
novenkii
Сообщения: 3

Re: Помогите с настройкой ipfw.

Сообщение novenkii »

привожу пример с адресами:
#!/bin/sh
#

IPFW="./ipfw"

$IPFW -f flush

$IPFW add pass all from any to any via lo0



# своя сеть
$IPFW add pass all from 82.82.5.0/28 to any via eth0

#
$IPFW add pass all from any to 195.51.195.51 out via eth0
$IPFW add pass all from 195.51.195.51 to any in via eth0

#https
$IPFW add pass all from any to 212.82.212.82 443 out via eth0
$IPFW add pass all from 212.82.212.82 443 to any in via eth0
$IPFW add pass all from any to 212.81.212.81 443 out via eth0
$IPFW add pass all from 212.81.212.81 443 to any in via eth0

# Pos-terminal
$IPFW add pass all from any to 212.86.212.86 out via eth0
$IPFW add pass all from 212.86.212.86 to any in via eth0

# шлюз
# $IPFW add pass all from 212.0.212.0 to any via eth0

$IPFW add 02500 allow tcp from any to me 4800 in via eth0
$IPFW add 02500 allow tcp from any to me 7777 in via eth0
$IPFW add 02500 allow tcp from any to me 443 in via eth0
$IPFW add 02500 allow tcp from me 443 to any out eth0
$IPFW add pass ip from me to any out keep-state via eth0

$IPFW add allow icmp from any to any via eth0 icmptype 0
$IPFW add allow icmp from any to any via eth0 icmptype 3
$IPFW add allow icmp from any to any via eth0 icmptype 5
$IPFW add allow icmp from any to any via eth0 icmptype 8
$IPFW add allow icmp from any to any via eth0 icmptype 11
$IPFW add deny all from any to any
$IPFW add 65534 deny all from any to any


именно своя сеть блокирует выход на https
важен ли порядок правил, если они не пронумерованы?
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Помогите с настройкой ipfw.

Сообщение Maestro »

GeoF писал(а):
23.02.2007 11:34
Пардон, мне не ясна :)

#!/bin/sh
#
IPFW="/sbin/ipfw"
$IPFW -f flush
$IPFW add pass all from any to any via lo0
$IPFW add deny icmp from any to any frag
$IPFW add pass icmp from any to any
$IPFW add deny all from any to any established
$IPFW add check-state
$IPFW add pass all from XX.XX.XX.XX/XX to any via eth0 setup keep-state
$IPFW add pass tcp from any to XX.XX.XX.XX 443 in via eth0 setup keep-state
$IPFW add pass udp from any to XX.XX.XX.XX 53 in via eth0 keep-state

Это если я правильно понял автора, но это гадание. Без реальных адресов, вместо ХХХ понять сложно, т.к. могут быть варианты. Это отдельный хост с одним интерфейсом? Это гейт с несколькими интерфейсами? Если не гейт, то в чем сокральный смысл следующей строки?

$IPFW add pass all from XX.XX.XX.XX/XX to any via eth0 setup keep-state



правило
$IPFW add deny all from any to any established
должно быть ниже всех правил использующих динамику, то есть ниже
$IPFW add check-state
и ниже всего блока использующего "setup keep-state"

и должно иметь следующий вид
$IPFW add check-state
$IPFW тра-ля-ля setup keep-state
$IPFW add deny tcp from any to any established in via eth0

$IPFW add pass tcp from any to XX.XX.XX.XX 443 in via eth0 setup keep-state - вообще-то не верно, должно быть
$IPFW add pass(allow) tcp from any to айпишник 443 out via eth0 setup keep-state
так как клиент создает соединение, а не веб сервер.
дайте денег на обновление портов :)
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

Maestro писал(а):
26.02.2007 11:07
правило
$IPFW add deny all from any to any established
должно быть ниже всех правил использующих динамику, то есть ниже
$IPFW add check-state


Совершенно верно! Недоглядел. А вот остальное уже не верно. check-state сразу проверит всю динамику, так что если пакет не попадет ни под одно из динамических правил (уже созданных), то он лишний и ни к чему не относится. Так что смысла прикладывать такие пакеты к остальным правилам уже нет, их можно смело отбрасывать и не напрягать ФВ лишней проверкой.

$IPFW add pass tcp from any to XX.XX.XX.XX 443 in via eth0 setup keep-state - вообще-то не верно, должно быть
$IPFW add pass(allow) tcp from any to айпишник 443 out via eth0 setup keep-state
так как клиент создает соединение, а не веб сервер.


Пардон, мне не совсем понятно где именно находится сервер относительно рассматриваемого хоста. Оригинальное сообщение можно трактовать и так и так, поэтому я и говорил, что без реальных цифр понять все сложно. Или можно понять неверно.
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Помогите с настройкой ipfw.

Сообщение Maestro »

GeoF писал(а):
26.02.2007 14:41
Maestro писал(а):
26.02.2007 11:07

правило
$IPFW add deny all from any to any established
должно быть ниже всех правил использующих динамику, то есть ниже
$IPFW add check-state


Совершенно верно! Недоглядел. А вот остальное уже не верно. check-state сразу проверит всю динамику, так что если пакет не попадет ни под одно из динамических правил (уже созданных), то он лишний и ни к чему не относится. Так что смысла прикладывать такие пакеты к остальным правилам уже нет, их можно смело отбрасывать и не напрягать ФВ лишней проверкой.

$IPFW add pass tcp from any to XX.XX.XX.XX 443 in via eth0 setup keep-state - вообще-то не верно, должно быть
$IPFW add pass(allow) tcp from any to айпишник 443 out via eth0 setup keep-state
так как клиент создает соединение, а не веб сервер.


Пардон, мне не совсем понятно где именно находится сервер относительно рассматриваемого хоста. Оригинальное сообщение можно трактовать и так и так, поэтому я и говорил, что без реальных цифр понять все сложно. Или можно понять неверно.


Для правил, аля $IPFW тра-ля-ля setup keep-state
я использую опцию skipto - полезная и важная штука при использовании динамических правил.
а вообще, есть очень хороший пример настройки правил IPFW для роутера в английской версии хэндбука, собственно, после прочтения которого, у меня отпали все вопросы по IPFW.
http://www.freebsd.org/doc/en_US.ISO8859-1...walls-ipfw.html
дайте денег на обновление портов :)
Спасибо сказали:
GeoF
Сообщения: 181
Статус: BSD guy
ОС: FreeBSD 6 Stable

Re: Помогите с настройкой ipfw.

Сообщение GeoF »

А если так?
novenkii писал(а):
26.02.2007 01:55
привожу пример с адресами:
#!/bin/sh
#

IPFW="./ipfw"
https_host="212.82.212.82,212.81.212.81"
$IPFW -f flush
[...skip...]
#https
$IPFW add pass all from any to $https_host https via eth0
$IPFW add pass all from $https_host https to any via eth0
[...skip...]

именно своя сеть блокирует выход на https

Откуда такой вывод?
важен ли порядок правил, если они не пронумерованы?


IPFW сам пронумерует правила через сотню по мере их добавления в список.

PS: это мост?
Спасибо сказали:
novenkii
Сообщения: 3

Re: Помогите с настройкой ipfw.

Сообщение novenkii »

всё, получилось: нужно было указать явно адреса из подсети, исключив IP текущей машины
именно своя сеть блокирует выход на https

убирал эту строчку - появлялся выход на сервер, но блокировался доступ к машине с других компов подсети

это мост?

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