Перейти до

Проблема с настройкой правил ipfw


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

Дело вот в чем. На шлюзе стоит stg 2.4 для разграничения доступа пользователей к сервисам в интернете. Какие-то сервисы должны быть доступны постоянно (почта, аська и проч), остальные типа www и ftp, должны ограничиваться, т.е. юзверю даётся на начало лимит, например 100 метров, а по истечении оного нет у него рубится, но только просмотр сайтов и закачка файла с ftp. Так вот суть проблемы: При загрузке основных правил ipfw я не имею доступ к нужным мне сервисам, но при подключении себя как пользователя доступ имею ко всему.

 

Вот мой rc.firewall:

 

ext_net="10.0.1.0"

ext_mask="255.255.255.0"

our_net="10.0.2.0/29"

our_mask="255.255.255.248"

int_if="rl0"

ext_if="rl1"

int_ip="10.0.2.1"

ext_ip="10.0.1.90"

 

/sbin/ipfw -f flush

 

${fwcmd} add 50 divert natd all from any to any via ${ext_if}

 

${fwcmd} add 100 pass all from any to any via lo0

${fwcmd} add 200 deny all from any to 127.0.0.0/8

${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

 

${fwcmd} add 400 deny all from ${our_net} to any in via ${ext_if}

${fwcmd} add 500 deny all from ${ext_net} to any in via ${int_if}

 

#${fwcmd} add 600 deny all from any to 10.0.0.0/8 via ${ext_if}

#${fwcmd} add 700 deny all from 10.0.0.0/8 to any via ${ext_if}

${fwcmd} add 800 deny all from any to 172.16.0.0/12 via ${ext_if}

${fwcmd} add 900 deny all from 172.16.0.0/12 to any via ${ext_if}

 

${fwcmd} add 1000 deny all from any to 0.0.0.0/8 via ${ext_if}

${fwcmd} add 1100 deny all from 0.0.0.0/8 to any via ${ext_if}

${fwcmd} add 1200 deny all from any to 169.254.0.0/16 via ${ext_if}

${fwcmd} add 1300 deny all from 169.254.0.0/16 to any via ${ext_if}

${fwcmd} add 1400 deny all from any to 192.0.2.0/24 via ${ext_if}

${fwcmd} add 1500 deny all from 192.0.2.0/24 to any via ${ext_if}

${fwcmd} add 1600 deny all from any to 224.0.0.0/4 via ${ext_if}

${fwcmd} add 1700 deny all from 224.0.0.0/4 to any via ${ext_if}

${fwcmd} add 1800 deny all from any to 240.0.0.0/4 via ${ext_if}

${fwcmd} add 1900 deny all from 240.0.0.0/4 to any via ${ext_if}

 

# Diefine rule for manage firwal from admin station and from internet

${fwcmd} add 2000 allow log tcp from 10.0.2.4 to me 22 via ${int_if}

${fwcmd} add 2100 allow log tcp from me 22 to 10.0.2.4 via ${int_if}

${fwcmd} add 2200 allow log tcp from any to me 22 via ${ext_if}

${fwcmd} add 2300 allow log tcp from me 22 to any via ${ext_if}

${fwcmd} add 2350 allow log tcp from ${our_net} to any 25, 110, 143, 407, 5190, 5222 via ${ext_if}

${fwcmd} add 2400 allow tcp from any to any established

 

# Сюда добавляются правила пользователя для доступа к www и ftp

 

${fwcmd} add 52100 deny icmp from any to any frag

${fwcmd} add 52200 pass icmp from any to any

 

#${fwcmd} add 52300 pass tcp from any 20 to any setup

#${fwcmd} add 52400 pass tcp from any to ${ext_ip} 25 setup

#${fwcmd} add 52500 pass tcp from any to ${ext_ip} 53 setup

#${fwcmd} add 52600 pass tcp from any to ${ext_ip} 110 setup

#${fwcmd} add 52700 pass tcp from any to ${ext_ip} 143 setup

#${fwcmd} add 52800 pass tcp from any to ${ext_ip} 465 setup

#${fwcmd} add 52900 pass tcp from any to ${ext_ip} 993 setup

#${fwcmd} add 53000 pass tcp from any to ${ext_ip} 995 setup

 

${fwcmd} add 53100 deny log tcp from any to any in via ${ext_if} setup

 

#${fwcmd} add 53200 pass tcp from any to any 25, 110, 143, 5190, 407 setup

 

${fwcmd} add 53300 pass udp from ${ext_ip} to any 53 keep-state

${fwcmd} add 53400 pass udp from any to ${ext_ip} 53 keep-state

${fwcmd} add 53500 pass udp from ${int_ip} to ${our_net} 53 keep-state

${fwcmd} add 53600 pass udp from ${our_net} to ${int_ip} 53 keep-state

 

${fwcmd} add 53700 pass udp from ${ext_ip} to any 123 keep-state

${fwcmd} add 53800 pass udp from any 123 to ${ext_ip} keep-state

${fwcmd} add 53900 pass udp from ${our_net} to ${int_ip} 123 keep-state

${fwcmd} add 54000 pass udp from ${int_ip} 123 to ${our_net} keep-state

 

${fwcmd} add 54100 allow udp from ${our_net} to me 5555 via ${int_if}

${fwcmd} add 54200 allow udp from me 5555 to ${our_net} via ${int_if}

#${fwcmd} add 54300 divert natd all from any to any via ${ext_if}

${fwcmd} add 65534 deny log logamount 10000 all from any to any

 

Правило пользователя одно:

 

${fwcmd} add 2900 pass tcp from ${IP} to any 20, 21, 80, 81, 8080, 2121, 3128 via ${ext_if} setup - Так не работает

${fwcmd} add 2900 pass tcp from $any to any setup - так работает, но это не правильно.

 

Прошу сильно не ругать, если что неправильно - в файерволе я практически ноль. Поднимал давно и на linux. Если что не оптимизировано, тоже не ругайте, а дайте дельные советы.

Заранее благодарен.

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

Короче поправил, теперь ситуация такая. Правила файервола (смотри комментарии):

#!/bin/sh

fwcmd="/sbin/ipfw"

natdcmd="/sbin/natd"

ext_net="0.0.0.0/0"

our_net="10.0.1.0/24"

int_if="rl0"

ext_if="tun0"

ext_ip="10.0.2.1"

int_ip="10.0.1.90"

 

/sbin/ipfw -f flush

 

${fwcmd} add 50 divert natd all from any to any via ${ext_if}

 

${fwcmd} add 100 pass all from any to any via lo0

${fwcmd} add 200 deny all from any to 127.0.0.0/8

${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

 

${fwcmd} add 400 deny all from ${our_net} to any in via ${ext_if}

${fwcmd} add 500 deny all from not ${our_net} to any in via ${int_if}

${fwcmd} add 800 deny all from any to 172.16.0.0/12 via ${ext_if}

${fwcmd} add 900 deny all from 172.16.0.0/12 to any via ${ext_if}

${fwcmd} add 1000 deny all from any to 0.0.0.0/8 via ${ext_if}

${fwcmd} add 1100 deny all from 0.0.0.0/8 to any via ${ext_if}

${fwcmd} add 1200 deny all from any to 169.254.0.0/16 via ${ext_if}

${fwcmd} add 1300 deny all from 169.254.0.0/16 to any via ${ext_if}

${fwcmd} add 1400 deny all from any to 192.0.2.0/24 via ${ext_if}

${fwcmd} add 1500 deny all from 192.0.2.0/24 to any via ${ext_if}

${fwcmd} add 1600 deny all from any to 224.0.0.0/4 via ${ext_if}

${fwcmd} add 1700 deny all from 224.0.0.0/4 to any via ${ext_if}

${fwcmd} add 1800 deny all from any to 240.0.0.0/4 via ${ext_if}

${fwcmd} add 1900 deny all from 240.0.0.0/4 to any via ${ext_if}

 

${fwcmd} add 2000 allow tcp from 10.0.1.4 to me 22 via ${int_if}

${fwcmd} add 2100 allow tcp from me 22 to 10.0.1.4 via ${int_if}

${fwcmd} add 2110 allow tcp from 10.0.1.4 to me 4444 via ${int_if}

${fwcmd} add 2120 allow tcp from me 4444 to 10.0.1.4 via ${int_if}

${fwcmd} add 2200 allow tcp from any to me 22 via ${ext_if}

${fwcmd} add 2300 allow tcp from me 22 to any via ${ext_if}

 

# This window for user rules

 

${fwcmd} add 52100 deny icmp from any to any frag

${fwcmd} add 52200 pass icmp from any to any

${fwcmd} add 53100 deny log tcp from any to any in via ${ext_if} setup

${fwcmd} add 53300 pass udp from me to any 53 keep-state

${fwcmd} add 53400 pass udp from any to me 53 keep-state

${fwcmd} add 53500 pass udp from ${int_ip} to ${our_net} 53 keep-state

${fwcmd} add 53600 pass udp from ${our_net} to ${int_ip} 53 keep-state

${fwcmd} add 53700 pass udp from me to any 123 keep-state

${fwcmd} add 53800 pass udp from any 123 to me keep-state

${fwcmd} add 53900 pass udp from ${our_net} to ${int_ip} 123 keep-state

${fwcmd} add 54000 pass udp from ${int_ip} 123 to ${our_net} keep-state

${fwcmd} add 54100 allow udp from ${our_net} to me 5555 via ${int_if}

${fwcmd} add 54200 allow udp from me 5555 to ${our_net} via ${int_if}

${fwcmd} add 65534 allow log logamount 10000 all from any to any # Если здесь поставить deny то трафик, естесственно не ходит для юзверей.

Когда юзверь коннектится к проксе, правила нормально добавляются, так что stg тут ни при чем. Всё дело именно в IPFW

 

Выполняется OnConnect:

#!/bin/sh

 

fwcmd="/sbin/ipfw"

 

# Login

LOGIN=$1

 

#user IP

IP=$2

 

#Gate ip

int_ip="10.0.2.1"

ext_ip="10.0.1.90"

 

#Gate interfaces

int_if="rl0"

ext_if="rl1"

 

#cash

CASH=$3

 

#user ID

ID=$4

 

#HTTP ports

http_ports="80, 8080, 81, 443"

 

#FTP ports

ftp_ports="20, 21"

 

#Mail ports

mail_ports="25, 110, 143"

 

#Other

other_ports="22, 5190, 123"

 

uports="1025-65535"

cur_date=`date \+\%Y.\%m.\%d`cur_time=`date \+\%H:\%M:\%S`

# Configuration firewall for access user to him services

 

${fwcmd} add $(expr $ID \* 10 + 2900) fwd 10.0.1.90,3128 log tcp from $IP to any 80, 81, 8080 via ${int_if}

${fwcmd} add $(expr $ID \* 10 + 2901) allow log tcp from $IP 1024-65535 to any in via rl0

${fwcmd} add $(expr $ID \* 10 + 2902) allow log tcp from $IP 1024-65535 to any out via tun0

${fwcmd} add $(expr $ID \* 10 + 2903) allow log tcp from any to $IP 1024-65535 in via tun0

${fwcmd} add $(expr $ID \* 10 + 2904) allow log tcp from any to $IP 1024-65535 out via rl0

 

echo "C `date +%Y.%m.%d-%H.%M.%S` $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

Когда дисконнектится, ети правила ессно удаляются.Так вот, если в файере поставить в правиле 65534 deny, то трафик нихрена не ходит, если allow, то прокся пускает всех и вся, даже тех, кому это не надо.

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

С основными правилами разбирайся сам - медленно и вдумчиво проанализируй /etc/rc.firewall. А вот с этим:

Правило пользователя одно:

 

${fwcmd} add 2900 pass tcp from ${IP} to any 20, 21, 80, 81, 8080, 2121, 3128 via ${ext_if} setup - Так не работает

Ты разрешаешь ходить наружу через внешний интерфейс. Но пакеты должны еще войти через внутренний интерфейс. Так что либо пиши по два правила - для наружнего и внутреннего интерфейсов, либо просто выбрось

from ${IP}
.

 

ЗЫ: Для разборок я рекомендую прописывать:

${fwcmd} add 65534 deny log logamount 500 all from any to any

, а потом смотреть в /var/log/security, где у тебя затыкаются пакеты.

Ссылка на сообщение
Поделиться на других сайтах
ЗЫ: Для разборок я рекомендую прописывать:
${fwcmd} add 65534 deny log logamount 500 all from any to any

, а потом смотреть в /var/log/security, где у тебя затыкаются пакеты.

Когда я ставлю deny, в логах ничего не пишется. :)

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

Да, естественно есть. Если бы было время (которого, к сожалению, никогда нет), можно было бы очистить все правила и добавлять их постепенно, на каждый сервис, но времени нет, так как сервер выполняет свою работу, и закрыв доступ в инет, я фактически останавливаю работу конторы, деятельность которой связана с инетрнет.

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

Если ничего не пишется в лог, значит правило не задействуется.

Либо условия правила не выполняются, либо трафик режется на более ранних правилах.

А вообще пошаговое отключение правил можно делать по или после рабочего времени конторы.

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

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

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

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

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

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

Вхід

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

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

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

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