Про точное размещение в фаерволле правил

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
proxy-man
лейтенант
Сообщения: 692
Зарегистрирован: 2006-04-05 12:06:13
Откуда: Odessa
Контактная информация:

Про точное размещение в фаерволле правил

Непрочитанное сообщение proxy-man » 2007-03-29 16:42:34

Привет камрадам. С тех пор как я перелез на FreeBSD меня мучит один вопрос, который связан с безопасностью системы - как правильно размещать правила в IPFW? Ибо давеча настраивая очередной сервант под фряхой (насэтапил FreeBSD 6.2) я столкнулся со следующей проблемой - нужно было дать возможность удаленным пользователем подключаться к VPN-серверу для получения доступа в локальную сеть и когда я указал следующие правила в фаере:

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

${FwCMD} add allow ip from any to any 1723
${FwCMD} add allow gre from any to any
${FwCMD} add allow ip from any to any via ${VpnIface}

где переменная VpnIface - это перечень псевдоустройст ngX, которые генерирует в системе MPD. Данный перечень правил не сработал так как мне нужно - клиент подключался к VPN-серверу, но доступ в локальную сеть не получал (нужно было предоставить возможность удаленно юзать RDP). Но в пятой ветке все работало замечательно. Указанные правила размещал перед НАТом, затем начал экспериментировать и методом тыка размещал правила уже в разных местах фаера - результат хреновый (видимо у меня /dev/hands прямой симлинк на /dev/ass :) )... У кого есть какие-то советы на эту тему? (листаю раздел хандбука про IPFW, но там в общих чертах информация про фаер как таковой...) Ежели надобно - выложу целый свод правил для фаера.
Have trouble with Windows - reboot,
Have trouble with Unix - be root!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
proxy-man
лейтенант
Сообщения: 692
Зарегистрирован: 2006-04-05 12:06:13
Откуда: Odessa
Контактная информация:

Непрочитанное сообщение proxy-man » 2007-04-02 12:21:08

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

FwCMD="/sbin/ipfw -q "   # бинарник ipfw
LanOut="tun0"                # внешний интерфейс
LanIn="nve0"                 # внутренний интерфейс
IpOut="200.200.200.200"     # внешний IP адрес машины
IpIn="192.168.1.1"         # внутренний IP машины
NetMask="24"                # сетевая маска локальной сети
NetIn="192.168.1.0"       # внутрення подсеть
VpnIface="ng0,ng1,ng2,ng3,ng4"  # сетевые интерфейсы для MPD
OpenVpnIface="tap0"      # сетевой интерфейс для OpenVPN
${FwCMD} -f flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add allow udp from any to ${IpOut} 1194
${FwCMD} add allow udp from 10.10.0.1 to 10.10.0.0/24 via ${OpenVpnIface}
${FwCMD} add allow udp from 10.10.0.0/24 to 10.10.0.1 via ${OpenVpnIface}
${FwCMD} add allow ip from any to ${IpOut} 1723
${FwCMD} add allow gre from any to any
${FwCMD} add allow ip from any to any via ${VpnIface}
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
${FwCMD} add deny icmp from any to any frag
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${LanOut}
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
${FwCMD} add allow tcp from any to any established
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any to any 53 via ${LanOut}
${FwCMD} add allow udp from any to any 123 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 21 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 49152-65535 via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow tcp from any to ${IpOut} 80 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 25 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpIn} 22 via ${LanIn}
${FwCMD} add allow tcp from any to ${IpOut} 22 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 143 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 110 via ${LanOut}
${FwCMD} add allow tcp from any to any via ${LanIn}
${FwCMD} add allow udp from any to any via ${LanIn}
${FwCMD} add allow icmp from any to any via ${LanIn}
${FwCMD} add deny ip from any to any
Вот такие у меня правила фаера... Блять никак не могу забороть следующую проблему - удаленные клиенты подключаются к VPN-серверу (MPD использую), но дальше никаких движений нет - VPN-клиенты не получают доступа в локальную сеть. Может быть необходимо какое-то специальное правило, чтобы удаленные машины могли использовать ресурсы ЛВС (в первую очередь - RDP)?
PS - за основу фаера брал статью лиссяры :)
Have trouble with Windows - reboot,
Have trouble with Unix - be root!

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-02 15:11:10

Общее:

1. Смотри счётчики deny
2. Включи лог для этих правил и смотри что в заблокированных.
3. Если всё нормально и ничего не блокируется, тогда возможно проблема с nat (его настройками или неправильным расположением divert в ipfw.)
4. Маршрутизацию тоже неплохо просмотреть.
5. Ping + ipfw log на сервере решает многие непонятки.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-04-02 16:58:28

dikens3 писал(а):Общее:

1. Смотри счётчики deny
2. Включи лог для этих правил и смотри что в заблокированных.
3. Если всё нормально и ничего не блокируется, тогда возможно проблема с nat (его настройками или неправильным расположением divert в ipfw.)
4. Маршрутизацию тоже неплохо просмотреть.
5. Ping + ipfw log на сервере решает многие непонятки.
Буду отвечать по пунктам -
1. По счетчикам гляну уже завтра, когда загружу правила. Но какая ценность такой информации? Что я увижу по этим счетчика? Количество пакетов и траффик?
2. Лог у меня включен, т.е. в /etc/rc.conf -> firewall_logging="YES", но в файле /var/log/secrurity нифуя нету :(
3. Хм... про проблему с НАТ. А в чем там собственно может быть проблема?
4. Косяков в маршрутизации не замечено - пакеты бегают туда, куда им нужно ходить.
:(

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-02 18:04:13

Если что-то блокируется (действие LOG), увидишь в цепочке количество заблокированных пакетов.
Потом включаешь лог для этой цепочки и смотришь логи, быть может она не пропускает нужные тебе пакеты?

Если что-то принимается, совсем не означает, что будет нормально работать(Возможно пакет нужно сначала nat'ить) или маршрут будет ХЗ куда.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

votuanr
ефрейтор
Сообщения: 60
Зарегистрирован: 2006-10-31 14:15:36

Непрочитанное сообщение votuanr » 2007-04-03 8:15:57

${FwCMD} add deny ip from any to any
${FwCMD} add deny log ip from any to any

а потом

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

tail -f /var/log/security | grep Deny
и с удаленных машин ломись в сетку - в логе все и увидишь.

Аватара пользователя
proxy-man
лейтенант
Сообщения: 692
Зарегистрирован: 2006-04-05 12:06:13
Откуда: Odessa
Контактная информация:

Непрочитанное сообщение proxy-man » 2007-04-03 22:28:50

Траблу свою решил. Еще раз кратенько опишу ситуевину в которой оказался:
значит был шлюз, нужно было поднять на нем VPN-сервер, что и было сделано (поднял MPD). Используя указанный фаер я смог добиться лишь того, чтобы клиенты находящиеся за пределами ЛВСа, могли подключаться к VPN-серверу, а вот уже получить доступ к терминальному серверу, который находился за брандмауэром, клиенты не могли. Я долго ломал голову - почему клиент, который подключаясь к VPN-серверу, получив адрес из пространства ЛВС, не получал доступа к терминальному серверу при таких вот правилах фаера. Если сбрасывал правила на OPEN - все естественно бегало нормально. Листал хэндбук, читал статьи на OPENNET.RU - ситуация для меня не прояснилась. Смотрел, по совету камрадов, security.log, смотрел счетчики - нифига :? . И тут до меня дошло - необходимо в таком строгом наборе правил фаера дать дополнительное разрешение на доступ VPN-клиента к терминальному серверу, т.е.

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

ipfw add pass ip from ${VpnClients} to ${TermSrv}
Это правило я разместил сразу за правилом которое разрешает использование протокола GRE.
Я то почему-то решил, что раз удаленный хост, подключившись к VPN-серверу, получает IP-адрес внутренней сети, то ему все будет можно :) . Хотя возможно мои размышления не верны... Кто-нидь бросьте линками про ipfw ибо то что есть на том же OpenNet.Ru годятся только для ознакомительных целей.
Have trouble with Windows - reboot,
Have trouble with Unix - be root!