Страница 1 из 2

IPFW для новичка

Добавлено: 2008-07-30 14:04:58
Владимир
Прочитал статьи про настройку IPFW , на основе них примерно понял структуру правил.

ситуация такая :

есть машина, которая подключена к инету по локальной сети. IP она получила путем DHCP без проблем. добавил в ядро
options IPFIREWALL
options IPDIVERT

пересобрал ядро.
По дефолту правила deny for any to any

Динамически создал такие правила :

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

ipfw add allow udp for any to me
ipfw add allow tcp for me to 194.67.57.226 80
ну и к этому конечно осталось дефолтовое правило deny ip for any to any
Но эти все правила удалялись автоматом, после перезагрузки. Начал решать проблему так :

rc.conf :

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

firewall_enable="YES" - если файрволл грузится модулем
firewall_type="/etc/rules"
firewall_script="/etc/rules"
firewall_script="/etc/rules" = эту строчку добавил т.к. не подгружались правила с файла rules

rules :

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

#!/bin/sh
FwCMD="/sbin/ipfw"
${FwCMD} -f flush
${FwCMD} add allow udp for any to me
${FwCMD} add allow tcp for me to 194.67.57.226 80
Задача данной машины:
Пускать пользователя только на сайт mail.ru и никуда больше.

Понимаю, что правила в файле, надо по-другому писать, но голова уже бо-бо, подскажите как правильно правила оформлять, если это просто локальная машина, приведите пример.
спасибо зараннее...

статью читал: http://www.lissyara.su/?id=1127

Re: IPFW для новичка

Добавлено: 2008-07-30 14:16:30
squid
Владимир писал(а):firewall_type="/etc/rules"
тип может быть OPEN, CLOSSED, UNKNOWN
в зависимости от типа и задач пишутся правила

Re: IPFW для новичка

Добавлено: 2008-07-30 14:30:40
Владимир
т.е. мне лучше, как я понимаю, лучше значение данной строки изменить на OPEN или RULES?
и решиться моя проблема? или это только исправление одной из ошибок мною допущенных?;)

а сами то строчки правил.. то верные?

Re: IPFW для новичка

Добавлено: 2008-07-30 14:37:57
freak
типы вообще-то нужны для дефолтового скрипта с правилами. убери эту строку вообще, если свои правила подсовываешь.

Re: IPFW для новичка

Добавлено: 2008-07-30 14:38:51
terminus
rc.conf

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

firewall_enable="YES" - если файрволл грузится модулем
firewall_type="/etc/rules"
/etc/rules

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

add check-state
add allow all from any to any via lo0
add deny all from any to 127.0.0.0/8
add deny all from 127.0.0.0/8 to any
add allow tcp from me to 194.67.57.26, 194.67.57.126, 194.67.57.226 dst-port 80 out keep-state
add allow udp from me to any 53 out keep-state
add deny all from any to any

Re: IPFW для новичка

Добавлено: 2008-07-30 14:42:19
squid
Владимир писал(а):#!/bin/sh
FwCMD="/sbin/ipfw"
${FwCMD} -f flush
${FwCMD} add allow udp for any to me
${FwCMD} add allow tcp for me to 194.67.57.226 80
сомневаюсь, что будет работать
правила пишутся для входящего и исходящего трафика
приблизительно так

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

${FwCMD} add allow udp for any to me
${FwCMD} add allow udp for me to any
${FwCMD} add allow tcp for me to 194.67.57.226 80
${FwCMD} add allow tcp for 194.67.57.226 80 to me
или просто, чтобы разрешить все

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

${FwCMD} add allow udp for any to any

Re: IPFW для новичка

Добавлено: 2008-07-30 14:43:54
Владимир
terminus
add allow all from any to any via lo0 = это как я понимаю "петля"
add deny all from any to 127.0.0.0/8 = это чтобы на локалхост не ломились
add deny all from 127.0.0.0/8 to any = это чтобы локалхост не ломился никуда
add allow tcp from me to {194.67.57.26, 194.67.57.126, 194.67.57.226} 80 out keep-state = это доступ к маил.ру (что-то дофига айпишников) =)
add allow udp from me to any 53 out keep-state = это доступ ДНСу
add deny all from any to any = это без комментариев)

правильно понял ?

Re: IPFW для новичка

Добавлено: 2008-07-30 14:47:59
Владимир
squid

понял, значит правила надо писать всегда в обе стороны:
сначала в одну , затем в другую.
Спасибо за такое разжёвывание.

По поводу разрешить всем и вся = не подходит, надо чтобы доступ был только на маил.ру

Re: IPFW для новичка

Добавлено: 2008-07-30 14:48:50
terminus

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

add check-state = пропускает внутрь соединения которые были инициализированы нами в правилах keep-state
add allow all from any to any via lo0 = Сам с собой должен иметь возможность говорить
add deny all from any to 127.0.0.0/8 = для секюрности
add deny all from 127.0.0.0/8 to any = для секюрности
add allow tcp from me to 194.67.57.26, 194.67.57.126, 194.67.57.226 dst-port 80 out keep-state  = доступ к маил.рк (у них http://www.mail.ru имеет 3 разных адреса в DNS)
add allow udp from me to any 53 out keep-state = доступ ко всем днсам. Можно указать вместо any адрес только своего.
add deny all from any to any  = это без комментариев

Re: IPFW для новичка

Добавлено: 2008-07-30 14:51:35
dikens3
Все IP-Адреса mail.ru:

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

mail.ru.                1303    IN      TXT     "v=spf1 ip4:194.67.57.0/24 ip4:194.67.23.0/24 ip4:194.67.45.0/24 ip4:195.239.211.0/24 ip4:194.186.55.0/24 ip4:195.239.174.0/24 ~all"

Re: IPFW для новичка

Добавлено: 2008-07-30 14:55:03
Владимир
terminus писал(а):

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

add check-state = пропускает внутрь соединения которые были инициализированы нами в правилах keep-state
add allow all from any to any via lo0 = Сам с собой должен иметь возможность говорить
add deny all from any to 127.0.0.0/8 = для секюрности
add deny all from 127.0.0.0/8 to any = для секюрности
add allow tcp from me to 194.67.57.26, 194.67.57.126, 194.67.57.226 dst-port 80 out keep-state  = доступ к маил.рк (у них http://www.mail.ru имеет 3 разных адреса в DNS)
add allow udp from me to any 53 out keep-state = доступ ко всем днсам. Можно указать вместо any адрес только своего.
add deny all from any to any  = это без комментариев

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

add allow tcp from me to any 22 out
add allow tcp from any to me 22 in 
ssh - правильный вариант ?

чтобы я мог к кому-то подсоединится по ssh и ко мне могли.

Re: IPFW для новичка

Добавлено: 2008-07-30 15:00:00
terminus

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

add check-state
add allow all from any to any via lo0
add deny all from any to 127.0.0.0/8
add deny all from 127.0.0.0/8 to any
add allow tcp from any to me 22 in
add allow tcp from me to 194.67.57.26, 194.67.57.126, 194.67.57.226 dst-port 80 out keep-state
add allow udp from me to any 53 out keep-state
add deny all from any to any
2 dikens3

SPF это срисок SMTP с которых разрешено посылать почту от имени mail.ru - антиспамовая зашита. Ему же надо достуа к WWW (к WWW - 80 порт? Я правильно понял? Машина не гейт а на ней работают юзевры?)

Re: IPFW для новичка

Добавлено: 2008-07-30 15:01:11
freak
Владимир писал(а):

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

add allow tcp from me to any 22 out
add allow tcp from any to me 22 in 
ssh - правильный вариант ?

чтобы я мог к кому-то подсоединится по ssh и ко мне могли.
да

Re: IPFW для новичка

Добавлено: 2008-07-30 15:04:18
Владимир
terminus писал(а):

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

add check-state
add allow all from any to any via lo0
add deny all from any to 127.0.0.0/8
add deny all from 127.0.0.0/8 to any
add allow tcp from any to me 22 in
add allow tcp from me to 194.67.57.26, 194.67.57.126, 194.67.57.226 dst-port 80 out keep-state
add allow udp from me to any 53 out keep-state
add deny all from any to any
2 dikens3

SPF это срисок SMTP с которых разрешено посылать почту от имени mail.ru - антиспамовая зашита. Ему же надо достуа к WWW (к WWW - 80 порт? Я правильно понял? Машина не гейт а на ней работают юзевры?)

да, доступ к WWW маил.ру , т.е. через веб-интерфейс.
Терминус, не знаю как тебя по имени, СПАСИБО.

Re: IPFW для новичка

Добавлено: 2008-07-30 15:07:02
terminus
Пожалуйста. Главное чтобы помогло.

Re: IPFW для новичка

Добавлено: 2008-07-30 15:15:28
Владимир
спасибо ребята за отзывчивость.
squid
terminus
freak

Re: IPFW для новичка

Добавлено: 2008-07-30 15:35:44
juffin
Здравствуйте.
Имеется у меня такой конфиг фаерволла:

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

#!/bin/sh -q

fw=/sbin/ipfw

oif=fxp1
oip=внешний IP

iif=fxp0
iip=192.168.1.1
lan=192.168.1.0/24

adm=192.168.1.225
pdc=192.168.1.2
post=192.168.1.224

${fw} -f flush
${fw} add allow ip from any to any via lo

${fw} add deny ip from any to 127.0.0.0/8
${fw} add deny ip from 127.0.0.0/8 to any
${fw} add deny ip from any to 10.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 in via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 in via ${oif}
${fw} add deny ip from any to 10.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 out via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 out via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 out via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 out via ${oif}
${fw} add deny icmp from any to any frag
${fw} add deny log icmp from any to 255.255.255.255 in via ${oif}
${fw} add deny log icmp from any to 255.255.255.255 out via ${oif}

# SQUID
${fw} add fwd 127.0.0.1,3128 tcp from ${lan} to any http,https,ftp in via ${iif}

# NAT
${fw} add divert natd ip from ${lan} to any out via ${oif}
${fw} add divert natd ip from any to ${oip} in via ${oif}
${fw} add allow tcp from any to any established
${fw} add allow ip from ${oip} to any out xmit ${oif}

#ICMP
${fw} add allow icmp from any to any icmptype 0,8,11

# DNS
${fw} add allow udp from any to any 53
${fw} add allow udp from any 53 to any

# Users
${fw} add allow ip from ${adm} to any 20,21,25,80,110,443
${fw} add allow ip from any to ${adm} 20,21,25,80,110,443

${fw} add allow ip from ${pdc} to any 25,80,110,443
${fw} add allow ip from any to ${pdc} 25,80,110,443

${fw} add allow ip from ${post} 25,110 to any 25,110
${fw} add allow ip from any 25,110 to ${post} 25,110

${fw} add deny log ip from any to any
требуется, чтобы adm имел HTTP,HTTPS,почту и FTP.
pdc HTTP,HTTPS и почту.
А post только почту. При таком конфиге проходят все всюду.
Подскажите, пожалуйста, что поправить, а то я уже две недели колупаюсь :st:

Re: IPFW для новичка

Добавлено: 2008-07-30 16:09:10
terminus
http://nuclight.livejournal.com/124348.html
Курите - поможет ;-)

такой конфиг, думаю, прокатит...


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

#!/bin/sh -q

fw=/sbin/ipfw

oif=fxp1
oip=внешний IP

iif=fxp0
iip=192.168.1.1
lan=192.168.1.0/24

adm=192.168.1.225
pdc=192.168.1.2
post=192.168.1.224

${fw} -f flush
${fw} add allow ip from any to any via lo

${fw} add deny ip from any to 127.0.0.0/8
${fw} add deny ip from 127.0.0.0/8 to any
${fw} add deny ip from any to 10.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 in via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 in via ${oif}
${fw} add deny ip from any to 10.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 out via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 out via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 out via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 out via ${oif}
${fw} add deny icmp from any to any frag
${fw} add deny log icmp from any to 255.255.255.255 in via ${oif}
${fw} add deny log icmp from any to 255.255.255.255 out via ${oif}

# SQUID
${fw} add fwd 127.0.0.1,3128 tcp from ${lan} to any http,https,ftp in via ${iif}


# Users
${fw} add deny ip from ${adm} to any not  20,21,25,80,110,443

${fw} add deny ip from ${pdc} to any not 25,80,110,443

${fw} add deny ip from ${post} to any not 25,110


# NAT
${fw} add divert natd ip from ${lan} to any out via ${oif}
${fw} add divert natd ip from any to ${oip} in via ${oif}
${fw} add allow tcp from any to any established
${fw} add allow ip from ${oip} to any out xmit ${oif}

#ICMP
${fw} add allow icmp from any to any icmptype 0,8,11

# DNS
${fw} add allow udp from any to any 53
${fw} add allow udp from any 53 to any

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

Re: IPFW для новичка

Добавлено: 2008-07-31 9:40:07
juffin
to terminus
Спасибо за указанное направление и конфиг. :drinks:
Кое-что пришлось поправить,(разрешить DNS, отключить всех пользователей, кроме указанных) но у меня теперь есть конфиг, который работает как надо. :Yahoo!:
Правда мне он не нравится, коряво выглядит, может кто-нибудь подскажет, что можно поправить?!

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

#!/bin/sh -q
fw=/sbin/ipfw

oif=fxp1
oip=89.107.200.130

iif=fxp0
iip=192.168.1.1

adm=192.168.1.225
pdc=192.168.1.2
post=192.168.1.224
lan=${adm},${pdc},${post}

${fw} -f flush
${fw} add allow ip from any to any via lo
${fw} add deny ip from any to 127.0.0.0/8
${fw} add deny ip from 127.0.0.0/8 to any
${fw} add deny ip from any to 10.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 in via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 in via ${oif}

${fw} add deny ip from any to 10.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 out via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 out via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 out via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 out via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 out via ${oif}
${fw} add deny icmp from any to any frag
${fw} add deny log icmp from any to 255.255.255.255 in via ${oif}
${fw} add deny log icmp from any to 255.255.255.255 out via ${oif}

# SQUID
${fw} add fwd 127.0.0.1,3128 tcp from ${adm},${pdc} to any http,https in via ${iif}

# Users
${fw} add deny tcp from ${adm} to any not 20,21,22,25,53,80,110,443
${fw} add deny tcp from ${pdc} to any not 25,53,80,110,443
${fw} add deny tcp from ${post} to any not 25,53,110

# NAT
${fw} add divert natd ip from ${lan} to any out via ${oif}
${fw} add divert natd ip from any to ${oip} in via ${oif}

${fw} add allow tcp from any to any established
${fw} add allow ip from ${oip} to any out xmit ${oif}

#ICMP
${fw} add allow icmp from any to any icmptype 0,8,11

# DNS
${fw} add allow udp from any to any 53
${fw} add allow udp from any 53 to any

${fw} add allow all from ${lan} to any via ${iif}
${fw} add allow all from any to ${lan} via ${iif}

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

Re: IPFW для новичка

Добавлено: 2008-07-31 16:16:46
paradox
вообще то фаерволы надо понимать
а админов которые спрашивают советов как их настраивать
я бы на месте начальства выганял
а что бы у таких админов был стимул учиться - то выганял бы без права на востанновления и делал рассылку для всех работодателей
))
но думаю к вам это не относиться
и это фаервол исключительно у вас на компютере
и нужен для баловства
?)

Re: IPFW для новичка

Добавлено: 2008-07-31 16:43:36
Владимир
paradox писал(а):вообще то фаерволы надо понимать
а админов которые спрашивают советов как их настраивать
я бы на месте начальства выганял
а что бы у таких админов был стимул учиться - то выганял бы без права на востанновления и делал рассылку для всех работодателей
))
но думаю к вам это не относиться
и это фаервол исключительно у вас на компютере
и нужен для баловства
?)
ну-с вот и спросил, чтобы понять окончательно ;-) дык...я еще и не админ, а только учусь :)
фаервол на тестовой машине :) для обучения)

оффтоп)

Re: IPFW для новичка

Добавлено: 2008-08-01 10:29:20
CTOPMbI4
paradox писал(а):вообще то фаерволы надо понимать
а админов которые спрашивают советов как их настраивать
я бы на месте начальства выганял
а что бы у таких админов был стимул учиться - то выганял бы без права на востанновления и делал рассылку для всех работодателей
))
но думаю к вам это не относиться
и это фаервол исключительно у вас на компютере
и нужен для баловства
?)
Когда то нужно начинать :smile:
Вспомните себя когда только начинали изучать :drinks:

Re: IPFW для новичка

Добавлено: 2008-08-01 14:04:58
paradox
у меня была другая ситуация
мне дали бсд с фаерволом и рабочей сеткой
и сказали будешь админить
если что полетит получишь в голову))))
ни по одном форуму я не бегал и не постил месседжы (спасите, помогите, как делаться)
а пара вопросов на ирс каналах и меня посылали читать мануал
выход я нашел в чтении примеров и разборов всяких ситуаций опубликованных на сайте опеннет и других
поэтому можно сказать что я выучил фаервол толком неиспользуя его
зато понимая его

а с нынешней молодежи я фигею)))
вот некоторые не буду называть
вместо того что бы подумать над простой проблемой
постят одно и тоже сообщение на всех порталах где есть раздел freebsd

Re: IPFW для новичка

Добавлено: 2008-08-01 14:08:09
dikens3
paradox писал(а):а с нынешней молодежи я фигею)))
Ты не понял, они деньги идут зарабатывать, а не работать. Разве не ясно? Работать должен тот, кто умеет. Это разные вещи.

Какой смысл что-то начинать делать самому, когда написав на 10 форумов , в 90% случаев получишь ответ не включая мозг? А потом тупо сидеть и ждать ответов.

Re: IPFW для новичка

Добавлено: 2008-08-01 14:24:07
CTOPMbI4
просто на поиск решения может уйти довольно много времени.
короче чтобы нормально разобраться и понять, нужно самому по тратить время на поиск решения :smile: