Перейти до

Настройка правил для ipfw


Рекомендованные сообщения

С вашего позволения продолжу свой вопрос.

 

Проблема: Не могу подключиться Конфигуратором, а inetacces подключается нормально, но интернета все равно нет

 

привожу листинг из ipfw("/sbin/ipfw list")

 

так настройки в rc.firewall(взяты с сайта из мана)

rl1 - внешний, т.е. смотрит в инет

rl0 - внутренний, т.е. смотрит в локалку

00010 allow icmp from any to any
00304 deny ip from any to 192.168.0.0/16 out xmit rl1
00305 deny ip from any to 10.0.0.0/16 out xmit rl1
00308 allow udp from any to 192.168.23.1 8888 via rl0
00309 allow udp from 192.168.23.1 to any via rl0
00310 allow tcp from 192.168.23.5 to 192.168.23.1 22 via rl0
00312 allow tcp from 192.168.23.1 to any via rl0
00320 deny log logamount 10 ip from 192.168.23.0/24 to 192.168.23.1 via rl0
00322 deny log logamount 10 ip from 192.168.23.0/24 to 10.0.5.34 via rl0
50024 divert 8668 ip from any to any via rl1
50029 allow tcp from any to any out xmit rl1 setup
50030 allow tcp from any to any via rl1 established
50031 allow udp from any to any out xmit rl1
50032 allow udp from any 53 to any in recv rl1
65534 deny log logamount 10 ip from any to any
65535 deny ip from any to any

 

при подключении пользователя добавляются правила:

(взял на форуме в теме скрипты)

10001 allow icmp from 192.168.23.5 to any out xmit rl0 icmptype 0,3,4,11,12
10002 allow ip from 192.168.23.5 to any
10003 allow ip from any to 192.168.23.5

 

и в сумме получается:

00010 allow icmp from any to any
00304 deny ip from any to 192.168.0.0/16 out xmit rl1
00305 deny ip from any to 10.0.0.0/16 out xmit rl1
00308 allow udp from any to 192.168.23.1 8888 via rl0
00309 allow udp from 192.168.23.1 to any via rl0
00310 allow tcp from 192.168.23.5 to 192.168.23.1 22 via rl0
00312 allow tcp from 192.168.23.1 to any via rl0
00320 deny log logamount 10 ip from 192.168.23.0/24 to 192.168.23.1 via rl0
00322 deny log logamount 10 ip from 192.168.23.0/24 to 10.0.5.34 via rl0
10001 allow icmp from 192.168.23.5 to any out xmit rl0 icmptype 0,3,4,11,12
10002 allow ip from 192.168.23.5 to any
10003 allow ip from any to 192.168.23.5
50024 divert 8668 ip from any to any via rl1
50029 allow tcp from any to any out xmit rl1 setup
50030 allow tcp from any to any via rl1 established
50031 allow udp from any to any out xmit rl1
50032 allow udp from any 53 to any in recv rl1
65534 deny log logamount 10 ip from any to any
65535 deny ip from any to any

 

Прошу оценить данный набор на работоспособность.

 

Спасибо.

Ссылка на сообщение
Поделиться на других сайтах

ок. Выкладываю все конфы

stargazer.conf

# Имя файла в котором определяются правила подсчета трафика
rules=/etc/stargazer/rules

# Рабочая директория сервере, тут содержатся данный о тарифах, изерах и админах
WorkDir=/var/stargazer/

# Имя лог файла куда пушутся события
LogFile=/var/stargazer/log/stargazer.log

# Если юзер в течение UserTimeout секунд не подает признаков жизни,
# сервер отключит его (естественно, если клиент был подключен до этого)
UserTimeout=120

# Время через которое сервер повторяет проверку того, жив ли клиент. Также это время
# через которое у клиента обновляется его статитстика. UserDelay должно быть в
# 3...10 раз меньше чем UserTimeout
UserDelay=15

# Эта опция действительна только для сервера работающего со вторым типом тарифных планов
# Она определяет что будет передаватся программе InetAccess от сервера
# FreeMb = 0 - кол-во бесплатных мегабайт в пресчете на цену нулевого направления
# FreeMb = 1 - кол-во бесплатных мегабайт в пресчете на цену первого направления
# FreeMb = 2 - кол-во бесплатных мегабайт в пресчете на цену второго направления
# .................... # FreeMb = 9 - кол-во бесплатных мегабайт в пресчете на цену девятого направления
# FreeMb = cash - кол-во денег на которые юзер может бесплатно качать
# FreeMb = none - ничего не передавать
FreeMb=2

# Время через которое пишется детальная статистика
# возможные значения 3, 2, 1, 1/2, 1/4, 1/6
# 3 - раз в три часа, 1 - раз в чаc, 1/2 - раз в пол часа, 1/6 - раз в 10 мин
StatTime=1/6

# Номер порта по которому сервер слушает обращения конфигуратора
adminPort=8888

# Номер порта по которому сервер ожидает обращения авторизатора
userPort=8888

# Максимальное кол-во юзеров. Эта величина влияет на кол-во # памяти необходимой серверу
MaxUsers=1000

# for FreeBSD only
# Имя интерфейсов на которых нужно вести подсчет трафика
iface=rl0,rl1

# Имена направлений. Пустые имена не будут отображаться
# ни в авторизаторе, ни в конфигураторе
DirName0=Local Network
DirName1=City Network
DirName2=World Network
DirName3=
DirName4=
DirName5=
DirName6=
DirName7=
DirName8=
DirName9=

# Опция определяющая менять ли местами upload и download
TurnTraff=no

#Опция определяющая обнулять трафик в конце месяца или нет
ResetTraff=yes

# "Разамазанное" снятие абонплаты. Каждый день
# 1/30 (1/31, 12/28) часть абонплаты
SpreadFee=no

# День снятия абонплаты
DayFee=1

# День, в который происходит обнуление счетчиков трафика, и
# перехода на новый тариф
DayResetTraff=1

# Владелец, группа и права доступа на файлы
# статистики у пользователей
StatOwner=root
StatGroup=stg_stat
StatMode=644

# Владелец, группа и права доступа на файлы
# конфигурации у пользователей
ConfOwner=root
ConfGroup=root
ConfMode=600

# Владелец, группа и права доступа на логи
# у пользователей
UserLogOwner=root
UserLogGroup=root
UserLogMode=644

# Разрешение на доступ конфигуратором
AdminOrder=allow,deny
AdminAllowFrom=192.168.23.5
AdminDenyFrom=all

# Разрешение на доступ авторизатором
UserOrder=allow,deny
UserAllowFrom=192.168.23.0/24
UserDenyFrom=all

# Запрет на слишком частые обращения на порт авторизатора
FloodControl=yes

OnConnect

#Этот скрипт вызывается в момент, когда пользователь
#успешно прошел авторизацию на сервере. Задач скрипта - перестроить
#файрвол так, что бы пользователь получил доступ в интернет.
#В поле Примечание у абонента я устанавливаю скорость по типу 64Kbit/s

LOGIN=$1
IP=$2
CASH=$3
ID=$4
SPEED=`cat /var/stargazer/users/$LOGIN/conf | grep 'Note=' | cut -d "=" -f2`
fwcmd="/sbin/ipfw -q"
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`

#${fwcmd} pipe `expr $ID + 101` config bw $SPEED
#${fwcmd} add `expr $ID + 501` pipe `expr $ID + 101` tcp from any to $IP via rl0
${fwcmd} add `expr $ID '*' 10 + 10001` allow icmp from $IP to any out via rl0 icmptype 0,3,4,11,12
${fwcmd} add `expr $ID '*' 10 + 10002` allow ip from $IP to any
${fwcmd} add `expr $ID '*' 10 + 10003` allow ip from any to $IP


echo "C `date +%Y.%m.%d-%H.%M.%S`       $ID     $IP     $CASH" >> /var/stargazer/users/$LOGIN/connect.log
echo "C `date +%Y.%m.%d-%H.%M.%S`       $ID     $LOGIN  $IP     $CASH" >> /var/stargazer/users/allconnect.log
echo "<=;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH" >> /home/stat/logs/connect.log

rules

# Локальные ресурсы
ALL 192.168.23.0/24 DIR0

# Трафик на роутер
ALL 10.0.5.34 DIR0

# Городской трафик
#ALL 195.248.160.0/19 DIR1
#ALL 212.86.224.0/19 DIR1
#ALL 213.227.192.0/18 DIR1
#ALL 217.24.160.0/20 DIR1

# Пинг
ICMP 0.0.0.0/0 NULL

# Мир
ALL 0.0.0.0/0 DIR2

rc.firewall

# Определим основные переменные # int_if, serv_if, ext_if . названия интерфейсов, к которым
# подключены соответствующие сети . пользовательская, серверная, внешняя.

#!/bin/sh
fwcmd="/sbin/ipfw -q"
natdcmd="/sbin/natd"
int_if="rl0"
serv_if="rl1"
ext_if="rl1"

Сбрасываем правила ipfw
${fwcmd} -f flush

# Задаем маскарадинг пакетов из пользовательской сети во внешнюю сеть
# опции маскарадинга
# -s для правильной работы таких протоколов как FTP, IRC, DCC
# -m пытаться использовать те же номера портов, которые имеют
# исходящие пакеты. (короче нужно для правильной работы таких протоколов как RPC)
# -u использовать маскарадинг только для немаршрутизируемых
# адресов (192.168.23.0/16 172.16.0.0/12 10.0.0.0/8)
# -a использовать данные IP адрес для макарадинга пакетов.
${natdcmd} -s -m -u -a 10.0.5.34

# Разрешаем ходить ICMP пакетам
${fwcmd} add 10 allow icmp from any to any

# Следующие правила будут блокировать лубой исходящий
# трафик из внутренних сетей во внешние с адресами получателя
# из немаршрутизируемого диапазона (как правило это трафик
# генерирующийся вирусами, выпускать который наружу не
# рекомендуется, что бы не загружать внешний канал).
${fwcmd} add 304 deny ip from any to 192.168.23.0/16 out via ${ext_if}
${fwcmd} add 305 deny ip from any to 10.0.0.0/16 out via ${ext_if}
# ${fwcmd} add 306 deny ip from any to 172.16.0.0/12 out via ${ext_if}

# Следующие правила можно использовать для блокирования
# использования различных прокси серверов в городском
# сегменте сети
# ${fwcmd} add 307 deny log tcp from any to proxy.alkar.net 8080 via ${int_if}
# и т.д

# Следующие правила разрешают конектиться клиентам к серверу
# stargazer на порт 8888 на котором он слушает клиентские соединения
${fwcmd} add 308 allow udp from any to 192.168.23.1 8888 via ${int_if}
${fwcmd} add 309 allow udp from 192.168.23.1 to any via ${int_if}

# Следующие правила разрешают машинам с адресами 192.168.10.2 и
# 192.168.10.18 подключаться к роутеру по протоколу ssh без
# подключения клиентской программы.
${fwcmd} add 310 allow tcp from 192.168.23.5 to 192.168.23.1 22 via ${int_if}
# ${fwcmd} add 311 allow tcp from 192.168.10.18 to 192.168.10.1 22 via ${int_if}
${fwcmd} add 312 allow tcp from 192.168.23.1 to any via ${int_if}

# Блокируем все остальные клиентские запросы к роутеру
${fwcmd} add 320 deny log ip from 192.168.23.0/24 to 192.168.23.1 via ${int_if}
# ${fwcmd} add 321 deny log ip from 192.168.23.0/24 to 192.168.20.1 via ${int_if}
${fwcmd} add 322 deny log ip from 192.168.23.0/24 to 10.0.5.34 via ${int_if}

# Здесь оставляем окно в нумерации для исполнения скриптов юзеров

# Следующее правило определяет что все пакеты проходящие через
# внешний сетевой интерфейс направленный во внешнюю сеть будут
# попадать в правило маскарадинга, описанное выше.
${fwcmd} add 50024 divert natd all from any to any via ${ext_if}

# Следующие правила разрешают роутеру соединяться с использованием
# протокола tcp с внешними сетями.
${fwcmd} add 50029 allow tcp from any to any out via ${ext_if} setup
${fwcmd} add 50030 allow tcp from any to any via ${ext_if} established

# Следующие правила разрешают роутеру соединяться с использованием
# протокола udp с внешними сетями, а также разрешают прохождение
# ДНС трафика через роутер
${fwcmd} add 50031 allow udp from any to any out via ${ext_if}
${fwcmd} add 50032 allow udp from any 53 to any in via ${ext_if}

# Следующее правило разрешает конектиться к роутеру по протоколу
# ssh из внешней сети
# ${fwcmd} add 50033 allow tcp from any to 192.168.30.1 22 via ${ext_if}

# Далее идет запрещающее правило для всего остального
# трафика (т.е. схема файрвола . все что не разрешено
# явно . то запрещено)
${fwcmd} add 65534 deny log ip from any to any



Ссылка на сообщение
Поделиться на других сайтах

то что на сайте под фрю это лажа...

Все что там написано оно не проверялось.... Там даже пометка есть...

 

выход:

 

Если хош подожди до выходных я в суботу напишу доку по конфигурации старгайзера с полным натом для фри или дай мыльник я тебе персонально намылю =)... У меня реально работает... Сам долго копался но сделал. Правда я заморачевался с диверт сокетами, а потом понял что стг с диверт сокетами еще пока не дружит. И пересобрал стг по дефолту и в таком состоянии врубил диверт... Вобщем уже месяца полтора радуюсь...

Ссылка на сообщение
Поделиться на других сайтах
то что на сайте под фрю это лажа...

Все что там написано оно не проверялось.... Там даже пометка есть...

 

выход:

 

Если хош подожди до выходных я в суботу напишу доку по конфигурации старгайзера с полным натом для фри или дай мыльник я тебе персонально намылю =)... У меня реально работает... Сам долго копался но сделал. Правда я заморачевался с диверт сокетами, а потом понял что стг с диверт сокетами еще пока не дружит. И пересобрал стг по дефолту и в таком состоянии врубил диверт... Вобщем уже месяца полтора радуюсь...

Спасибо, буду рад если пришлешь свои конфиги

demstudio[гав]fromru.com

Ссылка на сообщение
Поделиться на других сайтах

Делается элементарно: берём ipfw2, описываем доступ к ресурсам сети для адресов в таблице, а скриптами добавляем/удаляем адреса в/из таблицы.

 

ipfw add pass tcp from any to any established

ipfw add pass tcp from table(1) to any 20,21,22,25,80,110,119,443,3128 setup

 

Номера портов указаны по памяти навскидку, правила для udp по аналогии придумаете сами. Остальную обвязку стенки уж как-нибудь сами - /etc/rc.firewall вам в руки...

 

OnConnect:

ipfw table 1 add ${IP}

 

OnDisconnect:

ipfw table 1 delete ${IP}

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...
Скиньте кто-нибудь плз рабочиие конфиги ipfw и stargazer

блин да чтож так трудно поискать по форуму.....

 

конфиг старгайзера бери на сайте только под себя настраивай.

 

рулесы вот примерно следующие

#----------------rules-----------------

 

#local

ALL 192.168.250.1 NULL

 

#Ukr network

ALL 62.64.64.0/18 DIR0

ALL 62.64.80.0/21 DIR0

ALL 62.64.87.0/24 DIR0

ALL 62.64.88.0/21 DIR0

ALL 62.64.96.0/21 DIR0

ALL 62.64.104.0/21 DIR0

ALL 62.64.110.0/23 DIR0

ALL 62.64.112.0/21 DIR0

ALL 62.64.120.0/21 DIR0

ALL 62.80.160.0/19 DIR0

. . .

. . .

. . .

 

ALL 62.221.43.0/24 DIR0

 

#World network

ALL 0.0.0.0/0 DIR1

 

Вот те фаервол :

 

#----------------ipfw.sh---------------

 

#!/bin/sh

 

fwcmd="/sbin/ipfw"

natcmd="/sbin/natd"

 

${natcmd} -f /etc/natd.conf -a xxx.xxx.xxx.xxx -p 8668

${fwcmd} -f flush

 

${fwcmd} add 100 divert natd ip from any to xxx.xxx.xxx.xxx

 

 

Где xxx.xxx.xxx.xxx - внешний ip твоего сервера

 

далее тебе просто нужно каждому узеру при конекте добавлять следующие строки в фаервол:

 

ipfw add 2200 divert natd ip from 192.168.250.60 to any

ipfw add 2210 allow ip from any to 192.168.250.60

ipfw add 2220 allow ip from 192.168.250.60 to any

 

 

где 192.168.250.60 - это локальный апишник юзера.... И обязательно правела фаервола не должны совпадать... на форуме сделай поиск там мне уже скрипты онконект и он дисконект давали. можешь делать поиск по моему нику

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...