Документация по ОС FreeBSD
Вторник, 04.11.2025, 21:54
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
IPFW
[58]
Главная
»
Статьи
»
FireWall
»
IPFW
Firewall
Простой пример для домашнего маршрутизатора инета.
Добавить в ядро:
options IPFIREWALL
Если нужен прозрачный Proxy, то вроде нужно ещё это:
options IPFIREWALL_FORWARD
options DIVERT
Если нужно ограничить полосу, то нужно добавить ещё это:
options DUMMYNET
Если нужно вести лог по
ipfw
, то необходимо ещё и это:
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
Если нужно, чтоб были видны имена машин из разных сегментов (NetBIOS):
options BRIDGE
Пересобираем ядро. Перезагружаемся.
Заходим в систему и узнаем, что сеть недоступна в любых вариантах:
ipfw -a list
Команда выводит на экран список правил. (маршрутов)
Если неичего ещё не настроено, то вы увидите только одну едиственную строку:
65535 0 0 deny ip from any to any
65535 - это номер правила. Затем два числа(0 0) - это количество обработанных
пакетов этим правилом на момент выполнения команды
ipfw -a list
.
Теперь можно приступать к написанию своих маршрутов.
файл /etc/defaults/rc.conf
gateway_enable=YES
firewall_enable=YES
firewall_script="/etc/rc.firewall"
Правла выполняются
сверху вниз
. Поэтому, если вы вначале списка
разрешите доступ куда-либо сегменту локальной сети (например сеть 192.168.1.0),
а затем для отдельных IP адресов из этой сети будете закрывать доступ или
ограничивать полосу (DUMMYNET), то ничего не получится.
Пакет получит разрешение и благополучно уйдет, недойдя до правил
запретов и ограничений.
файл /etc/rc.firewall
#Удаляет все предыдущие правила. (кроме 65535)
ipfw -f flush
#ограничить полосу на интерфейсе:
ipfw add 20 pipe 1 ip from any to any via ed0
#параметры для 20 правила:
ipfw pipe 1 config bw 14Kbit/s
Также можно ограничить полосу для отдельного IP,
отдельно на вход и/или отдельно на выход
более подробно: man dummynet
#Запретить фрагментированные пакеты
ipfw add 80 deny icmp from any to any frag
ipfw add 81 allow icmp from any to any
#Нужно для прозрачного прокси
ipfw add 90 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to 0.0.0.0/0 80
#Разрешаем работу на интерфейсах.
#Ниже приведены примеры "Разрешено для всех"
# Ну т.е. сегмет сети подключеный к
rl0
будет
# доступен сегменту подключеному к
ed0
и наоборот.
# Решайте сами.
ipfw add 100 pass all from any to any via lo0
ipfw add 101 pass all from any to any via rl0
ipfw add 102 pass all from any to any via ed0
#если больше ничего не планируется, то собственно и всё.
#Нужно выйти в инет, тогда добавим следубщие правила:
#Пропускать на соответствующие порты
ipfw add 510 allow udp from any to any 53
ipfw add 511 allow udp from any 53 to any
# также добавить для портов 123 (если нужно)
ipfw add 710 allow tcp from any to any 80
ipfw add 711 allow tcp from any 80 to any
ipfw add 712 allow tcp from any to any 25
ipfw add 713 allow tcp from any 25 to any
ipfw add 714 allow tcp from any to any 110
ipfw add 715 allow tcp from any 110 to any
# также добавить для портов 20,21,443
...
Файл /etc/rc.firewall можно сделать выполняемым.
Тогда, добавив/удалив очередное правило, можно просто перезапустить весь список.
Удобно при отлаке маршрутов.
Вот так выглядит окончательный вариант для двух сетевых карточек.
(без NAT)
ipfw -f flush
ipfw add 100 pass all from any to any via lo0
ipfw add 200 deny all from any to 127.0.0.0/8
ipfw add 300 deny ip from 127.0.0.0/8 to any
#ipfw add 310 pipe 1 all from 192.168.1.1/32 to any
#ipfw add 320 pipe 1 all from any to 192.168.1.1/32
#ipfw pipe 1 config bw 2400bit/s
#Transparent proxy
ipfw add 400 fwd 192.168.0.10,3128 tcp from 192.168.0.0/24 to 0.0.0.0/0 80
# Allow any traffic to or from my own net.
ipfw add 450 pass all from 192.168.0.0/24 to 192.168.0.10 via fxp0
ipfw add 460 pass all from 192.168.0.10 to 192.168.0.0/24 via fxp0
ipfw add 470 pass all from 192.168.1.1 to 192.168.1.0/24 via rl0
ipfw add 480 pass all from 192.168.1.0/24 to 192.168.1.1 via rl0
# Allow TCP through if setup succeeded
#ipfw add pass tcp from any to any established
# Allow IP fragments to pass through
ipfw add 500 deny all from any to any frag
# Allow setup of incoming email
ipfw add 510 pass tcp from any to any 25,110,119
ipfw add 520 pass tcp from any 25,110,119 to any
# Alert 22 port
ipfw add 530 pass tcp from any to any 20,21,22,80,443
ipfw add 540 pass tcp from any 20,21,22,80,443 to any
ipfw add 550 pass tcp from any to any 8000-8888
ipfw add 560 pass tcp from any 8000-8888 to any
# Allow setup of outgoing TCP connections only
#ipfw add pass tcp from ${ip} to any setup
# Disallow setup of all other TCP connections
#ipfw add deny tcp from any to any setup
# Allow DNS queries out in the world
ipfw add 600 pass udp from any to any 53,123
ipfw add 610 pass udp from any 53,123 to any
# Allow NTP queries out in the world
#ipfw add pass udp from ${ip} to any 123 keep-state
ipfw add 700 deny icmp from any to any frag
ipfw add 710 allow icmp from any to any
ipfw add 720 deny all from 192.168.0.0/24 to 192.168.0.10
ipfw add 730 deny all from 192.168.0.10 to 192.168.0.0/24
ipfw add 65000 deny all from any to any
Категория:
IPFW
| Добавил:
oleg
(23.10.2007)
Просмотров:
1954
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025