g00dwin 0 Опубликовано: 2007-02-01 07:46:10 Share Опубликовано: 2007-02-01 07:46:10 ОС Linux Mandrake Связка Squid 2.5.STABLE 6 + Stargazer 2.401.9.7 все хорошо считает ... но есь проблемка: Например у пользователя на счету осталось 2 метра, а он вздумал качать фильмец 700 метровый..... Как обрубить коннект при балансе = 0 и не дать докачать файл??? Ссылка на сообщение Поделиться на других сайтах
Neelix 33 Опубліковано: 2007-02-01 09:41:51 Share Опубліковано: 2007-02-01 09:41:51 сделать нормальный OnDisconnect Ссылка на сообщение Поделиться на других сайтах
g00dwin 0 Опубліковано: 2007-02-01 12:16:02 Автор Share Опубліковано: 2007-02-01 12:16:02 OnDisconnect #!/bin/bash user=$1 ip=$2 eth=eth1 eth_local=eth0 mir=80.80.80.2 iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null done iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null done iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null done iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null done iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null while [ $? -eq 0 ] do iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null done iptables -I FORWARD -i $eth_local -s $ip -j DROP > /dev/null iptables -I FORWARD -o $eth_local -d $ip -j DROP > /dev/null echo $2 >> /var/stargazer/squid/squid_d /etc/stargazer/disconnect /usr/sbin/squid -k reconfigure Файл squid_d служит для выполнения скрипта disconnect, который удаляет из файла /var/stargazer/squid/squid ip адрес пользователя, у которого баланс в минуса ушел. после этого squid запрещает доступ в инет... но докачать файл все равно дает вне зависимости от его размера. Как с этим бороться??? :-/ Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-02-01 12:40:53 Share Опубліковано: 2007-02-01 12:40:53 Прозрачный прокси или нет ? Если нет, то после срабатывания дисконекта должен на сторону пользователя закрываться порт прокси. Если не закрывается - смотрите что не выполняется в скрипте. Ссылка на сообщение Поделиться на других сайтах
g00dwin 0 Опубліковано: 2007-02-01 13:14:31 Автор Share Опубліковано: 2007-02-01 13:14:31 Прокси не прозрачный. Каким образом закрыть этот порт? (я мало че понимаю в правилах iptables). Может подскажите? Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-02-01 16:13:04 Share Опубліковано: 2007-02-01 16:13:04 Да по идее дисконект его закрывает. Покажите вывод iptables -n -L Такое чувство что у вас политика ACCEPT на цепочках стоит. Ссылка на сообщение Поделиться на других сайтах
kroc 0 Опубліковано: 2007-02-02 11:13:38 Share Опубліковано: 2007-02-02 11:13:38 Существует такая же проблема. Не пойму откуда ноги растут, но думаю дело не в прокси и скриптах. У меня скрипт дисконект отрабатывает и строчку с которой юзер пускается в интернет типа -A loc2fw -s 192.168.1.224 -d 192.168.1.8 -p tcp -m state --state NEW -m tcp --dport 3128 -m mac --mac-source 00:A0:C9:3E:40:C8 -j ACCEPT удаляет точно. Но установленное соединение не рвется, как качал файлик 50 мегов так и продолжил качать, хотя денег дал на 2 мега. Новые соединения не происходят как и должно быть. Обновить страничку не получится. но вот почему старые , уже установленные соединения не прерываются - вопрос. И при чем тут сквид я не понимаю , когда доступ рубится айпитаблами. скрипт лежит на форуме \\ http://local.com.ua/forum/index.php?showtopic=2020 #---------------------------------------------------------------# Проблему решил, поэтому вопрос снимается. Действительно, утечка была в скрипте при проверке статуса соединения. Переделанный скрипт выложу в том же месте Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-02-02 13:00:18 Share Опубліковано: 2007-02-02 13:00:18 Политика по умолчанию цепочки loc2fw какая стоит ? Ссылка на сообщение Поделиться на других сайтах
kroc 0 Опубліковано: 2007-02-05 04:22:43 Share Опубліковано: 2007-02-05 04:22:43 политики стоят DROP $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-02-05 07:15:47 Share Опубліковано: 2007-02-05 07:15:47 Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые. Ссылка на сообщение Поделиться на других сайтах
g00dwin 0 Опубліковано: 2007-02-05 09:10:32 Автор Share Опубліковано: 2007-02-05 09:10:32 iptables -n -L : Где 192.168.15.243 - ip адрес клиента Случай когда у клиента есь на счете деньги: Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 192.168.15.243 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- 192.168.15.243 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 192.168.15.243 Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 192.168.15.243 Случай когда у клиента кончились деньги на счете: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination DROP all -- 0.0.0.0/0 192.168.15.243 DROP all -- 192.168.15.243 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination Вот так. Вроде так то все правильно на мой вгляд. А докачивать все равно дает. Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-02-05 10:45:42 Share Опубліковано: 2007-02-05 10:45:42 Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) Политика однако ACCEPT - вот здесь и зарыта собака. Поставьте политику в DROP и посмотрите на эффект. Только не забудьте что после установки политики DROP все что не разрешено - запрещено. Ссылка на сообщение Поделиться на других сайтах
vop 370 Опубліковано: 2007-02-05 11:50:16 Share Опубліковано: 2007-02-05 11:50:16 iptables -n -L :Где 192.168.15.243 - ip адрес клиента .... Попробую угадать - сквид стоит на этом же сервере? Ну тогда будет продолжать качать, цепи INPUT OUTPUT открыты кому попало Надо менять полиси по умолчанию. Ссылка на сообщение Поделиться на других сайтах
kroc 0 Опубліковано: 2007-02-05 11:54:52 Share Опубліковано: 2007-02-05 11:54:52 Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые. после окончания средств на счете пользователя сервак на порту 3128 с его машины перестал пинговаться. Вроде все как и положено. Только в это время качался файлик 6 метров. Файл благополучно докочался при удаленном правиле.Пинги после дисконекта не шли - файл качался. Уже говорил что никуда не пускает и все замечательно , за исключением того что файл продолжал качаться. (Жаль не 6 гигов) Политики все DROP. Может кто подскажет что за хрень такая Ссылка на сообщение Поделиться на других сайтах
g00dwin 0 Опубліковано: 2007-02-05 13:13:56 Автор Share Опубліковано: 2007-02-05 13:13:56 ВСЕМ СПАСИБО! У меня все заработало и при нулевом балансе начало отрубать клиентов! вот решение проблемы (на моем серваке): Server (Squid + Stargazer 2.401.9.7) OS Linux (две сетевухи) внутренний адрес 192.168.15.251 внешний адрес (инет) 80.80.80.2 Client 192.168.15.5 - Client (Windows NT) 192.168.15.243 - Client (Windows NT) ............. и т.д OnConnect #!/bin/bash # Login user=$1 ip=$2 cash=$3 eth=eth1 eth_local=eth0 mir=80.80.80.2 iptables -t filter -A INPUT -s $ip -j ACCEPT > /dev/null iptables -t filter -A FORWARD -s $ip -j ACCEPT > /dev/null iptables -t filter -A FORWARD -d $ip -j ACCEPT > /dev/null iptables -t filter -A OUTPUT -d $ip -j ACCEPT > /dev/null iptables -D FORWARD -i $eth_local -s $ip -j DROP > /dev/null while [ $? -eq 0 ] do iptables -D FORWARD -i $eth_local -s $ip -j DROP > /dev/null done iptables -D FORWARD -o $eth_local -d $ip -j DROP > /dev/null while [ $? -eq 0 ] do iptables -D FORWARD -o $eth_local -d $ip -j DROP > /dev/null done iptables -t nat -A POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null iptables -A INPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT iptables -A OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT iptables -A FORWARD -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT iptables -D INPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP iptables -D OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP iptables -D FORWARD -s $ip -p tcp -m multiport --dport 3128 -j DROP echo $2 >> /var/stargazer/squid/squid /usr/sbin/squid -k reconfigure OnDisconnect #!/bin/bash user=$1 ip=$2 eth=eth1 eth_local=eth0 mir=80.80.80.2 iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null done iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null done iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null done iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null while [ $? -eq 0 ] do iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null done iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null while [ $? -eq 0 ] do iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null done #iptables -P INPUT DROP #iptables -P FORWARD DROP #iptables -P OUTPUT DROP iptables -I FORWARD -i $eth_local -s $ip -j DROP > /dev/null iptables -I FORWARD -o $eth_local -d $ip -j DROP > /dev/null iptables -A INPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP iptables -A OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP iptables -A FORWARD -s $ip -p tcp -m multiport --dport 3128 -j DROP iptables -D INPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT iptables -D OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT iptables -D FORWARD -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT echo $2 >> /var/stargazer/squid/squid_d /etc/stargazer/disconnect /usr/sbin/squid -k reconfigure Политика iptables по умолчанию $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT Если будут вопросы обращайтесь)). Ссылка на сообщение Поделиться на других сайтах
g00dwin 0 Опубліковано: 2007-02-05 13:17:26 Автор Share Опубліковано: 2007-02-05 13:17:26 P.S. Не только отрубать но и не давать докачивать файлы если клиент уполз в минуса))) Ссылка на сообщение Поделиться на других сайтах
kroc 0 Опубліковано: 2007-02-06 06:03:00 Share Опубліковано: 2007-02-06 06:03:00 ->g00dwinu Зачем включаешь доступ на порт 3128 в цепочки OUTPUT и FORWARD ? надо втыкать только в INPUT. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас