ipfw + squid

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

ipfw + squid

Непрочитанное сообщение f0s » 2007-09-19 9:50:54

в общем задумка такая, решил построить роутер.

поставил: squid/2.6.STABLE15+PatchSets-20070903+ICAP
прокси не прозрачный.

1) хочу сделать так, чтобы юзеры выходили в инет ТОЛЬКО через сквид. То есть чтобы бразуер, фтп, аська ходила через сквид.. Я так понимаю что параметр Safe_ports нужно только для прозрачного прокси... поэтому в обычном непрозрачном этих строк не надо, а просто потом в параметрах той же аськи скажу что ходить через HTTPS.. так?
2) соответсвенно ipfw настроил, поднял natd, но опять таки, не хочу чтобы с локалки в инет были открыты все порты.. все должны ходить через сквид (за исключение 3 серверов, у них адреса 192.168.10.5-192.169.10.8), можно ли сделать так, чтолбы эти сререра ходили через нат куда угодно по всем портам, минуя сквид, а все остальные компы в сети ходили в инет только через сквид, и все порты им остальные были бы закрыты.

в данный момент конфига ipfw (модифицированный из статьи Лиса), я так понимаю по этому конфигу у меня:

- снаружи закрыты все порты
- с локалки в инет юзеры выходят через сквид, и остальные порты им недоступны.. так?

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

[f0s@router] /usr/local/etc/rc.d/> cat /etc/rc.firewall
#!/bin/sh
FwCMD="/sbin/ipfw   "
#
# Внешняя сетевуха
LanOut="xl0"
# внешняя сеть
NetOut="255.255.255.240/28"
# Внешний IP
IpOut="84.52.64.20"
#
# внутренняя сетевуха
LanIn="nve0"
# Внутренняя сеть
NetIn="192.168.10.0/24"
# Шаблон внутреннего адреса
ip_lan="192.168.10"
#
#сбрасываем все правила
${FwCMD} -f flush
# сбрасываем все pipe
${FwCMD} -f pipe flush
# сбрасываем очереди
${FwCMD} -f queue flush
#
# Не знаю, пригодится ли кому это - по ночам охрана повадилась шариться в инете
# и качать музончик, порнушку смотреть... 3 гига трафика за ночь... Поэтому ночью
# траффик ограничиваем (скорость) - причём жестоко режем :)
# для этого в конфиге ядра должна быть строка
# options         DUMMYNET
# соответственно в crontab надо добавить запись типа sh /etc/rc.firewall
# с запуском в 19.01 и 9.01 :)))
# Также не забудте поставить в sysctl переменную net.inet.ip.fw.one_pass в 0,
# иначе все пакеты будут выпадать из файрволла после трубы - а это дыра.
chour=`date '+%H'`
if [ ${chour} -lt 9 ]; then
     ${FwCMD} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${FwCMD} pipe 1 config bw 33600 bit/s
fi
if [ ${chour} -ge 19 ]; then
     ${FwCMD} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${FwCMD} pipe 1 config bw 33600 bit/s
fi
#
# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0

# Вводим запреты:

# рубим попытки 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
#
# рубим пакеты `типа от внутренней сети, но на внешнем интерфейсе`
${FwCMD} add deny ip from ${NetIn} to any in via ${LanOut}
# рубим пакеты `типа от внешней сети, но на внутреннем интерфейсе`
${FwCMD} add deny ip from ${NetOut} to any in via ${LanIn}
#
# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${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 224.0.0.0/4 in via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
${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}

# Отправляем всех на squid
#
#
#${FwCMD} add fwd ${IpIn},2121 tcp from ${NetIn} to any 21 via ${LanOut}
${FwCMD} add fwd 127.0.0.1,8787 tcp from ${NetIn} to any 80 via ${LanOut}
#
# Делаем NAT (трансляцию сетевых адресов) всему, что не ушло на squid
${FwCMD} add divert natd ip from ${NetIn} 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}

# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
${FwCMD} add allow icmp from any to any icmptypes 0,8,11

# Разрешаем траффик внутренней сети на внутреннем интерфейсе (входящий)
${FwCMD} add allow ip from any to ${NetIn} in via ${LanIn}
# Разрешаем траффик внутренней сети на внутреннем интерфейсе (исходящий)
${FwCMD} add allow ip from ${NetIn} to any out via ${LanIn}

# разрешаем tcp-пакеты по уже установленным соединениям
${FwCMD} add allow tcp from any to any established

# DNS - 4 правила. (если на машине есть DNS сервер - иначе надо всего два)
#${FwCMD} add allow udp from any to ${IpOut} 53 in via ${LanOut}
${FwCMD} add allow udp from ${IpOut} 53 to any out via ${LanOut}
#${FwCMD} add allow udp from any 53 to ${IpOut} in via ${LanOut}
${FwCMD} add allow udp from ${IpOut} to any 53 out via ${LanOut}

# разрешаем UDP (для синхронизации времени - 123 порт)
${FwCMD} add allow udp from any to any 123 via ${LanOut}

# Блокируем все остальные попытки соединения с занесением в логи
${FwCMD} add deny log tcp from any to ${IpOut} in via ${LanOut} setup

${FwCMD} add allow tcp from ${IpOut} to any out via ${LanOut} setup
${FwCMD} add allow tcp from any to ${IpOut} in via ${LanIn} setup

${FwCMD} add deny ip from any to any
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Хостинговая компания 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/

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-19 13:02:40

Я так понимаю что параметр Safe_ports нужно только для прозрачного прокси... поэтому в обычном непрозрачном этих строк не надо.
неправильно пинимаешь, Safe_ports это ACL squid, прямого отношения к тому прозрачный у тебя прокси или замутнённый не имеет.
параметрах той же аськи скажу что ходить через HTTPS.
Именно

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

${FwCMD} add fwd 127.0.0.1,8787 tcp from ${NetIn} to any 80 via ${LanOut}
таким макаром как раз делается прозрачный прокси
Если хошешь локализовать трафик то вместо

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

# Разрешаем траффик внутренней сети на внутреннем интерфейсе (входящий)
${FwCMD} add allow ip from any to ${NetIn} in via ${LanIn}
# Разрешаем траффик внутренней сети на внутреннем интерфейсе (исходящий)
${FwCMD} add allow ip from ${NetIn} to any out via ${LanIn}
должно быть примерно так:

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

# Разрешаем траффик внутренней сети на внутреннем интерфейсе 
${FwCMD} add allow ip from ${NetIn} to ${NetIn} via ${LanIn}
# В данном контексте это правило эквивалентно прошлым 2 правилам с IN и OUT но более читабельно
# Разрешаем траффик для серверов 
${FwCMD} add allow ip from (192.168.10.5-192.169.10.8 твои сервера) to any via ${LanIn} 
${FwCMD} add allow ip from any to (192.168.10.5-192.169.10.8 твои сервера) via ${LanIn} 
#Запрещем все  остальное в принципе это можно не писать, если IPFW defaul deny
${FwCMD} add ip from any to any via ${LanIn} 

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение f0s » 2007-09-19 13:33:03

Я так понимаю что параметр Safe_ports нужно только для прозрачного прокси... поэтому в обычном непрозрачном этих строк не надо.
неправильно пинимаешь, Safe_ports это ACL squid, прямого отношения к тому прозрачный у тебя прокси или замутнённый не имеет.
ага. понял. пасиб. я просто к тому, что стоит ли мне туда писать

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

acl safe_ports port 5190
если аська у меня будет ходить через HTTPS ?

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

${FwCMD} add fwd 127.0.0.1,8787 tcp from ${NetIn} to any 80 via ${LanOut}
таким макаром как раз делается прозрачный прокси
то есть эту строчку мне просто убрать надо?
Если хошешь локализовать трафик то вместо

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

# Разрешаем траффик внутренней сети на внутреннем интерфейсе (входящий)
${FwCMD} add allow ip from any to ${NetIn} in via ${LanIn}
# Разрешаем траффик внутренней сети на внутреннем интерфейсе (исходящий)
${FwCMD} add allow ip from ${NetIn} to any out via ${LanIn}
должно быть примерно так:

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

# Разрешаем траффик внутренней сети на внутреннем интерфейсе 
${FwCMD} add allow ip from ${NetIn} to ${NetIn} via ${LanIn}
# Разрешаем траффик для серверов 
${FwCMD} add allow ip from (192.168.10.5-192.169.10.8 твои сервера) to any via ${LanIn} 
${FwCMD} add allow ip from any to (192.168.10.5-192.169.10.8 твои сервера) via ${LanIn} 
#Запрещем все  остальное в принципе это можно не писать, если IPFW defaul deny
${FwCMD} add ip from any to any via ${LanIn} 
странно, вроде же в этих правилах не затрагивается внешняя сеть.. я хочу чтобы внутри сети туда обратно все все могли.. а чтобы в инет выходили только через сквид.. то есть чтобы nat работал для трех серверов...
получается нужно копать в эту сторону как-то

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

${FwCMD} add divert natd ip from 192.168.10.5 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.6 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.7 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.8 to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
чтобы обычные компы этим не пользовались...
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-19 13:47:30

Первый ответ немного подкорректировал,
что стоит ли мне туда писать

по дефолту в Squid-e есть

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

ACL Safe_ports  ports 1025-65535
более чем достаточно
то есть эту строчку мне просто убрать надо?
если нужна авторизация, тогда да.
Можно наверное и NaTD так сделать, но как-то коряво на мой взгляд

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-19 14:00:45

странно, вроде же в этих правилах не затрагивается внешняя сеть.. я хочу чтобы внутри сети туда обратно все все могли.. а чтобы в инет выходили только через сквид.. то есть чтобы nat работал для трех серверов...
Не сразу понял о чем речь.
У тебя нигде не фигурирует что-то вроде

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

${FwCMD} add allow tcp from me  to any out via  ${LanOut} setup
, для того чтобы вообще что-то работало, как раз это и разрешит трафик для серверов правда только TCP, а UDP только открытые DNS и NTP

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-19 14:15:26

Тьфу, опять поторопился, есть уже

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

${FwCMD} add allow tcp from ${IpOut} to any out via ${LanOut} setup

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

${FwCMD} add allow tcp from any to ${IpOut} in via ${LanIn} setup

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение f0s » 2007-09-19 15:23:47

если честно я уже в конец запутался...

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

ACL Safe_ports  ports 1025-65535
на что влияет? на то, какие порты будут работаь через сквид? а на практике это как? к примеру есть программа которая юзает порт 4000, я у нее в настройках указываю использовать прокси, и тогда при вышеприведенном условии она будет пахать.. а если вышеприведенного правила не будет, то она соответсвенно не покатит? логично.. =) здесь я так понимаю идет речь о tcp портах...

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

${FwCMD} add allow tcp from ${IpOut} to any out via ${LanOut} setup
${FwCMD} add allow tcp from any to ${IpOut} in via ${LanIn} setup
а по вышеприведенных правилам я так понимаю что просто инет разрешен.. но порты будут закрыты.. от есьт до этого места дозодит уже только сам сквид.. так?
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-19 16:24:10

на что влияет? на то, какие порты будут работаь через сквид? а на практике это как? к примеру есть программа которая юзает порт 4000, я у нее в настройках указываю использовать прокси, и тогда при вышеприведенном условии она будет пахать.. а если вышеприведенного правила не будет, то она соответсвенно не покатит? логично.. =) здесь я так понимаю идет речь о tcp портах...
1.

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

ACL Safe_ports  ports 1025-65535
это не правило, а условно - шаблон
2.А вот правило

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

http_access deny !Safe_ports
по-моему двояких толкований быть не может
3.

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

${FwCMD} add allow tcp from ${IpOut} to any out via ${LanOut} setup
allow tcp from any to any established
по этому правилу разрешены запросы на установку TCP соединения от ${IpOut} на любой IP и любой порт.
Небольшая расшифровка: Кто может попасть под эти правила? Условно-все демоны FreeBSD (в т.ч. Squid, Frox т.д.), плюс еще трафик от локальных PC, который прошел через NATD. Соответвенно если хочешь локализовать трафик, то не пускай его в NATD, что в правилах IPFW означает

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

from ${LanIN} to ${LanIn} 
а никак не

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

from ${LanIn} to any
. Вроде бы все.
4.По поводу что открыто, что закрыто. Имеем:

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

${FwCMD} add allow tcp from any to ${IpOut} in via ${LanIn} setup
сие как раз открывает все!!! TCP порты для установки соединения, опять же учитывая уже существующую

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

${FwCMD} add allow tcp from any to any established
, с учетом п3. получаем строки

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

allow tcp from any to ${IpOut} via ${LanOut}
allow tcp from ${IpOut} to any via ${LanOut}
- полностью открытая система снаружи по TCP.

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение f0s » 2007-09-20 8:18:16

я вот немного подкорректировал, можете проверить?

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



[f0s@router] /usr/local/etc/rc.d/> cat /etc/rc.firewall
#!/bin/sh
FwCMD="/sbin/ipfw   "
#
# Внешняя сетевуха
LanOut="xl0"
# внешняя сеть
NetOut="255.255.255.240/28"
# Внешний IP
IpOut="84.54.62.20"
#
# внутренняя сетевуха
LanIn="nve0"
# Внутренняя сеть
NetIn="192.168.10.0/24"
# Шаблон внутреннего адреса
ip_lan="192.168.10"
#
#сбрасываем все правила
${FwCMD} -f flush
# сбрасываем все pipe
${FwCMD} -f pipe flush
# сбрасываем очереди
${FwCMD} -f queue flush
#
# Не знаю, пригодится ли кому это - по ночам охрана повадилась шариться в инете
# и качать музончик, порнушку смотреть... 3 гига трафика за ночь... Поэтому ночью
# траффик ограничиваем (скорость) - причём жестоко режем :)
# для этого в конфиге ядра должна быть строка
# options         DUMMYNET
# соответственно в crontab надо добавить запись типа sh /etc/rc.firewall
# с запуском в 19.01 и 9.01 :)))
# Также не забудте поставить в sysctl переменную net.inet.ip.fw.one_pass в 0,
# иначе все пакеты будут выпадать из файрволла после трубы - а это дыра.
chour=`date '+%H'`
if [ ${chour} -lt 9 ]; then
     ${FwCMD} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${FwCMD} pipe 1 config bw 33600 bit/s
fi
if [ ${chour} -ge 19 ]; then
     ${FwCMD} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${FwCMD} pipe 1 config bw 33600 bit/s
fi
#
# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0

# Вводим запреты:

# рубим попытки 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
#
# рубим пакеты `типа от внутренней сети, но на внешнем интерфейсе`
${FwCMD} add deny ip from ${NetIn} to any in via ${LanOut}
# рубим пакеты `типа от внешней сети, но на внутреннем интерфейсе`
${FwCMD} add deny ip from ${NetOut} to any in via ${LanIn}
#
# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${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 224.0.0.0/4 in via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
${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}

# Делаем NAT (трансляцию сетевых адресов) только 4-м серверам...
# это правильная контсрукция? или надо по-другому как-то.. не пройдет ли через этот НАТ другие компы? и можно ли сделать НАТ только на
# определенные порты?

${FwCMD} add divert natd ip from 192.168.10.5 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.6 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.7 to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.10.8 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}

# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
${FwCMD} add allow icmp from any to any icmptypes 0,8,11

# Разрешаем траффик внутренней сети на внутреннем интерфейсе (входящий)
${FwCMD} add allow ip from any to ${NetIn} in via ${LanIn}
# Разрешаем траффик внутренней сети на внутреннем интерфейсе (исходящий)
${FwCMD} add allow ip from ${NetIn} to any out via ${LanIn}

# разрешаем tcp-пакеты по уже установленным соединениям
${FwCMD} add allow tcp from any to any established

# DNS (на машине нет DNS сервера)
${FwCMD} add allow udp from ${IpOut} 53 to any out via ${LanOut}
${FwCMD} add allow udp from ${IpOut} to any 53 out via ${LanOut}

# разрешаем UDP (для синхронизации времени - 123 порт)
${FwCMD} add allow udp from any to any 123 via ${LanOut}

# Блокируем все остальные попытки соединения с занесением в логи
${FwCMD} add deny log tcp from any to ${IpOut} in via ${LanOut} setup

${FwCMD} add allow tcp from ${IpOut} to any out via ${LanOut} setup
${FwCMD} add allow tcp from any to ${IpOut} in via ${LanIn} setup

${FwCMD} add deny ip from any to any
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-20 8:26:46

Нет конструкций типа

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

# Разрешаем траффик для серверов
${FwCMD} add allow ip from (192.168.10.5-192.169.10.8 твои сервера) to any via ${LanIn}
${FwCMD} add allow ip from any to (192.168.10.5-192.169.10.8 твои сервера) via ${LanIn} 
без них в NAT ничего не попадет

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение f0s » 2007-09-20 18:11:53

чего-то так вообще ничего и не заработало. даже сам гейт не смог выйти в инет :) вот немного инфы:

1) это правила

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

[f0s@router] /home/f0s/> ipfw show
00100    0      0 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 192.168.10.0/24 to any in via xl0
00500    0      0 deny ip from 255.255.255.240/28 to any in via nve0
00600   55   6324 deny ip from any to 10.0.0.0/8 in via xl0
00700    0      0 deny ip from any to 172.16.0.0/12 in via xl0
00800    7    805 deny ip from any to 192.168.0.0/16 in via xl0
00900    0      0 deny ip from any to 0.0.0.0/8 in via xl0
01000    0      0 deny ip from any to 169.254.0.0/16 in via xl0
01100   35   1028 deny ip from any to 224.0.0.0/4 in via xl0
01200   12    888 deny ip from any to 240.0.0.0/4 in via xl0
01300    0      0 deny icmp from any to any frag
01400    0      0 deny log logamount 100 icmp from any to 255.255.255.255 in via xl0
01500    0      0 deny log logamount 100 icmp from any to 255.255.255.255 out via xl0
01600    0      0 divert 8668 ip from 192.168.10.0/24 to any out via xl0
01700  195  27455 divert 8668 ip from any to 84.52.64.20 in via xl0
01800    0      0 deny ip from 10.0.0.0/8 to any out via xl0
01900    0      0 deny ip from 172.16.0.0/12 to any out via xl0
02000    0      0 deny ip from 192.168.0.0/16 to any out via xl0
02100    0      0 deny ip from 0.0.0.0/8 to any out via xl0
02200    0      0 deny ip from 169.254.0.0/16 to any out via xl0
02300    0      0 deny ip from 224.0.0.0/4 to any out via xl0
02400    0      0 deny ip from 240.0.0.0/4 to any out via xl0
02500   20   1512 allow icmp from any to any icmptypes 0,8,11
02600  609  55518 allow ip from any to 192.168.10.0/24 in via nve0
02700   67  10020 allow ip from 192.168.10.0/24 to any out via nve0
02800    4    160 allow tcp from any to any established
02900    0      0 allow udp from 84.52.64.20 53 to any out via xl0
03000  155  10412 allow udp from 84.52.64.20 to any dst-port 53 out via xl0
03100    0      0 allow udp from any to any dst-port 123 via xl0
03200   32   1884 deny log logamount 100 tcp from any to 84.52.64.20 in via xl0 setup
03300    0      0 allow tcp from 84.52.64.20 to any out via xl0 setup
03400    0      0 allow tcp from any to 84.52.64.20 in via nve0 setup
03500 1564 225197 deny ip from any to any
65535    7    528 deny ip from any to any
[f0s@router] /home/f0s/>
это ДНС:

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

[f0s@router] /home/f0s/> cat /etc/resolv.conf
domain  artpaint
nameserver      192.168.10.8
nameserver      195.177.122.1
nameserver      195.177.123.1
это мои сетевухи на роутере

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

[f0s@router] /home/f0s/> ifconfig
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=9<RXCSUM,VLAN_MTU>
        inet 84.52.64.20 netmask 0xfffffff0 broadcast 84.52.64.31
        ether 00:50:04:46:04:09
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
nve0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.10.7 netmask 0xffffff00 broadcast 192.168.10.255
        ether 00:18:f3:a7:fe:fb
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
не ппингуется с роутера по имени :(

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

[f0s@router] /home/f0s/> ping mail.ru
ping: cannot resolve mail.ru: Host name lookup failure
по IP без проблем:

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

[f0s@router] /home/f0s/> ping 58.60.9.76
PING 58.60.9.76 (58.60.9.76): 56 data bytes
64 bytes from 58.60.9.76: icmp_seq=0 ttl=50 time=202.244 ms
64 bytes from 58.60.9.76: icmp_seq=1 ttl=50 time=202.914 ms
64 bytes from 58.60.9.76: icmp_seq=2 ttl=50 time=201.849 ms
^C
--- 58.60.9.76 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 201.849/202.336/202.914/0.440 ms




далее попробовал с другого сервера пропинговаться по IP:
не вышло

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

[f0s@mail] /home/f0s/> ping 58.60.9.76
PING 58.60.9.76 (58.60.9.76): 56 data bytes
^C
--- 58.60.9.76 ping statistics ---
8 packets transmitted, 0 packets received, 100% packet loss




вот с роутера логи:

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

Sep 20 18:50:27 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:52334 84.52.64.20:25 in via xl0
Sep 20 18:50:36 router last message repeated 2 times
Sep 20 18:51:22 router kernel: ipfw: 3200 Deny TCP 70.86.14.130:46386 84.52.64.20:1080 in via xl0
Sep 20 18:51:31 router last message repeated 2 times
Sep 20 18:51:41 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:52391 84.52.64.20:25 in via xl0
Sep 20 18:52:02 router last message repeated 3 times
Sep 20 18:52:13 router kernel: ipfw: 3200 Deny TCP 219.234.87.180:34756 84.52.64.20:3128 in via xl0
Sep 20 18:52:23 router last message repeated 2 times
Sep 20 18:52:26 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:52391 84.52.64.20:25 in via xl0
Sep 20 18:53:14 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:52391 84.52.64.20:25 in via xl0
Sep 20 18:53:41 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49624 84.52.64.20:25 in via xl0
Sep 20 18:54:02 router last message repeated 3 times
Sep 20 18:54:09 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49650 84.52.64.20:25 in via xl0
Sep 20 18:54:18 router last message repeated 2 times
Sep 20 18:54:26 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49624 84.52.64.20:25 in via xl0
Sep 20 18:54:30 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49650 84.52.64.20:25 in via xl0
Sep 20 18:54:43 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:54:44 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:54:46 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:54:47 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:54:52 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:54:53 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:54:54 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49650 84.52.64.20:25 in via xl0
Sep 20 18:55:04 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:55:05 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:55:14 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49624 84.52.64.20:25 in via xl0
Sep 20 18:55:28 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:55:29 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:55:42 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49650 84.52.64.20:25 in via xl0
Sep 20 18:56:16 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49688 84.52.64.20:25 in via xl0
Sep 20 18:56:17 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:49690 84.52.64.20:25 in via xl0
Sep 20 18:59:19 router kernel: ipfw: 3200 Deny TCP 125.71.211.172:3101 84.52.64.20:3128 in via xl0
Sep 20 18:59:29 router last message repeated 2 times
Sep 20 19:00:11 router kernel: ipfw: 3200 Deny TCP 61.171.216.74:4731 84.52.64.20:3128 in via xl0
Sep 20 19:00:20 router last message repeated 2 times
Sep 20 19:00:37 router kernel: ipfw: 3200 Deny TCP 222.216.28.135:6000 84.52.64.20:3128 in via xl0
Sep 20 19:01:03 router kernel: ipfw: 3200 Deny TCP 210.245.87.249:3642 84.52.64.20:3128 in via xl0
Sep 20 19:01:06 router kernel: ipfw: 3200 Deny TCP 210.245.87.249:3642 84.52.64.20:3128 in via xl0
Sep 20 19:01:51 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2756 84.52.64.20:24554 in via xl0
Sep 20 19:01:54 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2756 84.52.64.20:24554 in via xl0
Sep 20 19:02:22 router kernel: ipfw: 3200 Deny TCP 74.52.29.146:34358 84.52.64.20:3128 in via xl0
Sep 20 19:02:25 router kernel: ipfw: 3200 Deny TCP 74.52.29.146:34358 84.52.64.20:3128 in via xl0
Sep 20 19:02:28 router kernel: ipfw: 3200 Deny TCP 195.177.122.1:38482 84.52.64.20:25 in via xl0
Sep 20 19:02:37 router last message repeated 2 times
Sep 20 19:02:58 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2777 84.52.64.20:24554 in via xl0
Sep 20 19:03:01 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2777 84.52.64.20:24554 in via xl0
Sep 20 19:04:04 router kernel: ipfw: 3200 Deny TCP 121.34.36.228:31232 84.52.64.20:3128 in via xl0
Sep 20 19:04:06 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2796 84.52.64.20:24554 in via xl0
Sep 20 19:04:07 router kernel: ipfw: 3200 Deny TCP 121.34.36.228:31232 84.52.64.20:3128 in via xl0
Sep 20 19:04:09 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2796 84.52.64.20:24554 in via xl0
Sep 20 19:04:13 router kernel: ipfw: 3200 Deny TCP 121.34.36.228:31232 84.52.64.20:3128 in via xl0
Sep 20 19:04:39 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2814 84.52.64.20:24554 in via xl0
Sep 20 19:04:42 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2814 84.52.64.20:24554 in via xl0
Sep 20 19:05:02 router kernel: ipfw: 3200 Deny TCP 125.71.211.172:1418 84.52.64.20:3128 in via xl0
Sep 20 19:05:11 router last message repeated 2 times
Sep 20 19:05:43 router kernel: ipfw: 3200 Deny TCP 85.249.168.11:2849 84.52.64.20:24554 in via xl0
Sep 20 19:05:43 router kernel: ipfw: limit 100 reached on entry 3200

изначально в правилах фаера было:

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

${FwCMD} add allow udp from ${IpOut} 53 to any out via ${LanOut}
${FwCMD} add allow udp from ${IpOut} to any 53 out via ${LanOut}
после того, как в правилах фаера добавил:

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

${FwCMD} add allow udp from any to ${IpOut} 53 in via ${LanOut}
${FwCMD} add allow udp from any 53 to ${IpOut} in via ${LanOut}
то днс пошел...




однако с других компов в сети ничего не пропинговать:

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

H:\>ipconfig /all

Настройка протокола IP для Windows

   Имя компьютера  . . . . . . . . . : terminal02
   Основной DNS-суффикс  . . . . . . :
   Тип узла. . . . . . . . . . . . . : неизвестный
   IP-маршрутизация включена . . . . : нет
   WINS-прокси включен . . . . . . . : нет

Local - Ethernet адаптер:

   DNS-суффикс этого подключения . . :
   Описание  . . . . . . . . . . . . : Intel(R) PRO/1000 EB Network Connection w
ith I/O Acceleration
   Физический адрес. . . . . . . . . : 00-30-48-33-A2-F4
   DHCP включен. . . . . . . . . . . : нет
   IP-адрес  . . . . . . . . . . . . : 192.168.10.2
   Маска подсети . . . . . . . . . . : 255.255.255.0
   Основной шлюз . . . . . . . . . . : 192.168.10.7
   DNS-серверы . . . . . . . . . . . : 195.177.122.1

H:\>ping f0s.spb.ru

При проверке связи не удалось обнаружить узел f0s.spb.ru. Проверьте имя узла и
повторите попытку.

H:\>ping 195.177.122.1

Обмен пакетами с 195.177.122.1 по с 32 байт данных:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 195.177.122.1:
    Пакетов: отправлено = 2, получено = 0, потеряно = 2
    (100% потерь)
Control-C
^C
H:\>
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

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

Re: ipfw + squid

Непрочитанное сообщение dikens3 » 2007-09-20 18:30:12

http://forum.lissyara.su/viewtopic.php?f=14&t=2432
Прочти начало, может поможет с пониманием.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение -cat- » 2007-09-20 23:22:13

Попробую прокомментировать:

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

00100    0      0 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 192.168.10.0/24 to any in via xl0
00500    0      0 deny ip from 255.255.255.240/28 to any in via nve0
00600   55   6324 deny ip from any to 10.0.0.0/8 in via xl0
Несколько странно откуда взялись эти пакеты, но тем не менее

00700    0      0 deny ip from any to 172.16.0.0/12 in via xl0
00800    7    805 deny ip from any to 192.168.0.0/16 in via xl0
Тоже самое

00900    0      0 deny ip from any to 0.0.0.0/8 in via xl0
01000    0      0 deny ip from any to 169.254.0.0/16 in via xl0
01100   35   1028 deny ip from any to 224.0.0.0/4 in via xl0
01200   12    888 deny ip from any to 240.0.0.0/4 in via xl0
01300    0      0 deny icmp from any to any frag
01400    0      0 deny log logamount 100 icmp from any to 255.255.255.255 in via xl0
01500    0      0 deny log logamount 100 icmp from any to 255.255.255.255 out via xl0

01600    0      0 divert 8668 ip from 192.168.10.0/24 to any out via xl0
Не вызывает удивления что нет исходящего трафика, через NATD?

01700  195  27455 divert 8668 ip from any to 84.52.64.20 in via xl0
Входящий все ок

01800    0      0 deny ip from 10.0.0.0/8 to any out via xl0
01900    0      0 deny ip from 172.16.0.0/12 to any out via xl0
02000    0      0 deny ip from 192.168.0.0/16 to any out via xl0
02100    0      0 deny ip from 0.0.0.0/8 to any out via xl0
02200    0      0 deny ip from 169.254.0.0/16 to any out via xl0
02300    0      0 deny ip from 224.0.0.0/4 to any out via xl0
02400    0      0 deny ip from 240.0.0.0/4 to any out via xl0

02500   20   1512 allow icmp from any to any icmptypes 0,8,11
Надо понимать ping-и проходят  и должны проходить для всей сети

Следующие два правила разрешают локальный трафик внутри локальной сети, все ок, можно и повыше поставить чтобы меньше пакет  блуждал
02600  609  55518 allow ip from any to 192.168.10.0/24 in via nve0
02700   67  10020 allow ip from 192.168.10.0/24 to any out via nve0

02800    4    160 allow tcp from any to any established
тоже самое что и предыдущий.

02900    0      0 allow udp from 84.52.64.20 53 to any out via xl0
Если сей комп не ДНС сервер, тогда зачем эта строка нужна? 

03000  155  10412 allow udp from 84.52.64.20 to any dst-port 53 out via xl0
Этим разрешили исходящие ДНС запросы в сеть, а как ответы принимать?

03100    0      0 allow udp from any to any dst-port 123 via xl0
Для всех  доступен NTP запрос в интернет, а как быть с ответом?
Этим же правилом разрешаем NTP запросы из вне к роутеру, но ответа не дадим так? 

03200   32   1884 deny log logamount 100 tcp from any to 84.52.64.20 in via xl0 setup
Защищаемся от установки TCP соединения с роутером из вне, здорово конечно, только я бы его пониже поставил.

03300    0      0 allow tcp from 84.52.64.20 to any out via xl0 setup
Разрешаем исходящий трафик для роутера, но почему нет пакетов, ни один демон не работает?

03400    0      0 allow tcp from any to 84.52.64.20 in via nve0 setup
А вот что этим правилом разрешается я не понимаю в принципе, конечно здорово из внуренней сети обратиться на внешний интерфейс роутера, только зачем это нужно?

03500 1564 225197 deny ip from any to any
65535    7    528 deny ip from any to any
В сухом остатке:
Для роутера:
TCP только исходящие+ответ на них.
ICMP 0,8,11.
UDP зарублен полностью, кроме DNS, NTP запросы на выход.

Для внутренней сети:
Заперли все наглухо внутри сети, кроме ICMP 0,8,11.

Остается цитировать самого себя
-cat- писал(а):Нет конструкций типа

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

# Разрешаем траффик для серверов
${FwCMD} add allow ip from (192.168.10.5-192.169.10.8 твои сервера) to any via ${LanIn}
${FwCMD} add allow ip from any to (192.168.10.5-192.169.10.8 твои сервера) via ${LanIn} 
без них в NAT ничего не попадет

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: ipfw + squid

Непрочитанное сообщение f0s » 2007-09-21 18:06:10

В общем все здорово. Все заработало (добавил в рц. конф gateway_enable="YES"), чуть подправил правила, и все ок :) сквид раотает, нат работает.. все здорово. единственное, что с днс траблы, почему-то данная конструкция не взлетела:

# Разрешаем DNS

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

${ipfw} add allow udp from any to ${IpOut} 53 in via ${LanOut}
${ipfw} add allow udp from ${IpOut} to any 53 out via ${LanOut}
но взлетела с этим (более обширная):

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

${ipfw} add allow udp from any to any 53
${ipfw} add allow udp from any 53 to any


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


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

[f0s@router] /home/f0s/> ipfw show
00100  0     0 pipe 1 ip from not 192.168.10.0/24 to 192.168.10.0/24
00200  0     0 allow tcp from 84.54.64.22 to 84.52.64.20 dst-port 22 via xl0
00300  0     0 allow tcp from 84.52.64.20 22 to 84.54.64.22 via xl0
00400 80  7212 allow tcp from 192.168.10.0/24 to 192.168.10.7 dst-port 22 via nve0
00500 57  8871 allow tcp from 192.168.10.7 22 to 192.168.10.0/24 via nve0
00600  0     0 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00700  0     0 deny log logamount 100 ip from any to 84.52.64.20 dst-port 139 via xl0
00800  0     0 deny ip from 192.168.10.0/24 to any in via xl0
00900  0     0 deny ip from 255.255.255.240/28 to any in via nve0
01000  0     0 deny ip from any to 10.0.0.0/8 in via xl0
01100  0     0 deny ip from any to 172.16.0.0/12 in via xl0
01200  0     0 deny ip from any to 192.168.0.0/16 in via xl0
01300  0     0 deny ip from any to 0.0.0.0/8 in via xl0
01400  0     0 deny ip from any to 169.254.0.0/16 in via xl0
01500  0     0 deny ip from any to 224.0.0.0/4 in via xl0
01600  0     0 deny ip from any to 240.0.0.0/4 in via xl0
01700  0     0 deny icmp from any to any frag
01800  0     0 deny log logamount 100 icmp from any to 255.255.255.255 in via xl0
01900  0     0 deny log logamount 100 icmp from any to 255.255.255.255 out via xl0
02000  0     0 divert 8668 ip from 192.168.10.0/24 to any out via xl0
02100  0     0 divert 8668 ip from any to 84.52.64.20 in via xl0
02200  0     0 deny ip from 10.0.0.0/8 to any out via xl0
02300  0     0 deny ip from 172.16.0.0/12 to any out via xl0
02400  0     0 deny ip from 192.168.0.0/16 to any out via xl0
02500  0     0 deny ip from 0.0.0.0/8 to any out via xl0
02600  0     0 deny ip from 169.254.0.0/16 to any out via xl0
02700  0     0 deny ip from 224.0.0.0/4 to any out via xl0
02800  0     0 deny ip from 240.0.0.0/4 to any out via xl0
02900  0     0 allow ip from me to any setup
03000  0     0 allow ip from 192.168.10.5 to any setup
03100  0     0 allow ip from 192.168.10.6 to any setup
03200  0     0 allow ip from 192.168.10.8 to any setup
03300 95  7388 allow ip from any to 192.168.10.0/24 in via nve0
03400 85  5692 allow ip from 192.168.10.0/24 to any out via nve0
03500  0     0 allow tcp from any to any established
03600  0     0 allow udp from any to any dst-port 123 via xl0
03700  0     0 allow udp from any 123 to any via xl0
03800  5   240 reject tcp from 192.168.10.0/24 to any via nve0
03900  0     0 allow udp from any to any dst-port 53
04000  0     0 allow udp from any 53 to any
04100  0     0 allow icmp from any to any
04200  0     0 allow udp from any to 192.168.10.0/24 in via nve0
04300  0     0 allow udp from 192.168.10.0/24 to any out via nve0
04400 32 10576 deny log logamount 100 ip from any to any
65535  0     0 deny ip from any to any

вот конифг:

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

[f0s@router] /home/f0s/> cat /etc/rc.firewall
#!/bin/sh
ipfw="/sbin/ipfw   "
#
LanOut="xl0"                    # Внешняя сетевуха
NetOut="255.255.255.240/28"     # внешняя сеть
IpOut="84.52.64.20"             # Внешний IP
#
LanIn="nve0"                    # внутренняя сетевуха
NetIn="192.168.10.0/24"         # Внутренняя сеть
IpIn="192.168.10.7"
#
servers="192.168.10.2,192.168.10.5,192.168.10.6,192.168.10.8" # Серверы локалки которым все можно
ssh="84.54.64.22"               # Кому можно подключаться по ssh
#

###############################################################################

# Очищаем все правила
    ${ipfw} -f flush
    ${ipfw} -f pipe flush
    ${ipfw} -f queue flush

# Не знаю, пригодится ли кому это - по ночам охрана повадилась шариться в инете
# и качать музончик, порнушку смотреть... 3 гига трафика за ночь... Поэтому ночью
# траффик ограничиваем (скорость) - причём жестоко режем :)
# для этого в конфиге ядра должна быть строка
# options         DUMMYNET
# соответственно в crontab надо добавить запись типа sh /etc/rc.firewall
# с запуском в 19.01 и 9.01 :)))
# Также не забудте поставить в sysctl переменную net.inet.ip.fw.one_pass в 0,
# иначе все пакеты будут выпадать из файрволла после трубы - а это дыра.        

    chour=`date '+%H'`
    if [ ${chour} -lt 9 ]; then
     ${ipfw} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${ipfw} pipe 1 config bw 33600 bit/s
    fi
    if [ ${chour} -ge 19 ]; then
     ${ipfw} add pipe 1 ip from not ${NetIn} to ${NetIn}
     ${ipfw} pipe 1 config bw 33600 bit/s
    fi

# Подключаемся по SSH к серверу из инета
    ${ipfw} add allow tcp from ${ssh} to ${IpOut} 22 via ${LanOut}
    ${ipfw} add allow tcp from ${IpOut} 22 to ${ssh} via ${LanOut}

# Подключаемся по SSH к серверу из локалки
    ${ipfw} add allow tcp from ${NetIn} to ${IpIn} 22 via ${LanIn}
    ${ipfw} add allow tcp from ${IpIn} 22 to ${NetIn} via ${LanIn}

# Блокрируем атаки
    ${ipfw} add deny icmp from any to any in icmptype 5,9,13,14,15,16,17
    ${ipfw} add deny log ip from any to ${IpOut} 139 via ${LanOut}

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
    ${FwCMD} add allow ip from any to any via lo0

# рубим попытки 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

# рубим пакеты `типа от внутренней сети, но на внешнем интерфейсе`
    ${ipfw} add deny ip from ${NetIn} to any in via ${LanOut}

# рубим пакеты `типа от внешней сети, но на внутреннем интерфейсе`
    ${ipfw} add deny ip from ${NetOut} to any in via ${LanIn}

# режем частные сети на внешнем интерфейсе
    ${ipfw} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
    ${ipfw} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
    ${ipfw} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
    ${ipfw} add deny ip from any to 0.0.0.0/8 in via ${LanOut}

# рубим автоконфигуреную частную сеть
    ${ipfw} add deny ip from any to 169.254.0.0/16 in via ${LanOut}

# рубаем мультикастовые рассылки
    ${ipfw} add deny ip from any to 224.0.0.0/4 in via ${LanOut}
    ${ipfw} add deny ip from any to 240.0.0.0/4 in via ${LanOut}

# рубим фрагментированные icmp
    ${ipfw} add deny icmp from any to any frag

# рубим широковещательные icmp на внешнем интерфейсе
    ${ipfw} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
    ${ipfw} add deny log icmp from any to 255.255.255.255 out via ${LanOut}

# NAT
    ${ipfw} add divert natd ip from ${NetIn} to any out via ${LanOut}
    ${ipfw} add divert natd ip from any to ${IpOut} in via ${LanOut}

# рубим траффик к частным сетям через внешний интерфейс
    ${ipfw} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
    ${ipfw} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
    ${ipfw} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
    ${ipfw} add deny ip from 0.0.0.0/8 to any out via ${LanOut}

# рубим автоконфигуреную частную сеть
    ${ipfw} add deny ip from 169.254.0.0/16 to any out via ${LanOut}

# рубаем мультикастовые рассылки
    ${ipfw} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
    ${ipfw} add deny ip from 240.0.0.0/4 to any out via ${LanOut}

# Разрешаем выходить в инет серверам по всем портам
    ${ipfw} add allow all from me to any setup
    ${ipfw} add allow all from 192.168.10.5 to any setup
    ${ipfw} add allow all from 192.168.10.6 to any setup
    ${ipfw} add allow all from 192.168.10.8 to any setup

# Разрешаем траффик внутренней сети на внутреннем интерфейсе (вх/исх)
    ${ipfw} add allow ip from any to ${NetIn} in via ${LanIn}
    ${ipfw} add allow ip from ${NetIn} to any out via ${LanIn}

# разрешаем tcp-пакеты по уже установленным соединениям
    ${ipfw} add allow tcp from any to any established

# разрешаем UDP (для синхронизации времени - 123 порт)
    ${ipfw} add allow udp from any to any 123 via ${LanOut}
    ${ipfw} add allow udp from any 123 to any via ${LanOut}

# Запрещем дальнейшее прохождение для всех
    ${ipfw} add reject tcp from ${NetIn} to any via ${LanIn}

# Разрешаем DNS
   ${ipfw} add allow udp from any to any 53
   ${ipfw} add allow udp from any 53 to any

# Разрешаеи ICMP всем
    ${ipfw} add allow icmp from any to any

# Разрешаем UDP во всей сети
    ${ipfw} add allow udp from any to ${NetIn} in via ${LanIn}
    ${ipfw} add allow udp from ${NetIn} to any out via ${LanIn}

# Всем остальным все запрещаем и пишем в лог
    ${ipfw} add deny log all from any to any
[f0s@router] /home/f0s/>
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

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

Re: ipfw + squid

Непрочитанное сообщение dikens3 » 2007-09-22 10:15:13

Если хочешь не выпускать пакеты по 53 порту делай лучше так: (параноидально немного)

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

${ipfw} add allow udp from any to 195.177.122.1,195.177.123.1 53
${ipfw} add allow udp from 195.177.122.1,195.177.123.1 53 to any
или так (me используется):

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

${ipfw} add allow udp from me to 195.177.122.1,195.177.123.1 53
${ipfw} add allow udp from 195.177.122.1,195.177.123.1 53 to me
Можно сократить фаер используя такую же конструкцию приведённую выше:
Заменить:

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

# режем частные сети на внешнем интерфейсе
    ${ipfw} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
    ${ipfw} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
    ${ipfw} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
    ${ipfw} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
На:

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

# режем частные сети на внешнем интерфейсе
    ${ipfw} add deny log ip from any to 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,0.0.0.0/8,224.0.0.0/4,240.0.0.0/4 in via ${LanOut}
И т.д.

P.S. Выход на 123 порт делается аналогично DNS. Предположи, что у тебя есть вирус в сети, который отправляет данные по UDP на удалённый хост и порт 123? Заинтересовало?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.