Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » IPFW NAT - Блокировка входящих соединений

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Perfectus88

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Имеется проблема с IPFW на FreeBSD9.0 64bit
Задача: открыть 21, 22 и 80 порт на сервере, остальное блокировать.
Организовать NAT встроенный в ядро FreeBSD.
Все делается на основе этой статьи: http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/
Правила составлены по наводке автора статьи.
Проблема в следующем: сервер не принимает никакие входящие соединения до тех пор пока не включить машину за ним. Затем машину можно выключить - сервер какоето время принимает соединений - затем вновь тишина. Бьюс уже наверно недели две. Все работает отлично, но как то не хочется держать машину постоянно включенной Постарался учесть глюки IPFW NAT - все указано ниже.
Ядро собрано со следующими опциями:

Код:
 
options      IPFIREWALL
options      IPFIREWALL_VERBOSE
options      IPFIREWALL_VERBOSE_LIMIT=1000
options      IPFIREWALL_NAT
options      LIBALIAS
options      ROUTETABLES=2
options      DUMMYNET
options      HZ="1000"    


Код:
net.inet.ip.fw.one_pass=1

Правила ipfw:

Код:
 
#!/bin/sh
# Вводим переменные:
 
FwCMD="/sbin/ipfw"               # Расположение бинарника IPFW
LanOUT="alc0"                  # Внешний интерфейс
LanIN="re0"                  # Внутренний интерфейс
IpOUT="80.80.80.80"               # Внешний IP адрес
IpIN="192.168.1.1"               # Внутренний IP адрес
NetIN="192.168.1.0"               # Внетренняя сеть
FullUSER="192.168.1.2/32,192.168.1.3/32,192.168.1.4/32,192.168.1.5/32,192.168.1.6/32"      # IP адреса с доступом в интернет
 
# Сбрасываем все правила
${FwCMD} -f flush
 
# Очищаем таблицы с блокируемыми адресами
${FwCMD} -f "table 1" flush
${FwCMD} -f "table 2" flush
 
# Разрешаем весь трафик по внутреннему интерфейсу (петле)
${FwCMD} add allow ip from any to any via lo0
 
# Запрещаем lo0 куда то лезть и откуда то лезть
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
 
# Запрещаем таблицу с ip адресами с которых неправильно ввели логин или пароль по SSH. BruteBlock для SSH
${FwCMD} add deny ip from "table(1)" to any in recv ${LanOUT}
 
# Запрещаем таблицу с ip адресами с которых неправильно ввели логин или пароль к vsftpd
${FwCMD} add deny ip from "table(2)" to any in recv ${LanOUT}
 
# Разрешаем некоторые типы ICMP запросов (эхо-запрос, эхо-ответ, время жизни пакета истекло)
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
 
# Разрешаем все исходящие/входящие соединения FullUser'ам через внутренний интерфейс
# zapreshaem vsem ostalnim vozmozhnost' ispolzovat etot router
${FwCMD} add allow all from ${FullUSER} to any in recv ${LanIN}
${FwCMD} add allow all from any to ${FullUSER} out xmit ${LanIN}
${FwCMD} add deny all from ${NetIN} to any via ${LanIN}
 
# Запрещаем частные сети на внешнем интерфейсе
${FwCMD} add deny ip from any to 10.0.0.0 in recv ${LanOUT}
${FwCMD} add deny ip from 10.0.0.0/8 to any in recv ${LanOUT}
${FwCMD} add deny ip from any to 172.16.0.0/12 in recv ${LanOUT}
${FwCMD} add deny ip from 172.16.0.0/12 to any in recv ${LanOUT}
${FwCMD} add deny ip from any to 192.168.0.0/16 in recv ${LanOUT}
${FwCMD} add deny ip from 192.168.0.0/16 to any in recv ${LanOUT}
${FwCMD} add deny ip from any to 169.254.0.0/16 in recv ${LanOUT}
${FwCMD} add deny ip from 169.254.0.0/16 to any in recv ${LanOUT}
 
# Запрещаем широковещательные icmp на внешнем интерфейсе
${FwCMD} add deny log icmp from any to 255.255.255.255 in recv ${LanOUT}
${FwCMD} add deny log icmp from any to 255.255.255.255 out xmit ${LanOUT}
 
# Делалось для тех моментов когда нет параметра deny_in  в настройках ната
${FwCMD} add deny ip from any to any 139,445 in recv ${LanOUT}
 
# NAT встроенный в ядро системы
${FwCMD} nat 1 config log if ${LanOUT} reset same_ports deny_in redirect_port tcp ${IpOUT}:22 22 redirect_port tcp ${IpOUT}:21 21 redirect_port tcp ${IpOUT}:50000-50500 50000-50500 redirect_port tcp ${IpOUT}:80 80
 
${FwCMD} add nat 1 ip from any to any via ${LanOUT}

ipfw show:

Код:
 
00100   1784    184134 allow ip from any to any via lo0
00200      0         0 deny ip from any to 127.0.0.0/8
00300      0         0 deny ip from 127.0.0.0/8 to any
00400      0         0 deny ip from table(1) to any in recv alc0
00500      0         0 deny ip from table(2) to any in recv alc0
00600      0         0 deny ip from table(3) to any dst-port 80 in recv alc0
00700    294     18092 allow icmp from any to any icmptypes 0,8,11
00800 225402  13071496 allow ip from 192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,192.168.1.6 to any in recv re0
00900 482227 706049343 allow ip from any to 192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,192.168.1.6 out xmit re0
01000      0         0 deny ip from 192.168.1.0 to any via re0
01100     31      1712 deny ip from any to any dst-port 139,445 in recv alc0
01200      0         0 deny ip from any to 10.0.0.0 in recv alc0
01300 198278  19158881 deny ip from 10.0.0.0/8 to any in recv alc0
01400      0         0 deny ip from any to 172.16.0.0/12 in recv alc0
01500      0         0 deny ip from 172.16.0.0/12 to any in recv alc0
01600    199     32138 deny ip from any to 192.168.0.0/16 in recv alc0
01700    345    198472 deny ip from 192.168.0.0/16 to any in recv alc0
01800    810     69875 deny ip from any to 169.254.0.0/16 in recv alc0
01900      0         0 deny ip from 169.254.0.0/16 to any in recv alc0
02000      0         0 deny log logamount 1000 icmp from any to 255.255.255.255 in recv alc0
02100      0         0 deny log logamount 1000 icmp from any to 255.255.255.255 out xmit alc0
02200 892966 842252492 nat 1 ip from any to any via alc0
65535    392     49192 deny ip from any to any

Вот параметры адаптеров:
Внешний (выключены RXCSUM и TXCSUM):

Код:
 
alc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c3098<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,LINKSTATE>

Внутренний:

Код:
 
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>

 
Пробовал убирать параметр deny_in в настройках ната - без результата. Тоесть результат конечно есть: в те моменты в которые сервер принимает входящие соединения я вижу открытыми еще и 139 и 445 порты (samba стоит на сервере) Но потом сервер перестает даже пинговаться - включил машинку за ним - вуаля все заработало. Не могу понять как может зависить способность сервера принимать входящие соединения от машины которая находится за ним.
Прошу помочь.

Всего записей: 62 | Зарегистр. 17-07-2010 | Отправлено: 09:30 03-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Perfectus88
Цитата:
IPFW NAT - Блокировка входящих соединений  
Firewall *nix: iptables, ipfw, pf etc...
 
п. 1.5. главы VIII Соглашения по использованию
Цитата:
1.5.После того как вы выбрали раздел, не торопитесь создавать тему. Весьма вероятно, что ваш вопрос обсуждался ранее. Воспользуйтесь фильтром (поиском). При этом последовательно совершите фильтрацию по нескольким подходящим ключевым словам.

 
Добавлено:
Ответил в указанной теме.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 09:54 03-12-2012 | Исправлено: Alukardd, 09:54 03-12-2012
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » IPFW NAT - Блокировка входящих соединений


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru