URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 60719
[ Назад ]

Исходное сообщение
"firewall.sh не работает"

Отправлено pure , 07-Окт-05 11:56 
Система FreeBSD 5.4- p7

ipfw работает только в режиме firewall_type="open".
при попытке применить firewall_script="/etc/firewall.sh" - локалка блокируется для внешнего мира в любом случае (внутри все нормально), даже если firewall.sh настроен на разрешение всего и всем.

ядро с опциями:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED
options IPDIVERT
options DUMMYNET

в rc.conf:
icmp_drop_redirect="YES"
icmp_log_redirect="YES"
icmp_bmcastecho="NO"
tcp_drop_synfin="YES"
firewall_enable="YES"
#firewall_type="OPEN"
firewall_script="/etc/firewall.sh"
firewall_logging="YES"
natd_enable="YES"
natd_interface="xl0"
natd_flags="-s"

Подскажите, в чем проблема.
Заранее большое спасибо!


Содержание

Сообщения в этом обсуждении
"firewall.sh не работает"
Отправлено newser , 07-Окт-05 12:37 
>Система FreeBSD 5.4- p7
>
>ipfw работает только в режиме firewall_type="open".
>при попытке применить firewall_script="/etc/firewall.sh" - локалка блокируется для внешнего мира в любом
>случае (внутри все нормально), даже если firewall.sh настроен на разрешение всего
>и всем.
>
>ядро с опциями:
>options IPFIREWALL
>options IPFIREWALL_VERBOSE
>options IPFIREWALL_VERBOSE_LIMIT=100
>options IPFIREWALL_FORWARD
>options IPFIREWALL_FORWARD_EXTENDED
>options IPDIVERT
>options DUMMYNET
>
>в rc.conf:
>icmp_drop_redirect="YES"
>icmp_log_redirect="YES"
>icmp_bmcastecho="NO"
>tcp_drop_synfin="YES"
>firewall_enable="YES"
>#firewall_type="OPEN"
>firewall_script="/etc/firewall.sh"
>firewall_logging="YES"
>natd_enable="YES"
>natd_interface="xl0"
>natd_flags="-s"
>
>Подскажите, в чем проблема.
>Заранее большое спасибо!


А может все-таки покажете содержимое /etc/firewall.sh?


"firewall.sh не работает"
Отправлено pure , 07-Окт-05 12:46 

>А может все-таки покажете содержимое /etc/firewall.sh?


Сорри:

#!/bin/sh

ipfw='/sbin/ipfw -q'
inet='xl0'
lan1='xl1'

${ipfw} -a flush
${ipfw} add 100 allow all from any to any via lo0              


${ipfw} add 300 divert natd tcp from any to any via ${inet}
${ipfw} add 310 divert natd udp from any to any via ${inet}

${ipfw} add 400 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${ipfw} add 410 deny icmp from any to any frag
${ipfw} add 420 allow icmp from any to any
${ipfw} add 500 deny tcp from any to 192.168.1.0/24 137-139 via ${inet}
${ipfw} add 510 deny udp from any to 192.168.1.0/24 137-139 via ${inet}
${ipfw} add 520 deny ip from 192.168.1.0/24 to any in via ${inet}
${ipfw} add 530 allow tcp from 192.168.1.1 to any 5999
${ipfw} add 540 allow udp from any 53 to any
${ipfw} add 550 allow udp from any to any 53

${ipfw} add 600 allow tcp from 192.168.1.0/24 to any 20,21,25,80,110,443,5190
${ipfw} add 610 allow tcp from any 20,21,25,80,110,443,5190 to 192.168.1.0/24


"firewall.sh не работает"
Отправлено pure , 07-Окт-05 13:02 
И еще:
выдается ошибка natd при перезапуске /etc/netstart:
Firewall rules loaded, starting divert daemons: natdnatd: Unable to bind divert socket.: Address already in use
что делать?
спасибо

"firewall.sh не работает"
Отправлено dm , 07-Окт-05 13:34 
собственно блокируется именно из-за неправильной настройки natd,
как запускается natd ?



"firewall.sh не работает"
Отправлено pure , 07-Окт-05 13:43 
>собственно блокируется именно из-за неправильной настройки natd,
>как запускается natd ?
в rc.conf -
natd_enable="YES"
natd_interface="xl0"
natd_flags="-s"

# ps ax |grep natd
  241  ??  Ss     0:09,59 /sbin/natd -s -n xl0
  2414  p1  S+     0:00,00 grep natd



"firewall.sh не работает"
Отправлено pure , 07-Окт-05 15:22 
>>собственно блокируется именно из-за неправильной настройки natd,
>>как запускается natd ?
>в rc.conf -
>natd_enable="YES"
>natd_interface="xl0"
>natd_flags="-s"

добавил флаг -u
ничего не изменилось


"firewall.sh не работает"
Отправлено Halt , 07-Окт-05 16:13 
цель запуска натд ? для выхода выпуска в интеренет(FreeBSD) леванета делается так:

/etc/rc.conf
hostname="domaine.ru"
ifconfig_rl0="inet 192.168.4.204 netmask 255.255.255.0"
# ип в интернет твоего сервака
ifconfig_rl1="inet 196.196.196.3 netmask 255.255.255.0"

defaultrouter="196.196.196.1" #шлюз твоего сервака кто в инет тебя пускает
gateway_enable="YES"

natd_enable="YES"
natd_interface="rl1"
natd_flags=""
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

firewall_enable="YES"           # Set to YES to enable firewall functionality
firewall_type="ORG"             # Firewall type (see /etc/rc.firewall)
firewall_quiet="YES"            # Set to YES to suppress rule display (boot)
firewall_script="/etc/rc.firewall"
firewall_logging="YES"
firewall_flags=""

# конец rc.conf

если нет надо создать
/etc/natd.conf
log no
deny_incoming no
dynamic yes
use_sockets yes
same_ports yes
verbose no
port natd
#alias_address 209.178.100.232
unregistered_only yes
#natd.conf (END)

фрагмент /etc/rc.firewall
# Prototype setups.
#
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
        ${fwcmd} add pass ICMP from any to any
        ${fwcmd} add 65000 pass all from any to any
        ;;

[Oo][Rr][Gg])
        ############
        # 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
        inet="192.168.4.0/24"
        imask="255.255.255.0"
        iip="192.168.4.204"
        iif="rl0"
        oip="196.196.196.3"
        onet="196.196.196.0/24"
        omask="255.255.255.0"
        oif="rl1"

        # Stop RFC1918 nets on the outside interface
        ${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
        ${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
        # что бы работал диверт разрешающие правила ставим после него
        ${fwcmd} add divert natd all from ${inet} to any out via ${natd_interface}
        ${fwcmd} add divert natd all from any to ${oip} in via ${natd_interface}
        # Allow any traffic to or from my own net.
        ${fwcmd} add pass all from ${oip} to ${onet}:${omask}
        ${fwcmd} add pass all from ${onet}:${omask} to ${oip}

        #me - все ип адреса нашего сервера
        ${fwcmd} add allow ip from me to any
        # разрешаем ICMP (к примеру ping)
        ${fwcmd} add pass ICMP from any to any
;;


после этого должно заработать ;)
а вообще до этого еще правильно ядро собрать нада если не 5я фряха

а теперь если у тебя все ок, рассказывай как у тебя две сетевушки работают в одной подсети :)



"firewall.sh не работает"
Отправлено pure , 07-Окт-05 16:31 
Хочу решить проблему с данными которые я привел выше. Хотелось бы знать в чем проблема.natd работает при firewall_type="open". при применении firewall_script - блокируется трафик. Скрипт привел выше.

по ipfw show видно что трафик считается, но все равно с клиенов доступа в мир нету:
# ipfw show
00100  44  3868 allow ip from any to any via lo0
00300 142  9329 divert 8668 tcp from any to any via xl0
00310  30  2894 divert 8668 udp from any to any via xl0
00400   0     0 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00410   0     0 deny icmp from any to any frag
00420 476 39984 allow icmp from any to any
00500   0     0 deny tcp from any to 192.168.0.0/24 dst-port 137-139 via xl0
00510   0     0 deny udp from any to 192.168.0.0/24 dst-port 137-139 via xl0
00520   0     0 deny ip from 192.168.0.0/24 to any in via xl0
00530   0     0 allow tcp from 192.168.0.0/24 to any dst-port 5999
00540  48  8131 allow udp from any 53 to any
00550  18  1049 allow udp from any to any dst-port 53
00590   0     0 allow tcp from 192.168.0.7 to me dst-port 953
00591   0     0 allow tcp from me to 192.168.0.7 dst-port 953
00600 833 65324 allow tcp from 192.168.0.0/24 to any dst-port 20,21,22,23,25,80,
110,443,2049,3389,5190
00610 540 89941 allow tcp from any 20,21,22,23,25,80,110,443,953,2049,3389,5190
to 192.168.0.0/24
65535 854 70408 deny ip from any to any


"firewall.sh не работает"
Отправлено Halt , 07-Окт-05 16:42 
сделай по моему примеру а потом просто правила добавляй свои
разрешающие/запрещающие
запрещающие правила обычно пишут впереди что бы пакет вообще не проверялся дальше если он не нужен на твоей машине, правила с номерами до 100 включительно идут в обход ipfw

и тогда поймешь в чем дело, OPEN это открытый фаервал в моем примере можешь видеть строчку
        ${fwcmd} add 65000 pass all from any to any
она полностью его открывает если OPEN, остальные правила тогда вообще перестают иметь значения кроме divert, все открыто.


"firewall.sh не работает"
Отправлено pure , 07-Окт-05 17:09 
при перезапуске /etc/netstart заметил странность:

ipfw: illegal divert/tee port
ipfw: hostname ``xl0'' unknown
ipfw: hostname ``xl0'' unknown
ipfw: hostname ``bge0'' unknown
ipfw: hostname ``bge0'' unknown

что это?


"firewall.sh не работает"
Отправлено pure , 07-Окт-05 17:23 
>при перезапуске /etc/netstart заметил странность:
>
>ipfw: illegal divert/tee port
>ipfw: hostname ``xl0'' unknown
>ipfw: hostname ``xl0'' unknown
>ipfw: hostname ``bge0'' unknown
>ipfw: hostname ``bge0'' unknown
>
>что это?

тобишь вместо bge0 xl1