Kastilio 0 Опубликовано: 2006-07-14 08:45:25 Share Опубликовано: 2006-07-14 08:45:25 Дело вот в чем. На шлюзе стоит 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. Если что не оптимизировано, тоже не ругайте, а дайте дельные советы. Заранее благодарен. Ссылка на сообщение Поделиться на других сайтах
denz 0 Опубліковано: 2006-07-14 13:23:29 Share Опубліковано: 2006-07-14 13:23:29 Версия ipfw, если не в курсе - то какая ветка freebsd? Эт для начала... Ссылка на сообщение Поделиться на других сайтах
Kastilio 0 Опубліковано: 2006-07-17 08:17:29 Автор Share Опубліковано: 2006-07-17 08:17:29 Версия 5.5-STABLE, обновленная с 5.3-STABLE. Ссылка на сообщение Поделиться на других сайтах
Kastilio 0 Опубліковано: 2006-07-18 14:00:02 Автор Share Опубліковано: 2006-07-18 14:00:02 Короче поправил, теперь ситуация такая. Правила файервола (смотри комментарии): #!/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, то прокся пускает всех и вся, даже тех, кому это не надо. Ссылка на сообщение Поделиться на других сайтах
Septima 0 Опубліковано: 2006-07-19 22:29:03 Share Опубліковано: 2006-07-19 22:29:03 С основными правилами разбирайся сам - медленно и вдумчиво проанализируй /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, где у тебя затыкаются пакеты. Ссылка на сообщение Поделиться на других сайтах
Kastilio 0 Опубліковано: 2006-07-20 05:28:48 Автор Share Опубліковано: 2006-07-20 05:28:48 ЗЫ: Для разборок я рекомендую прописывать:${fwcmd} add 65534 deny log logamount 500 all from any to any , а потом смотреть в /var/log/security, где у тебя затыкаются пакеты. Когда я ставлю deny, в логах ничего не пишется. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-07-20 08:01:56 Share Опубліковано: 2006-07-20 08:01:56 а слово log в правиле есть? Ссылка на сообщение Поделиться на других сайтах
Kastilio 0 Опубліковано: 2006-07-20 08:28:17 Автор Share Опубліковано: 2006-07-20 08:28:17 Да, естественно есть. Если бы было время (которого, к сожалению, никогда нет), можно было бы очистить все правила и добавлять их постепенно, на каждый сервис, но времени нет, так как сервер выполняет свою работу, и закрыв доступ в инет, я фактически останавливаю работу конторы, деятельность которой связана с инетрнет. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-07-20 09:42:58 Share Опубліковано: 2006-07-20 09:42:58 перепустите сислог, проверьте в вар/лог/security Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-07-23 10:12:49 Share Опубліковано: 2006-07-23 10:12:49 Если ничего не пишется в лог, значит правило не задействуется. Либо условия правила не выполняются, либо трафик режется на более ранних правилах. А вообще пошаговое отключение правил можно делать по или после рабочего времени конторы. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас