ipfw rules

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
io
рядовой
Сообщения: 23
Зарегистрирован: 2007-01-11 21:39:55
Контактная информация:

ipfw rules

Непрочитанное сообщение io » 2007-01-21 13:25:52

подскажите, ато запутался. как будут выглядеть правила правильнее.

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

ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 10.9.0.1 netmask 0xffffff00 broadcast 10.9.0.255
        inet 10.9.0.2 netmask 0xffffff00 broadcast 10.9.0.255
        ether 00:a0:d2:a4:2b:e7
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 1.1.1.1 netmask 0xfffffffc broadcast 213.24.84.231
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        ether 00:30:84:27:9c:df
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 1.1.1.1 --> 213.24.85.1 netmask 0xffffffff
        Opened by PID 27743
10.0.0.0 подсеть в которую воткнут модем бриджем.
10.9.0.0 локалка
1.1.1.1 внешний ип.

мучался с дивертом, работать стало в таком состоянии


$ipfw add 0030 divert 8888 ip from 10.9.0.0/24 to not 10.9.0.0/24 via tun0
$ipfw add 0032 divert 8888 ip from any to 1.1.1.1 via tun0
не пойму, как закрыть всё на внешнем ипе и открыть только нужное

ipfw add pass tcp from any to 1.1.1.1 80,53,110,25 via tun0
ipfw add deny ip from any to any via tun0

не работает, и via rl1
тоже

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
FreePascal
сержант
Сообщения: 245
Зарегистрирован: 2006-05-14 8:50:05
Контактная информация:

Непрочитанное сообщение FreePascal » 2007-01-21 18:31:08

Если только для TCP то гдето так:

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

#Разрешаете все установленные соединения
ipfw add allow tcp from any to any established
#Разрешаете устанавливать исходящие соединения на внешнем инфейсе(флаг SYN)
ipfw add allow tcp from 1.1.1.1 to any 80,53,110,25 out via tun0 setup

#Для внутреннего инфейса разрешаете все, ну если доверяете
ipfw add allow tcp from any to any via rl1
#Запрещаем все чего не разрешено
ipfw add deny tcp from any to any
З.Ы. 53 порт ето ДНС, как я знаю, работает по протоколу UDP, в даной конфигурации
имена определяться не будут ну если вы его точно для ДНС используете :D !!!!!!

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

Непрочитанное сообщение dikens3 » 2007-01-22 12:22:41

Определимся?
Если подключение к прову через PPPoE и т.п. NATD не нужен. (Как собственно и IP-Адрес на внешнем интерфейсе)
UDP тоже нужно закрыть, нужен только DNS. НУ и мелочи, traceroute к примеру.

Продумай схему:
1. Шлюзу наружу может соединяться, куда? (Можно разрешить всё, не взломают, проблем не будет)
2. Кто может подключаться к шлюзу из инета? (Лучше никто)
3. Кто может выходить в инет? (Твои пользователи)
4. Кому можно возвращать пакеты(Те же пользователи)

Реальный пример с реально-действующего сервера с подключением PPPoE.

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

#!/bin/sh -

echo "Перезапуск Файрвола" | /usr/bin/logger -t FIREWALL

SDIR=/var/log/savefirewall

NAME=$(date -v -0d "+%Y-%m-%d")
NAME2=$(date "+%H-%M")

/sbin/ipfw -ad l | gzip -c > $SDIR/$NAME..$NAME2.gz

iflan="rl0"
ifinet="rl1"
inetip="82.208.x.x"
mylan="192.168.x.x/24"
mytun="tun*"
mydns="IP-Адрес DNS1, IP-Адрес DNS2"
portusers="53,110,443,3120,5190"

# 1 таблица, куда нельзя ходить
fwtable="/sbin/ipfw table"
${fwtable} 1 f
NETS=" 0.0.0.0/8 10.0.0.0/8 172.16.0.0/12 169.254.0.0/16 192.0.2.0/24 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4 "
for lan in ${NETS}
    do
        ${fwtable} 1 add $lan
    done

## 3 таблица, кому можно ходить ( Не забываем про MAC адреса !!! )
fwtable="/sbin/ipfw table"
${fwtable} 3 f
users=" 192.168.x.100 192.168.x.101 "

for lan in ${users}
    do
        ${fwtable} 3 add $lan
    done

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

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush

# Считаем траффик
        ${fwcmd} add count all from any to any in via tun*
# Пускаем lo
        ${fwcmd} add pass all from any to any via lo0
# Прибиваем приколы lo
        ${fwcmd} add deny all from any to 127.0.0.0/8
        ${fwcmd} add deny ip from 127.0.0.0/8 to any
# Пускаем Нашу сеть
        ${fwcmd} add pass all from any to any via ${iflan}
# Переходим к проверке входящего траффика
        ${fwcmd} add skipto 10000 all from any to me in via ${mytun}
# Переходим к проверке исходящего траффика
        ${fwcmd} add skipto 15000 all from me to any out via ${mytun}
# Переходим к проверке пользователей
        ${fwcmd} add skipto 20000 all from any to any
# Переходим к проверке на входящий траффик на неработающем интерфейсе
        ${fwcmd} add skipto 25000 all from any to any in via ${ifinet}

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

# Входящий траффик с интернета
#
# Прибиваем ненужный траффик
        ${fwcmd} add 10000 deny log all from table\(1\) to me in via ${mytun}
# Пропускаем ICMP-только нужные
        ${fwcmd} add pass icmp from any to me in via ${mytun} icmptype 0,11 limit src-addr 10
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add pass all from any to me in via ${mytun} established
# Разрешаем входящие UDP DNS пакеты
        ${fwcmd} add pass udp from ${mydns} 53 to me in via ${mytun}
# log
        ${fwcmd} add deny log all from any to any

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

# Исходящий траффик в интернет
#
# Прибиваем ненужный траффик
        ${fwcmd} add 15000 deny log all from ${inetip} to table\(1\) out via ${mytun}
# Прибиваем ненужные порты наружу
        ${fwcmd} add deny all from ${inetip} to any 137-139,445 out via ${mytun}
# Наружу серверу всё остальное разрешено
        ${fwcmd} add pass all from ${inetip} to any out via ${mytun}
# log
        ${fwcmd} add deny log all from any to any

########################################################
# Прибиваем ненужный траффик
        ${fwcmd} add 20000 deny log all from ${mylan} to table\(1\) out via ${mytun}
        ${fwcmd} add deny log all from any to any in via ${ifinet}
# Прибиваем незарегистрированных пользователей
        ${fwcmd} add deny log all from not table\(3\) to any out via ${mytun}
# Пропускаем ICMP-только нужные
        ${fwcmd} add pass icmp from any to table\(3\) in via ${mytun} icmptype 0,3,11
        ${fwcmd} add pass icmp from table\(3\) to any out via ${mytun} icmptype 8
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add allow all from any to table\(3\) in via ${mytun} established
# Разрешаем входящие UDP DNS пакеты
        ${fwcmd} add pass udp from ${mydns} 53 to table\(3\) in via ${mytun}
# Перенаправляем http траффик на прокси
        ${fwcmd} add fwd 127.0.0.1,3128 tcp from table\(3\) to any 80,3128,8000,8080
# Разрешаем исходящий траффик для пользователей, пропускаем только нужные порты
        ${fwcmd} add pass all from table\(3\) to any ${portusers} out via ${mytun}
# log
        ${fwcmd} add deny log all from any to any

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

# Непонятный траффик на неработающем интерфейсе
        ${fwcmd} add 25000 deny log logamount 1000 all from any to any in via ${ifinet}

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

# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=48<VLAN_MTU,POLLING>
        inet 192.168.x.1 netmask 0xffffff00 broadcast 192.168.x.255
        ether 00:14:78:05:21:22
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=48<VLAN_MTU,POLLING>
        ether 00:14:78:25:4e:87
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 82.208.x.x --> 213.177.127.17 netmask 0xffffffff
        Opened by PID 246
P.S. Файрвол уже немного устарел, я сейчас переделал бы уже немного лучше. Но для понимая и работы очень подойдёт.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

RV
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-15 18:40:59

Re: ipfw rules

Непрочитанное сообщение RV » 2007-10-31 21:00:31

Обьясните, почему
>>Если подключение к прову через PPPoE и т.п. NATD не нужен.
Имеется ввиду что нат поднят на ppp ?

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

Re: ipfw rules

Непрочитанное сообщение dikens3 » 2007-11-01 10:46:37

RV писал(а):Обьясните, почему
>>Если подключение к прову через PPPoE и т.п. NATD не нужен.
Имеется ввиду что нат поднят на ppp ?
Ну конечно, зачем велосипед изобретать?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.