Muff's website forum
FreeBSd => Система => Тема начата: klaster от Января 20, 2011, 01:17:08 pm
-
Посмотрет у вас, cтатьи по FreeBSD и не обнаружил ipfw firewall.
Просто в нете очень много описание старого происхождения, и голова кружиться все по разному описывают загркзку в rc.conf :
Вот так вобще не загружаеться firewall, неохото просто ядро перекампилировать.
firewall_nat_enable="YES"
dummynet_enable="YES"
Вот так загружаеться :
firewall_enable="YES"
firewall_type="/etc/firewall"
Правила firewall :
# локальный трафик
add allow ip from 127.0.0.0/8 to any via lo0
add allow ip from any to 127.0.0.0/8 via lo0
# разрешить весь исходящий трафик
add allow tcp from me to any keep-state
add allow udp from me to any keep-state
add allow icmp from me to any keep-state
# разрешить провайдер www и https
add allow tcp from 192.168.1.0/24 to me 80,443 keep-state
# разрешить ssh и dns
add allow tcp from 192.168.1.0/24 to me 22,53 keep-state
# запретить остальное
add deny log ip from any to any
Проблема в том что 53 порт всеравно закрыт :
http://www.intodns.com/gipernet.eu
t# netstat -an | grep 53
tcp6 0 0 ::1.953 *.* LISTEN
tcp4 0 0 127.0.0.1.953 *.* LISTEN
tcp4 0 0 127.0.0.1.53 *.* LISTEN
tcp4 0 0 192.168.1.9.53 *.* LISTEN
tcp4 0 0 192.168.1.4.53 *.* LISTEN
В чем может быть причина ??
-
Немножко запутан вопрос....
Так и не понял в чем суть. Толи НАТ, толи файрвол... Итак, по очереди:
Поддержка IPFIREWALL и IPFIREWALL_NAT
Если включить в /boot/loader.conf строку firewall_nat_enable="YES", то НАТ действительно не работает... Модуль не подгружается, необходимо вручную его подгружать. Почему так - не очень заморачивался, поскольку всегда файрвол и его опции компилирую в ядро.
На всякий случай, перечислю опции, которые добавляю в конфиг ядра (те, которые касаются IPFW):
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET
Правила firewall
Я так понимаю, что ты хочешь настроить IPFW в режиме STATEFUL FIREWALL.
Советую изменить блок локальный трафик на такие правила (взято из дефолтного rc.firewall):
# локальный трафик
ipfw add 100 pass all from any to any via lo0
ipfw add 110 deny all from any to 127.0.0.0/8
ipfw add 120 deny ip from 127.0.0.0/8 to any
После этого блока добавь разрешающее правило для keep-state состояний:
# Разрешаем keep-state
ipfw add check-state
Ну, и еще одно замечание. Так понимаю, ты будешь использовать ядерный НАТ. А вот правил в НАТ-а файрволе я не вижу...
-
Помогло для открытия 53 :
add allow tcp from any to me 53
add allow udp from any to me 53
Но хотелось бы по интересоваться это же мощный фаерфол, и получаеться если у меня будет стоять в одной локалке dns и майл сервер, мониторинг итд. То портик будет считаться открыт для всех машин, что очень бы не хотелось. Как реализовать такую задачу ?
Пример :
- 192.168.1.5 Freebsd ipfw
- 192.168.1.10 dns только 53 и 22
- 192.168.1.20 Apache 80 22
- 192.168.1.30 Mail 25 110 143
Что ти по такого ??
Да еще если в конфиге для nat прописать вот так rc.conf :
firewall_nat_enable="YES"
dummynet_enable="YES"
На возможность конфигурации сильно повлияет ?
-
Я так понял, что необходимо дать доступ в Интернет внутренней сети 192.168.1.0/24 и разрешить этой сети доступ на порты 22, 80 и 53. Ядро собрано с поддержкой IPFW (необходимые опции я перечислил в предыдущем посте).
От этого задания и будем отталкиваться.
Небольшое лирическое отступление...
SSH работает на порту 22 по протоколу TCP. Web работает на 80 порту и тоже по TCP. А вот с ДНС не все так просто... Клиентские запросы "бегают" по UDP, порт 53. А по TCP выполняется только трансфер зон между серверами. Кстати, в выводе netstat указано, что открыты только порты TCP, что меня немного смущает. В моем случае, при работающем DNS-сервере вывод netstat получается такой:
# netstat -an | grep 53
tcp4 0 0 127.0.0.1.953 *.* LISTEN
tcp4 0 0 172.20.0.1.53 *.* LISTEN
tcp4 0 0 10.200.0.1.53 *.* LISTEN
tcp4 0 0 195.3.158.206.53 *.* LISTEN
tcp4 0 0 127.0.0.1.53 *.* LISTEN
udp4 0 0 172.20.0.1.53 *.*
udp4 0 0 10.200.0.1.53 *.*
udp4 0 0 195.3.158.206.53 *.*
udp4 0 0 127.0.0.1.53 *.*
Для превращения сервера в роутер, необходимо разрешить пересылку пакетов между сетевыми интерфейсами. Для этого необходимо наличие в rc.conf такой строки:
gateway_enable="YES"
Разрешить пересылку пакетов "на ходу", не перезагружая сервер можно через параметр sysctl:
sysctl net.inet.ip.forwarding=1
Вернемся к файрволу...
Исходя из задания, в rc.firewall вставим такой блок (простенький файрвол, который клиентской сети и роутеру разрешает сетевой обмен без ограничений, и накладывает ограничения на доступ к роутеру):
[Rr][Oo][Uu][Tt][Ee][Rr])
net="192.168.1.0/24"
# Allow me
${fwcmd} add pass udp from me to any 53 keep-state
${fwcmd} add pass all from me to any
# Allow ICMP to me
${fwcmd} add pass icmp from any to me icmptypes 0,3,8,11
# Allow incoming setup
${fwcmd} add pass tcp from ${net} to me 22 setup
${fwcmd} add pass tcp from ${net} to me 80 setup
# Allow DNS
${fwcmd} add pass udp from ${net} to me 53
# Allow established TCP
${fwcmd} add pass all from any to me established
# Allow internal network
${fwcmd} add pass all from ${net} to not me
${fwcmd} add pass all from not me to ${net}
# Deny all to me
${fwcmd} add deny all from any to me
Вроде с правилами нигде не оплошал (не проверял именно эту конфигурацию на тестовой машине). По идее должно все работать...
Далее настраиваем НАТ по этой статье (PF): http://muff.kiev.ua/content/nat-realizatsiya-s-pomoshchyu-pf (http://muff.kiev.ua/content/nat-realizatsiya-s-pomoshchyu-pf).
Применяем все правила файрвола, описанные в блоке "ROUTER":
# sh /etc/rc.firewall ROUTER
Если файрвол работает нормально, применяем правила при загрузке системі, добавляя следующий блок в rc.conf:
# Firewall
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="ROUTER"
Теперь комментарии по предыдущему посту...
Так понимаю, была попытка запустить natd... Так вот, выиграш IPFW NAT в том, что он работает только на ресурсах ядра, без запуска natd. Так что о natd советую пока забыть.
По вопросам:
Что необходи поставить rc.conf для ipfw + nat ?
По поводу IPFW уже отписался выше. Если НАТить будете (для начала) с помощью PF, то в статье все описано. Если НАТ-ить хотите с помощью ядерного НАТ-а, то необходимо просто добавить необходимые правила в rc.firewall.
Почему когда я ставлю в свой файл firewall,ipfw вперед он жалуеться и зависает ?
А вот здесь я мало что понял, в основном только догадки... Если у вас отдельный файл с правилами файрвола, то советую вначале файла вставить такой блок:
#!/bin/sh
setup_loopback () {
${fwcmd} add 5 pass all from any to any via lo0
${fwcmd} add 5 deny all from any to 127.0.0.0/8
${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}
fwcmd="/sbin/ipfw -q"
А потом уже все свои правила начинать с ${fwcmd}. Например:
${fwcmd} add 15 deny all from "table(5)" to any
Что не хватает правилу чтоб открыть 53 порт? 22 и 80 работают нормально с этими правилами
По ходу я вначале описал разницу. По 53 порту у тебя будет бегать только UDP трафик. Вряд ли, что у тя будет выполняться трансфер зон.
-
По поводу пересборки ядра, не стал пока тратить время включил в rc.conf :
firewall_enable="YES"
firewall_type="/etc/firewall.conf"
firewall_nat_enable="YES"
dummynet_enable="YES"
gateway_enable="YES"
IPFW работает, nat еще не проверял.
А вот здесь я мало что понял, в основном только догадки... Если у вас отдельный файл с правилами файрвола, то советую вначале файла вставить такой блок:
#!/bin/sh
setup_loopback () {
${fwcmd} add 5 pass all from any to any via lo0
${fwcmd} add 5 deny all from any to 127.0.0.0/8
${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}
fwcmd="/sbin/ipfw -q"
А потом уже все свои правила начинать с ${fwcmd}. Например:
${fwcmd} add 15 deny all from "table(5)" to any
Так вот если я вставляю в свой файл firewall.conf :
#!/bin/sh
setup_loopback () {
${fwcmd} add 5 pass all from any to any via lo0
${fwcmd} add 5 deny all from any to 127.0.0.0/8
${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}
fwcmd="/sbin/ipfw -q"
et="192.168.1.0/24"
# Allow me
${fwcmd} add 10 pass udp from me to any 53 keep-state
${fwcmd} add 20 pass all from me to any
# Allow ICMP to me
${fwcmd} add 30 pass icmp from any to me icmptypes 0,3,8,11
# Allow incoming setup
${fwcmd} add 40 pass tcp from ${net} to me 22 setup
${fwcmd} add 50 pass tcp from ${net} to me 80 setup
# Allow DNS
${fwcmd} add 60 pass udp from ${net} to me 53
# Allow established TCP
${fwcmd} add 70 pass all from any to me established
# Allow internal network
${fwcmd} add 80 pass all from ${net} to not me
${fwcmd} add 90 pass all from not me to ${net}
# Deny all to me
${fwcmd} add deany all from any to me
То получаю вот это :
gipernet# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
net.inet6.ip6.fw.enable: 1 -> 0
Flushed all rules.
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 deny ip from any to ::1
00500 deny ip from ::1 to any
Line 2: bad command `setup_loopback'
Firewall rules loaded.
И зависаю .
Хотел бы у вас узнать как лучше, в своем файле создовать или редактировать rc.firewall в котором полным полно уже правил ??
-
Я в rc.firewall создаю свой блок и запускаю его. При запуске файрвола указываю, какой именно блок правил необходимо выполнить.
-
Я в rc.firewall создаю свой блок и запускаю его. При запуске файрвола указываю, какой именно блок правил необходимо выполнить.
Я так понемаю что в rc.conf пишете : // Что то вродке такого ?
firewall_type= (client, open, simple......)
Хотел бы уточнить я прокомпилил ядро с такими параметрами :
# Firewall IPFW NAT
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET
options HZ="1000"
Не могу понять почему нету файла etc/natd.conf или его необходимо самому создовать?
-
Посмотрите предыдущие посты. Не используйте natd. Если не хотите использовать PF, то воспользуйтесь возможностями ядерного НАТ-а. Просто необходимо вписать правила НАТ-а среди ваших правил.
Вырезка из man ipfw по поводу организации НАТ-а:
NAT, REDIRECT AND LSNAT
First redirect all the traffic to nat instance 123:
ipfw add nat 123 all from any to any
Then to configure nat instance 123 to alias all the outgoing traffic with
ip 192.168.0.123, blocking all incoming connections, trying to keep same
ports on both sides, clearing aliasing table on address change and keep-
ing a log of traffic/link statistics:
ipfw nat 123 config ip 192.168.0.123 log deny_in reset same_ports
Or to change address of instance 123, aliasing table will be cleared (see
reset option):
ipfw nat 123 config ip 10.0.0.1
To see configuration of nat instance 123:
ipfw nat 123 show config
To show logs of all the instances in range 111-999:
ipfw nat 111-999 show
To see configurations of all instances:
ipfw nat show config
Or a redirect rule with mixed modes could looks like:
ipfw nat 123 config redirect_addr 10.0.0.1 10.0.0.66
redirect_port tcp 192.168.0.1:80 500
redirect_proto udp 192.168.1.43 192.168.1.1
redirect_addr 192.168.0.10,192.168.0.11
10.0.0.100 # LSNAT
redirect_port tcp 192.168.0.1:80,192.168.0.10:22
500 # LSNAT
or it could be splitted in:
ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66
ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500
ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
ipfw nat 4 config redirect_addr
192.168.0.10,192.168.0.11,192.168.0.12
10.0.0.100
ipfw nat 5 config redirect_port tcp
192.168.0.1:80,192.168.0.10:22,192.168.0.20:25 500
-
Подскажите пожалуйста.
Не получаеться настроить Локалку.
Ситуация такая, две сетевых карты одна внешняя другая внутреняя :
rl0= 91.91.91.91
rl1= 192.168.1.1
Проблема в том что я немогу выйти в нет через локалку.
FreeBsd машина на которую приходит провайдерский кабель выходит в интернет без проблем, а вот вторая сетевая карта каторая подклученно к этой машине и должна довать выход в нет или пинговать какую нибудь машину в локалке заканчиваеться тем что не один пакет не доходит. Я пробывал выключать firewall вообще, команду вводил полный доступ для ipfw. Ни чего не получаеться, на правило мне всеравно, настроить и потом все можно, но вот почему выхода в нет нету.
rc.conf :
ifconfig_nfe0="ether 00:22:6B:xx:xx:xx"
ifconfig_rl0_alias0="91.91.91.91 netmask 255.255.254.0 -rxcsum"
defaultrouter="94.101.226.1"
ifconfig_rl1="inet 192.168.1.1 netmask 255.255.255.0"
hostname="gip"
firewall_enable="YES"
firewall_type="/etc/firewall.conf.bak
#firewall_nat_enable="YES"
#dummynet_enable="YES"
gateway_enable="YES"
#natd_enable="YES"
#natd_inteface="nfe0"
#natd_flags="-f /etc/natd.conf"
Вот это правила firewall.conf.bak :
# локальный трафик
#add allow ip from 127.0.0.0/8 to any via lo0
#add allow ip from any to 127.0.0.0/8 via lo0
#add check-state
# разрешить весь исходящий трафик
add allow tcp from me to any keep-state
add allow udp from me to any keep-state
add allow icmp from me to any keep-state
# разрешить провайдер www и https
add allow tcp from 192.168.1.1/24 to me 80,443 keep-state
# разрешить ssh
add allow tcp from 192.168.1.1/24 to me 22 keep-state
# разрешить dns
add allow tcp from any to me 53
add allow udp from any to me 53
#add deny udp from 192.168.1.4 to 192.168.1.1 via rl0
# mail pop imap smtp
add allow tcp from any to me 25
add allow tcp from any to me 110
add allow tcp from any to me 143
#add allow tcp from 192.168.1.4 to me 110 keep-state
#add allow tcp from 192.168.1.4 to me 143 keep-state
# запретить остальное
add deny log ip from any to any
Помогите пожалуйста.
-
Я напишу свой метод с помощью каторого я завел локалку, теперь необходимо нарашивать правила, в кратце IPFW NAT :
rc.conf
ifconfig_rl0="ether 00:22:6B:xx:xx:xx" //Если кому необходимо сменить
ifconfig_rl0_alias0="91.91.91.91 netmask 255.255.255.0 -rxcsum" // Нет
defaultrouter="91.91.91.1" // Роутер провайдера
ifconfig_rl1="inet 192.168.1.1 netmask 255.255.255.0" // Локал
firewall_enable="YES" // Включаем IPFW
firewall_nat_enable="YES" // Включаем NAT
firewall_type="/etc/firewall" // Скрипт правил
dummynet_enable="YES"
gateway_enable="YES" // Шлюз
firewall_logging="YES"
firewall_type="/etc/firewall"
add 10 allow ip from any to any via rl1
nat 1 config log ip 91.91.91.91 reset same_ports
add 100 nat 1 ip from any to any via rl0
natd.conf
same_ports yes
use_socket yes
На этом настройка локалки заканчиваеться, для дальнейшего действие вводите правила.
ВСЕМ ОГРОМНОЕ СПАСИБО
-
:o Доброго дня , подскажите новичку , как можно проверить , работает ли нат на конкретном интерфейсе ?
-
Здравствуйте....
Как реализовывали НАТ? Просьба создать новую тему и предоставить вывод ifconfig и то, как реализован НАТ. Тогда смогу подсказать уже более конкретно.