Ни как не могу разобраться с ipfw

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Ни как не могу разобраться с ipfw

Непрочитанное сообщение Blacking » 2007-03-01 22:11:07

Я недавно поставил на сервак FreeBSD раньше с никсами дел не имел... скачал готовые правила ipfw? все работает замечательно, но нужно самому разобраться в этой "кухне", посему прошу вашей помощи.

Сервак я вляется шлюзом, с двумя интерфейсами, rl0 смотрит в инет с белым IP и fxp0 смотрит в сеть с IP: 192.168.0.1
Для начала хотелось бы написать правила, что бы я со своего компа (192.168.0.2) мог заходить по ssh на сервак, и из сети и из инета могли заходить на сайт расположенный на сервере по 80 естественно порту...

вот что у меня получилось:

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

#!/bin/sh

IPFW='/sbin/ipfw'
inet='rl0'
lan='fxp0'
inet_ip='80.102.18.17'
lan_ip='192.168.0.1'

${IPFW} -f flush

${IPFW} add divert natd all from any to any via ${inet}
${IPFW} add allow tcp from 192.168.0.2 to ${lan_ip} 22 via ${lan}
${IPFW} add allow all from any to ${inet_ip} 80
подскажите что я неправильно сделал, т.к. то чего я хочу добиться не работает...
Нет дома на воле,
А значит и адреса нет...

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-01 22:20:19

после ната пишешь

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

add 1000 allow ip from any to any 
и долго и вдумчиво читаешь про ipfw
но вообще bash.org.ru :)

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-01 22:26:45

что-то я не пойму... это правило разрешит весь ip трафик хоть от куда хоть куда...
т.е. по всем остальным портам... а мне их надо закрыть.... или я опять ничего не понимаю...
ПС: а про ipfw я читаю... но пока тока так к сожалению...
Нет дома на воле,
А значит и адреса нет...

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-02 8:22:41

Что именно не работает? Как именно оно не работает?
Если 80 порт из локальной сети, то пиши еще одно правило, как последнее написанное, с локальным IP.
кроме того, не забудь, что помимо входящего трафика на сервак, есть еще и исходящий... например с 22 порта твоего сервака на твою машину.
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-02 9:46:14

Ладно, пока забудем про 80 порт...
изменил я правила вот до такого вида:

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

#!/bin/sh 

IPFW='/sbin/ipfw' 
inet='rl0' 
lan='fxp0' 
inet_ip='80.102.18.17' 
lan_ip='192.168.0.1' 

${IPFW} -f flush 

${IPFW} add divert natd all from any to any via ${inet} 
${IPFW} add allow tcp from 192.168.0.2 to ${lan_ip} 22 via ${lan}
${IPFW} add allow tcp from ${lan_ip} 22 to 192.168.0.2 via ${lan}
На сервер по ssh зайти могу, но после ввода логина долго не появляется приглашение ввести пароль, так же долго потом запускается например mc. И при загрузке сервера, сервер долго грузить такие приложения как apache22, proftpd, sshd.
Нет дома на воле,
А значит и адреса нет...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-02 10:17:39

однако, неплохо бы DNS разрешить...
Убей их всех! Бог потом рассортирует...

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-02 10:35:56

т.е. прибавим сюда ДНС и получим нечно подобное:

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

#!/bin/sh 

IPFW='/sbin/ipfw' 
inet='rl0' 
lan='fxp0' 
inet_ip='80.102.18.17' 
lan_ip='192.168.0.1' 

${IPFW} -f flush 

${IPFW} add divert natd all from any to any via ${inet} 

${IPFW} add allow tcp from 192.168.0.2 to ${lan_ip} 22 via ${lan} 
${IPFW} add allow tcp from ${lan_ip} 22 to 192.168.0.2 via ${lan}

${IPFW} add allow гвз from any 53 to 192.168.0.2 via ${inet}
верно?
Нет дома на воле,
А значит и адреса нет...

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-02 14:22:43

${IPFW} add allow гвз from any 53 to 192.168.0.2 via ${inet}
почти, только не гвз
в конфиге по умолчанию (/etc/rc.firewall) есть хорошие куски...
я с начала с ним разобрался, а потом дописывал и убирал ....
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
bakake
сержант
Сообщения: 265
Зарегистрирован: 2006-11-21 14:04:58

Непрочитанное сообщение bakake » 2007-03-02 19:19:19

Blacking писал(а): inet_ip='111.222.111.222'

${IPFW} add divert natd all from any to any via ${inet}
Пардон что сразу усложняю задачу, но по моему эта комбинация немного стремная.
В теории, если есть "соседи" по внешнему адресу, то при стечении ряда обстоятельств они смогут очень замечательно ходить в интернет за ваш счет.
Обходится это двумя divert'ами, первый отправляет к natd пакет приходящие на внешний интерфейс и адресованные внешнему интерфейсу, а второй отправляет к natd пакеты приходящие на внутренний интерфейс и адресованные в "мир".

Насчет "гвз", пропускат его надо не к себе а к серверу :-)

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-02 19:48:12

bakake, вот попробывал:

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

${IPFW} add allow udp from any 53 to any via ${inet}
и все равно все долго...

а на счет двух дивертов, напиши плиз пример, а то чего то не въехал...
Нет дома на воле,
А значит и адреса нет...

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-02 20:23:08

Возьми готовый конфиг на форуме и пользуйся :) Книгу чтоли купи хорошую. Скачай с фтп - здесь есть. Хватит уже ерунду спрашивать - бестолку это. Ладно бы что по делу. Тут хоть примерно надо представление иметь что делаешь. А то ты походу даже по форуму не удосужился поискать.

пс продвигаю свой конфиг :)

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

add 00100 allow ip from any to any via lo0 
add 00200 deny ip from any to 127.0.0.0/8 
add 00300 deny ip from 127.0.0.0/8 to any 
add deny log tcp from any to any in tcpflags fin,syn 
add 00300 allow tcp from any to  (твой внешний ип) 22 
add 00400 allow tcp from  (твой внешний ип) 22 to any 
add deny tcp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний) 
add deny udp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний) 
add 1000 deny ip from 192.168.0.0/24 to any in recv (внешний) 
add 1001 deny ip from any to 10.0.0.0/8 via (внешний) 
add 1002 deny ip from any to 172.16.0.0/12 via (внешний) 
add 1003 deny ip from any to 192.168.0.0/16 via (внешний) 
add 1004 deny ip from any to 0.0.0.0/8 via (внешний) 
add 1005 deny ip from any to 169.254.0.0/16 via (внешний) 
add 1006 deny ip from any to 224.0.0.0/4 via (внешний) 
add 1007 deny ip from any to 240.0.0.0/4 via (внешний) 

add 3000 divert 8668 ip from 192.168.0.0/24 to any out xmit (внешний) 
add 3100 divert 8668 ip from any to (внешний ип) in recv (внешний) 

add allow udp from (внешний ип) to any 53 keep-state 
add allow udp from (внешний ип) to any 33434-33524 
add allow udp from any to (внешний ип) 33434-33524 
add allow icmp from any to any icmptype 0,3,8,11 
add allow tcp from any to any established 
add allow ip from any to any frag 
add 65000 allow ip from any to any

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-02 21:12:47

а зачем номера правил используете?
в ас какая-то сложная система скипов, тут не отображённая? :))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
bakake
сержант
Сообщения: 265
Зарегистрирован: 2006-11-21 14:04:58

Непрочитанное сообщение bakake » 2007-03-02 21:30:07

И мои 5 копеек :)

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

#!/bin/sh
cmd="ipfw -q"
lan="172.16.0.0/16"
ext_iface="fxp0"
ext_ip="123.123.123.123"
int_iface="xl0"
dns_ip="121.212.121.212"
dns_ip2="212.121.212.121"

$cmd flush
$cmd table 1 flush

# Первым правилом разрешаем все на lo0, если этого не сделать будут многочисленные глюки 
# с самым разнвм софтом
$cmd add 100   allow ip from any to any via lo0 

# Отправляем на нат все что приходит на внешний интерфейс и адресованное внешнему интерфейсу
$cmd add 300   divert 8668 ip from any to $ext_ip in recv $ext_iface

################# Этот кусок описывает фаервол для собственно самого сервака

# Разрешаем ssh отовсюду
$cmd add 1000  allow tcp from any to me 22

# Разрешаем icmp (ping, traceroute) отовсюду, сие лучше оставить только на этапе 
# отладки фаервола, после отладки icmp надо ограничить 
$cmd add 1010  allow icmp from any to me

# Разрешаем хождение к dns-ам
$cmd add 1020  allow udp from $dns_ip 53 to me
$cmd add 1030  allow udp from $dns_ip2 53 to me

# Важная штука, пропускаем все входящие пакеты для уже установленных соединений
# без этого не будут работать нормально сеть при попытке делать это с сервака
$cmd add 1100  allow tcp from any to me established

# Разрешаем все пакеты от себя лично в мир
###$cmd add 2000 allow ip from me to any
# Запрещаем все остальные попытки обращения к серверу
$cmd add 2010 deny ip from any to me

################# Этот кусок описывает фаервол для клиентов

# Разрешаем хождение пакетов из локалки в мир
$cmd add 3000  allow ip from $lan to any in recv $int_iface
# Разрешаем хождение пакетов для уже установленных соединений обратно в локалку
$cmd add 3010  allow ip from any to $lan established
# Отправляем на нат все что приходит на внутренний интерфейс и адресовано в мир
$cmd add 60030 divert 8668 ip from $lan to any out xmit $ext_iface

# Запрещаем все остальное
###$cmd add 60110 deny ip from any to any

Вроде где то так. Но такой вариант годится только как самый простой на попробовать. Дальше надо его доточить, запретить немаршрутизируемые адреса, бродкаты-мультикасты на внешнем интерфейса, виндовые порты перекрыть, icmp ограничить, вские syn,fin запретить, вобщем есть над чем поработать.

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-02 21:33:08

Dmitriy.A писал(а):Возьми готовый конфиг на форуме и пользуйся :) Книгу чтоли купи хорошую. Скачай с фтп - здесь есть. Хватит уже ерунду спрашивать - бестолку это. Ладно бы что по делу. Тут хоть примерно надо представление иметь что делаешь. А то ты походу даже по форуму не удосужился поискать.
готовый ты сам бери, а я именно хочу разобраться... да я плохо представляю что я делаю.. но я пытаюсь, по форуму я между прочим к твоему личному сведению удосужился полазить, а за совет книжку, это конечно спасибо, только у меня зарезан доступ к фтпшникам, за пределами Томской области...
Нет дома на воле,
А значит и адреса нет...

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-02 21:40:49

здесь смотрел http://www.lissyara.su/?id=1127

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-02 21:41:28

я убил два месяца.
приходил утром на работу, садился за фрю - живьём - по ssh не умел ещё.
и писал конфиг, начав с allow from any to any.
закончилось - первым выложенным на сайте.
причём забавно - пришёл утром и спокойно набил - зная что делаю.
количество перешло в качество...
===========
man ipfw
там всё описано.
Убей их всех! Бог потом рассортирует...

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-02 21:47:02

зарезан доступ к фтпшникам, за пределами Томской области... - очень интересно как реализовали

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-02 22:09:59

ну, предположим, что в томской области один (макксимум два-три-четыре) провайдера.
предположим, у него пул 200.200.200.0-200.200.205.255

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

ipfw allow tcp from any to 200.200.200.0-200.200.205.255 21 via {внутренний интерфейс области}
ipfw add deny tcp from any to any 21
навкидку. наверно, мона и грамотней.
Убей их всех! Бог потом рассортирует...

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-02 22:31:59

Статью конечно же читал...

В Томской области трафик бесплатен только по области, все что за пределами платно, но правайдеры все что за пределами области пускают через спутник, и 100Мб давольно тормозной "внешки" в день дают за абонентскую плату, но с некоторыми ограничениями, например фтп...
ПС: а все подсети Томской области известны....
Нет дома на воле,
А значит и адреса нет...

Аватара пользователя
FreePascal
сержант
Сообщения: 245
Зарегистрирован: 2006-05-14 8:50:05
Контактная информация:

Непрочитанное сообщение FreePascal » 2007-03-02 22:40:45

Я пару месяцев использовал лиса конфиг фаера.
Потом понял что он мне не подходит и взял книгу "Firewalls - практическое применение межсетевых экранов.[Терри Оглтри]"

В ней довольно все просто написано и о протоколах и о основных парвилах
защиты и немного о методах взлома.
Потом читал ман и что не мог перевести читал с 2 манов криво переведенных на русиш,
взятых вроди с opennet.ru, в результате получился у меня фаер который я понимаю
и легко с ним работаю.
Долго заблуждался как работает divert но вроди уже все ок, попустило.

Так что не советую учить его методом проб и ошибок, а понять сущность фаервола,
научится правильно ставить себе условия, типа 2 домов с дверями, "Хочю разрешить вход в дверь(IPaddr1) а выход через дверь(IPaddr2)" , и поняв синтаксис писать ето командой.
Потом усложнять условия --
"добавить(add) разрешение(allow) Васе(ip) с(from) его_хаты(IPaddr1) номер(54) в(to) мою_хату(IPaddr2) номер(456) входить через(in via) такуюто дверь(rl0)"

Вот так вот ето мне представляется :lol:

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-02 23:18:07

lissyara писал(а):ну, предположим, что в томской области один (макксимум два-три-четыре) провайдера.
предположим, у него пул 200.200.200.0-200.200.205.255

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

ipfw allow tcp from any to 200.200.200.0-200.200.205.255 21 via {внутренний интерфейс области}
ipfw add deny tcp from any to any 21
навкидку. наверно, мона и грамотней.
да ну жесть какая :) Он просто не хотел качать и читать :)

Blacking
мл. сержант
Сообщения: 131
Зарегистрирован: 2007-03-01 10:20:10
Откуда: Томская обл. ЗАТО Северск
Контактная информация:

Непрочитанное сообщение Blacking » 2007-03-03 8:55:59

ты сообщения научись читать, а не выдумывать самому...
Нет дома на воле,
А значит и адреса нет...

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

Непрочитанное сообщение dikens3 » 2007-03-04 16:37:48

Blacking писал(а):ты сообщения научись читать, а не выдумывать самому...
Вот сижу и думаю, познакомился ты с девушкой.
Ну какому парню захочется выслушивать её часами (месяцами), общаться (изучать) с ней.
Цель то первая какая у всех? (про молодёжь речь)

То же с правилами Firewall - хочется сразу. :-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.