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

Исходное сообщение
"ipwf+natd видимость портов"

Отправлено wws , 02-Авг-07 09:28 
Доброго времени суток!
Есть локалка+прокси в Инет. Пытаюсь настроить ipfw+natd на FreeBSD 6.1. Фря одним интерфейсом смотрит в локаль, другим в подстеть прокси. Прописываю правила, для проверки сканирую наружный интерфейс с прокси на наличие открытых портов. В логах пишет

ipfw: Deny TCP (IP Proxy):4858 (IP наружного интерфейса FreeBSD):21 in via dc0.

А сканер показывает 21 порт. Аналогично 80,110,25

rc.conf

defaultrouter="IP Proxy"
gateway_enable="YES"
inetd_enable="YES"
router="/sbin/routed"
router_enable="YES"
router_flags="-q"
rpcbind_enable="YES"
sshd_enable="YES"
# FIREWALL
tcp_extensions="NO"  
tcp_drop_synfin="YES"
firewall_enable="YES"
firewall_logging="YES"
firewall_type="MyCompany"
natd_enable="YES"                
natd_interface="LanOut"              
natd_flags="-l -dynamic -m"

Правила IPFW
LanIn - Внутренний интерфейс
IpIn - IP внутреннего интерфейса
LanOut - Внешний интрефейс
IpOut - IP внешнего интерфейса
IpProxy - IP прокси
my - мой IP


${fwcmd} add 0005 check-state
# Разрешаем мне SSH
${fwcmd} add 0010 pass all from $my to $IpIn 22 in via $LanIn setup keep-state
${fwcmd} add 0015 pass all from any to any via lo0
# Разрешаем трафик только в пределах локальной сети
${fwcmd} add 0020 pass all from any to any via $LanIn
${fwcmd} add 0024 deny log tcp from any to $IpOut 80,21,110,25 in via $LanOut
${fwcmd} add 0025 divert natd ip from any to any in via $LanOut
# Разрешаем DNS
${fwcmd} add 0030 skipto 65000 log udp from $my,$IpOut to $IpProxy 53 limit src-addr 5        
${fwcmd} add 0045 skipto 65000 tcp from ${my} to any 3128 out via $LanOut setup limit src-addr 10
${fwcmd} add 64999 deny log all from any to any
${fwcmd} add 65000 divert natd ip from any to any out via $LanOut
${fwcmd} add 65001 pass log ip from any to any

Подскажите где ошибка.
И еще при использовании конструкции fwd пишет ошибку ipfw: getsockopt(IP_FW_ADD): Invalid argument


Содержание

Сообщения в этом обсуждении
"ipwf+natd видимость портов"
Отправлено Paul , 02-Авг-07 10:18 
как-то все очень сложно... проще повесить нужные сервисы исключительно на внутренний интерфейс.

--
http://www.ppokrovsky.org


"ipwf+natd видимость портов"
Отправлено Paul , 02-Авг-07 10:23 
>И еще при использовании конструкции fwd пишет ошибку ipfw: getsockopt(IP_FW_ADD): Invalid argument
>

А по поводу этого - ядро собрано с поддержкой IPFIREWALL?

--
http://www.ppokrovsky.org


"ipwf+natd видимость портов"
Отправлено wws , 02-Авг-07 10:54 
Вот настройки ядра

options         MROUTING                # Multicast routing
options         PIM                     # Protocol Independent Multicast
options         IPFIREWALL              #firewall
options         IPFIREWALL_VERBOSE      #enable logging to syslogd(8)
options         IPFIREWALL_VERBOSE_LIMIT=5      #limit verbosity
#options        IPFIREWALL_DEFAULT_TO_ACCEPT    #allow everything by default
options         IPFIREWALL_FORWARD      #packet destination changes
options         IPFIREWALL_FORWARD_EXTENDED     #all packet dest changes
#options        IPV6FIREWALL            #firewall for IPv6
#options        IPV6FIREWALL_VERBOSE
#options        IPV6FIREWALL_VERBOSE_LIMIT=10
#options        IPV6FIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT                #divert sockets
#options        IPFILTER                #ipfilter support
#options        IPFILTER_LOG            #ipfilter logging
#options        IPFILTER_LOOKUP         #ipfilter pools
#options        IPFILTER_DEFAULT_BLOCK  #block all packets by default
options         IPSTEALTH               #support for stealth forwarding
options         TCPDEBUG

Дефолтом все запрещено. Если бы ядро было собрано без поддрежки ipfw, то как бы я видел логи блокированных пакетов.
В том-то и дело, что сервисов никаких нет.



"ipwf+natd видимость портов"
Отправлено wws , 02-Авг-07 13:21 
Проблемка с портами решилась.

Осталось понять, почему не удается применить конструкцию fwd.



"ipwf+natd видимость портов"
Отправлено DN , 02-Авг-07 17:31 
>Проблемка с портами решилась.
>
>Осталось понять, почему не удается применить конструкцию fwd.

Потому-что ядро без опции
options         IPFIREWALL_FORWARD


"ipwf+natd видимость портов"
Отправлено ppokrovsky , 02-Авг-07 17:55 
>>Проблемка с портами решилась.
>>
>>Осталось понять, почему не удается применить конструкцию fwd.
>
>Потому-что ядро без опции
>options         IPFIREWALL_FORWARD

так-то с опцией вроде
options         IPFIREWALL_FORWARD      #packet destination changes

Автору треда: ядро пересобирали после установки?

--
http://www.ppokrovsky.org


"ipwf+natd видимость портов"
Отправлено wws , 03-Авг-07 04:50 
>Автору треда: ядро пересобирали после установки?

Ядро не пересобирал. Опции были активны при установке.


"ipwf+natd видимость портов"
Отправлено DN , 03-Авг-07 11:39 
>>Автору треда: ядро пересобирали после установки?
>
>Ядро не пересобирал. Опции были активны при установке.

Опции options         IPFIREWALL_FORWARD
в GENERIC при установке с дистрибутива нет.


"ipwf+natd видимость портов"
Отправлено Paul , 03-Авг-07 13:43 
>>>Автору треда: ядро пересобирали после установки?
>>
>>Ядро не пересобирал. Опции были активны при установке.
>
>Опции options         IPFIREWALL_FORWARD
>в GENERIC при установке с дистрибутива нет.

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

--
http://www.ppokrovsky.org


"ipwf+natd видимость портов"
Отправлено wws , 30-Авг-07 05:49 
Спасибо всем, проблема решилась пересборкой ядра. Предлагаю полный ответ на свой вопрос, дабы на эти грабли больше не попадались.
Итак,
    либо dmesg, либо ee /var/log/messages
находим сообщение подобное следующему
ipfw2 (+ipv6) initialized, divert loadable, rule-based forwarding disabled, default to deny, lo
rule-based forwarding disabled - вот оно. Т.е ядро не поддерживает констукцию fwd.

Будем конфигурить ядро.
cd /usr/src/sys/i386/conf - путь может отличаться.
cp GENERIC MYKERNEL - сохраняем текущий конфигурационный файл ядра GENERIC в MYKERNEL
ee /usr/src/sys/i386/conf/MYKERNEL - редактируем(просматриваем) конфиг, для fwd там должна присутствовать следующая строка.
options         IPFIREWALL_FORWARD
если необходимо, то и
options         IPFIREWALL_FORWARD_EXTENDED
у меня, например вот так
############################################# MY SETTING ############################
options         IPFIREWALL              # Firewall
options         IPFIREWALL_VERBOSE      # Print information about
options         IPFIREWALL_FORWARD
options         IPFIREWALL_FORWARD_EXTENDED
options         IPSTEALTH               # Support stealth forwarding
options         IPDIVERT                # Divert IP sockets
options         DUMMYNET                # Bandwidth limiter
options         IPSEC                   # IP security protocol
options         IPSEC_ESP               # IP security crypto
#####################################################################################

Теперь необходимо собрать ядро, процедура довольно утомительная
cd /usr/src
make buildkernel KERNKONF=MYKERNEL
теперь можно курить час, полтора

Потом устанавливаем ядро
make installkernel KERNCONF=MYKERNEL

Перегружаемся.
ВСЕ!!!
Данная инфа находится здесь http://www.freebsd.org/doc/ru/books/handbook/book.html

Я привел лишь сжатые выдержки, относящиеся к указанной проблеме.
УДАЧИ!


"ipwf+natd видимость портов"
Отправлено greenwar , 13-Сен-07 12:29 
>Теперь необходимо собрать ядро, процедура довольно утомительная
> cd /usr/src
> make buildkernel KERNKONF=MYKERNEL
> теперь можно курить час, полтора

странно.. если сделать так:
cd /sys/i386/conf/
ee MYKERNEL
config MYKERNEL
cd ../compile/MYKERNEL
make depend && make && make install
процедура занимает 10 мин на машинах за $300
т.е. ниже среднего

P.S. я сам только с 3 раза правильно скомпилировал ядро :)


"ipwf+natd видимость портов"
Отправлено Gremlin19 , 13-Сен-07 15:17 
>[оверквотинг удален]
>> make buildkernel KERNKONF=MYKERNEL
>> теперь можно курить час, полтора
>
>странно.. если сделать так:
>cd /sys/i386/conf/
>ee MYKERNEL
>config MYKERNEL
>cd ../compile/MYKERNEL
>make depend && make && make install
>процедура занимает 10 мин на машинах за $300

не проблема, загадка:

пересобирал ядро два раза (на разных машинах), везьде пользовался конструкцией "make depend && make && make install"
Ядро работает, но(!) в
$ uname -a
FreeBSD bsd 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Wed Apr 18 19:34:26 MSD 2007     adm@ourhost.ourdomain:/usr/obj/usr/src/sys/mykernel  i386

должен был измениться порядковый номер (сейчас #0).

Лечится?


"ipwf+natd видимость портов"
Отправлено greenwar , 17-Сен-07 13:56 
не, всё-таки самый правильный способ:
#cd /sys/i386/conf
#cp GENERIC anyname
#ee anyname
#cd /usr/src
#make buildkernel KERNCONF=anyname
#make installkernel KERNCONF=anyname

или можно сразу: #make kernel KERNCONF=anyname

итого, с 4го раза.. :D