Добрый день!
Пытаюсь настроить файрвол таким образом что бы по умолчаию у него стоял запрет и разрешить только нужные порты!
Так же сервер является шлюзом в интернет т.е. я включаю нат ! Но у меня не получается настроить!
Я облазил весь интернет делал как написано и свой конф состовлял !
Проблема следующая работает если файрвол открытый, но это не то что нужно по моей задаче, лиюо закрытый но тогда перестает работать нат!
Помогите с моим конфигурационным скриптом:
#!/bin/sh
#### Источник https://www.freebsd.org/doc/ru/books/handbook/firewalls-ipfw...
############### Начало файла с правилами IPFW ###############################
# Сброс всех правил перед началом работы скрипта.
/sbin/ipfw -q -f flush
/sbin/ipfw -q -f nat flush# Префикс для создания правил
CMD="/sbin/ipfw add" # командаPIF_OUT="em0" # имя сетевой карты, которая смотрит в Интернет
PIF_IN="em1" # имя внутренней карты########################
# Секция безопасности
########################
# Запрет X-сканирования/sbin/ipfw nat 1 config if ${PIF_OUT} log
echo start
ipfw list
echo go
#${CMD} 00006 nat 1 ip from any to any via ${PIF_OUT} keep-state${CMD} 00030 reject log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg via ${PIF_OUT}
## Запрет N-сканирования:
${CMD} 00040 reject log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg via ${PIF_OUT}
## Запрет FIN-сканирования:
${CMD} 00050 reject log tcp from any to any not established tcpflags fin via ${PIF_OUT}
## Защита от спуфинга (подмена адреса отправителя)
${CMD} 00060 deny log ip from any to any not verrevpath in via ${PIF_OUT}
# Ограничение числа одновременных соединений:
${CMD} 00070 allow ip from any to any setup limit src-addr 50
### ${CMD} 00060 allow ip from any to any via ${PIF_IN}
### ${CMD} 00070 nat 1 ip from any to any via ${PIF_OUT} keep-state# Разрешаем исходящую функцию отправки и приема почты
#${CMD} 00225 allow tcp from any to any 25 out via ${PIF_OUT}
#${CMD} 00227 allow tcp from any to any 110 out via ${PIF_OUT}
# Разрешаем исходящий пинг
${CMD} 00250 allow icmp from me to any via ${PIF_OUT} keep-state
# Разрешаем исходящий Time
${CMD} 00255 allow all from any to any 123 out via ${PIF_OUT}# Разрешить исходящий трафик к DNS серверу провайдера
# Продублируйте эти строки, если у вас больше одного DNS сервера
# Эти IP адреса можно взять из файла /etc/resolv.conf
${CMD} 00110 allow tcp from me to any 53 via ${PIF_OUT} keep-state
${CMD} 00111 allow udp from me to any 53 via ${PIF_OUT} keep-state#### разрешить ДНС
#${CMD} 00100 allow udp from me to any 53 out via ${PIF_OUT}
# разрешить http
${CMD} 00200 allow tcp from any to any 80 out via ${PIF_OUT} setup keep-state
# разрешить https
${CMD} 00300 allow tcp from any to any 443 out via ${PIF_OUT} setup keep-state
# разрешить ssh
${CMD} 00400 allow tcp from any to any 22 out via ${PIF_IN} setup keep-state
${CMD} 00401 allow tcp from any to any 2233 via ${PIF_IN} setup keep-state# Запрещаем весь входящий траффик из зарезервированных адресных пространств по внешней сети
${CMD} 01301 deny all from 192.168.0.0/16 to any in via ${PIF_OUT} #RFC 1918 private IP
${CMD} 01301 deny all from 172.16.0.0/12 to any in via ${PIF_OUT} #RFC 1918 private IP
${CMD} 01302 deny all from 10.0.0.0/8 to any in via ${PIF_OUT} #RFC 1918 private IP
${CMD} 01303 deny all from 127.0.0.0/8 to any in via ${PIF_OUT} #loopback
${CMD} 01304 deny all from 0.0.0.0/8 to any in via ${PIF_OUT} #loopback
${CMD} 01305 deny all from 169.254.0.0/16 to any in via ${PIF_OUT} #DHCP auto-config
${CMD} 01306 deny all from 192.0.2.0/24 to any in via ${PIF_OUT} #reserved for docs
${CMD} 01307 deny all from 204.152.64.0/23 to any in via ${PIF_OUT} #Sun cluster interconnect
${CMD} 01308 deny all from 224.0.0.0/3 to any in via ${PIF_OUT} #Class D & E multicast
# ${CMD} 01309 check-state
# запретить все по умолчанию
# Запрещаем и заносим в журнал все пакеты для дальнейшего анализа
# Запрещаем пинг извне
#${CMD} 00310 deny icmp from any to any in via ${PIF_OUT}:!# Запрещаем ident
#${CMD} 00315 deny tcp from any to any 113 in via $pif# Запрещаем все Netbios службы. 137=name, 138=datagram, 139=session
# Netbios это MS/Windows сервис обмена.
# Блокируем MS/Windows hosts2 запросы сервера имен на порту 81
${CMD} 00320 deny tcp from any to any 137 in via ${PIF_OUT}
${CMD} 00321 deny tcp from any to any 138 in via ${PIF_OUT}
${CMD} 00322 deny tcp from any to any 139 in via ${PIF_OUT}
${CMD} 00323 deny tcp from any to any 81 in via ${PIF_OUT}# Запрещаем любые опоздавшие пакеты
${CMD} 00330 deny all from any to any frag in via ${PIF_OUT}# Запрещаем ACK пакеты, которые не соответствуют динамической таблице правил.
#${CMD} 00332 deny tcp from any to any established in via ${PIF_OUT}
# Ра�азре�шить НАТ
${CMD} 00021 allow ip from any to any via ${PIF_IN}
${CMD} 00020 nat 1 ip from xxx.xxx.xxx.xxx/24 to any via ${PIF_OUT} keep-state # вместо xxx у меня ip
#${CMD} 00011 deny ip from any to any via ${PIF_OUT}
#${CMD} 10000 deny log ip from any to any
#${CMD} 00060 nat 1 ip from any to any via ${PIF_OUT} keep-state
################ Конец файла правил IPFW ###############################В какую сторону копать ? (Что бы был запрет по умалчанию deny any to any но при этом с локалки я бы ходил в интернет по 443 и 80 порту - кончено и 53!)
> Добрый день!
> Пытаюсь настроить файрвол таким образом что бы по умолчаию у него стоял
> запрет и разрешить только нужные порты!хм?!
> Так же сервер является шлюзом в интернет т.е. я включаю нат !шлюз может быть и без НАТа.
> Проблема следующая работает если файрвол открытый, но это не то что нужно
> по моей задаче, лиюо закрытый но тогда перестает работать нат!Хинт. Фаервол работает в друх режимах: 1) открыть все - закрыть выборочно 2) закрыть все - открыть выборочно
начни с осознания этого.> ${CMD} 00030 reject log tcp from any to any tcpflags fin, syn,
> rst, psh, ack, urg via ${PIF_OUT}мда, видимо ipfw rules для тебя лишь загадочные символы.
> ## Запрет N-сканирования:
> ## Запрет FIN-сканирования:
> ## Защита от спуфинга (подмена адреса отправителя)из хауту всяких понадергал?
> keep-state
мож сначала научится поднимать примитивный статический фаер?
> В какую сторону копать ? (Что бы был запрет по умалчанию deny
> any to any но при этом с локалки я бы ходил
> в интернет по 443 и 80 порту - кончено и 53!)копать нужно:
1)в сторону матчасти по сетевым протоколам для начала, с основ
2) потом копать с сторону мануалов конкретного фаервола, ipfw в данном случае
3) дергать рецепты из хауту и пытаться переставлять их местами с надеждой, что случится чудо, не стоитПыСы: ipfw настолько облизанная, обсосанная, разжеванная, переваренная тема, что объяснять ее с нуля никто не будет, особенно учитывая твои потуги по копипасту конфигов.
> ПыСы: ipfw настолько облизанная, обсосанная, разжеванная, переваренная тема, что ...простите, что встряну... но не настолько. когда во фре окончательно сломали ipnat - пришлось разбираться с непривычным ipfw nat и модифицировать свои правила разрешений/запретов, проброса портов, one/two pass, порядок правил, и т.д., и т.п. - я бы не сказал, что всё обсосано и есть универсальные рецепты. пришлось разбираться и перепиливать конфиг несколько раз, убеждаясь, что половина хауту не работает как надо.
>> ПыСы: ipfw настолько облизанная, обсосанная, разжеванная, переваренная тема, что ...
> простите, что встряну... но не настолько. когда во фре окончательно сломали ipnat
> - пришлось разбираться с непривычным ipfw nat и модифицировать свои правила
> разрешений/запретов, проброса портов, one/two pass, порядок правил, и т.д., и т.п.
> - я бы не сказал, что всё обсосано и есть универсальные
> рецепты. пришлось разбираться и перепиливать конфиг несколько раз, убеждаясь, что половина
> хауту не работает как надо.${ipfw_cmd} nat 1 config ip ${oip} unreg_only \
redirect_port tcp 192.168.0.2:8081 8081
${ipfw_cmd} add nat 1 all from any to any via ${oif}действительно, ядреный нат во фре это сложно ...
> действительно, ядреный нат во фре это сложно ...а, так Вы о сферическом нате в вакууме... я и не понял сразу. и звените :)
>> действительно, ядреный нат во фре это сложно ...
> а, так Вы о сферическом нате в вакууме... я и не понял
> сразу. и звените :)решение таки линейное, а не сферическое, и снято с реального железа :)
ваши задачи не решаются подобным образом?
мои задачи решались не этими двумя простейшими правилами, а перелопачиванием остальной сотни строк с pass/deny/fwd/skipto вокруг этих двух.
> мои задачи решались не этими двумя простейшими правилами, а перелопачиванием остальной
> сотни строк с pass/deny/fwd/skipto вокруг этих двух.думаю что это были сотни простейших правил, логика да, может, а правила всегда простейшие в ipfw ....
и да, хочу дополнить предыдущий комментарий - конфигурационный скрипт - это здорово, хорошо и замечательно. но! написанный скрипт и текущие правила - не есть одно и то же. так что лучше приводить вывод ipfw show и ipfw nat show config.