The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"IPFW NAT - порядок прохождения правил"
Отправлено михалыч, 21-Апр-17 20:08 
рабочий пример правил с сохранением состояний и поддержкой NAT

этот вариант в некотором смысле параноидальный, но, лучше уж перебздеть, чем не добдеть ))

в /etc/rc.conf присутствуют строки


firewall_enable="YES"
firewall_nat_enable="YES"
firewall_type="/etc/ipfw.conf"
defaultrouter="1.2.3.4"

где 1.2.3.4 внешний адрес

создаём файл /etc/ipfw.conf следующего содержания


### очищаем перед загрузкой все правила
-f -q flush


### запрещаем сканирование
add 10 deny tcp from any to any tcpflags syn,fin,ack,psh,rst,urg
add 11 deny tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg
add 12 deny tcp from any to any not established tcpflags fin

### антиспуфинг
add 20 deny ip from any to any not verrevpath in
#add 21 deny ip from any to any not antispoof in

### разрешаем всё на внутреннем интерфейсе
add 100 allow all from any to any via fxp0

### разрешаем всё на петлевом интерфейсе
add 200 allow all from any to any via lo0

### конфигурируем nat 1
nat 1 config if em0 deny_in same_ports unreg_only redirect_port tcp 10.1.10.12:25 25 redirect_port tcp 10.1.10.12:80 80 redirect_port tcp 10.1.10.12:443 443

### трансляция входящих пакетов
add 300 nat 1 all from any to any in recv em0

### проверяем состояние пакета
add 400 check-state

### ========================== ИСХОДЯЩИЙ ТРАФИК ========================== ###

### разрешаем исходящий трафик к DNS серверу провайдера
### x.x.x.x должен быть IP-адресом DNS сервера вашего провайдера
### продублируйте эти строки, если у вас больше одного DNS сервера
### эти IP-адреса можно взять из файла /etc/resolv.conf
#add 500 skipto 800 tcp from any to x.x.x.x 53 out xmit em0 setup keep-state
#add 501 skipto 800 udp from any to x.x.x.x 53 out xmit em0 keep-state

### разрешаем исходящий трафик для DNS
add 500 skipto 800 tcp from any to any 53 out xmit em0 setup keep-state
add 501 skipto 800 udp from any to any 53 out xmit em0 keep-state

### разрешаем исходящий трафик для HTTP
add 510 skipto 800 tcp from any to any 80 out xmit em0 setup keep-state

### разрешаем исходящий трафик для HTTPS
add 511 skipto 800 tcp from any to any 443 out xmit em0 setup keep-state

### разрешаем исходящий трафик для ICMP PING
add 520 skipto 800 icmp from any to any out xmit em0 keep-state

### разрешаем исходящий трафик для SSH
add 530 skipto 800 tcp from any to any 22 out xmit em0 setup keep-state

### разрешаем исходящий трафик для NTP
add 540 skipto 800 udp from any to any 123 out xmit em0 keep-state

### ========================== ВХОДЯЩИЙ ТРАФИК =========================== ###

### запрещаем весь входящий трафик с немаршрутизируемых и серых сетей
add 650 deny all from 192.168.0.0/16  to any in recv em0
add 651 deny all from 172.16.0.0/12   to any in recv em0
add 652 deny all from 10.0.0.0/8      to any in recv em0
add 653 deny all from 127.0.0.0/8     to any in recv em0
add 654 deny all from 0.0.0.0/8       to any in recv em0
add 655 deny all from 169.254.0.0/16  to any in recv em0
add 656 deny all from 192.0.2.0/24    to any in recv em0
add 657 deny all from 204.152.64.0/23 to any in recv em0
add 658 deny all from 224.0.0.0/3     to any in recv em0

### запрещаем MS/Windows сервисы и Netbios службы
### 81=hosts2, 113=ident, 137=name, 138=datagram, 139=session
add 660 deny tcp from any to any 81  in recv em0
add 661 deny tcp from any to any 113 in recv em0
add 662 deny tcp from any to any 137 in recv em0
add 663 deny tcp from any to any 138 in recv em0
add 664 deny tcp from any to any 139 in recv em0

### запрещаем любые фрагментированные пакеты
add 670 deny all from any to any frag in recv em0

### запрещаем не соответствующие динамической таблице правил ACK пакеты
add 680 deny tcp from any to any established in recv em0

### разрешаем входящий трафик для SMTP
add 700 skipto 800 tcp from any to any 25 in recv em0 setup limit src-addr 5

### разрешаем входящий трафик для HTTP
add 701 skipto 800 tcp from any to any 80 in recv em0 setup limit src-addr 5

### разрешаем входящий трафик для HTTPS
add 702 skipto 800 tcp from any to any 443 in recv em0 setup limit src-addr 5

### отбрасываем и заносим в журнал все неразрешенные входящие соединения из глобальной сети
add 750 deny log all from any to any in recv em0

### отбрасываем и заносим в журнал все неразрешенные исходящие соединения в глобальную сеть
add 751 deny log all from any to any out xmit em0

### место для skipto в правилах с сохранением состояния для соединений
add 800 nat 1 all from any to any out xmit em0
add 801 allow ip from any to any

### всё остальное запрещено по умолчанию
### запрещаем и заносим в журнал все пакеты для дальнейшего анализа
add 999 deny log all from any to any

### ============================ END OF FILE ============================= ###


правила 10,11,12, 20, 650-664 паранойя
правило 21 аналогично 20 , но в старых BSD правила 21 нет
в принципе, если есть 20 или 21 то 650-658 не нужны, но паранойя же

в 500 и 501 правилах вместо any 53 лучше указать IP-адрес DNS сервера провайдера

если убрать конфиг для nat выше 300 правила и если 300 правило заменить на

add 300 divert natd all from any to any in recv em0

а 800 правило на

add 800 divert natd all from any to any out xmit em0

то есть переписать их для для использования divert natd,
то можно использовать этот же набор правил ipfw для систем где нет поддержки kernel nat

в таком случае, не забываем скомпилировать ядро с поддержкой IPDIVERT
и в /etc/rc.conf должно быть вместо firewall_nat_enable="YES"


natd_enable="YES"
natd_flags="-f /etc/natd.conf"

и дополнительно необходимо будет создать файл /etc/natd.conf содержащий следующее

interface em0
deny_incoming
same_ports
unregistered_only
redirect_port tcp 10.1.10.12:25 25
redirect_port tcp 10.1.10.12:80 80
redirect_port tcp 10.1.10.12:443 443

переменная
sysctl net.inet.ip.fw.one_pass=1

дальше можно DUMMYNET прикручивать

данный набор правил протестирован с пробросом tcp порта RDP 3389 (в листинге удалён)
есть connect ! ))

такие дела

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру