Добрый день!
Столкнулась с такой задачей: необходимо сделать так, чтобы на одной машине доступ в интернет блокировался каждые 3 дня через каждые 3 дня. То есть 3 дня - доступ свободный, следующие 3 дня - выхода в интернет нет и т. д.
Подскажите, возможно ли это реализовать средствами сквида?
Буду очень признательна за любой совет.
Squid, ограничение доступа
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- сержант
- Сообщения: 280
- Зарегистрирован: 2008-05-30 12:16:02
- Откуда: Киев
- Контактная информация:
Re: Squid, ограничение доступа
Здравствуйте.
Я не эксперт в сквиде но в виде "куда копать"
У меня по этому правилу определяется рабочее время.
потом
по этому правилу в нерабочее время разрешаем группе office качать без ограничения ставите в такое правило вашу группу определяете время в которое ей нельзя никуда ходить и вроде как бы все.
Можно еще режиком сделать, описано тут, обратите внимание на комментарии, там расписано как сделать временное ограничение.
Я не эксперт в сквиде но в виде "куда копать"
У меня по этому правилу определяется рабочее время.
Код: Выделить всё
acl work_time time MTWHF 9:00-18:00
Код: Выделить всё
delay_class 1 2
delay_access 1 allow office !work_time
delay_access 1 deny all
delay_parameters 1 1875000/1875000 -1/-1
Можно еще режиком сделать, описано тут, обратите внимание на комментарии, там расписано как сделать временное ограничение.
Изменение конфига РЕЖИКА по времени
В стандартных настройках РЕЖИКа нет возможности изменять правила в зависимости от времени. Придется обходить этот недостаток. Подготовку к обходу разделим на два этапа. Для простоты восприятия считаем что РЕЖИК у нас уже установлен и настроен, и что мы просто добавляем или убираем секции целиком, а не изменяем их.
1. Выделяем основную часть redirector.conf и изменяемую. В примере основная часть заканчивается строкой "##<EOF>##". Все секции идущие после нее, добавляются или убираются сценарием запускаемым по crontab. Каждая секция записывается в отдельный файлик. Для удобства эти кусочки обзываем одним именем, например Section.part.conf, и раскладываем их по соответствующим папкам.
Например, "кусочек":
<PORNO>
ban_dir /usr/local/rejik/banlists/PORNO
url http://10.100.1.1/cgi-bin/access-deny?P ... Y_URL=#URL#
#USER_IP=#IP#
#USER_LOGIN=#IDENT#
запишется в файл /usr/local/rejik/banlists/PORNO/Section.part.conf. Строки USER_IP и USER_LOGIN закоментированы, потому что я ими не пользуюсь.
2. Пишем такой скриптик rejik_reconf.sh:
#!/bin/sh
# Переходим в папку с программой
cd /usr/local/rejik
# имя файла конфигурации
conf_name=redirector.conf
# вырезаем c помощью awk основную часть конфига во временный файл
cat $conf_name | awk 'BEGIN { EndOfFile = 0 }
( EndOfFile ) { print "\n"; exit 0 }
{ EndOfFile = ( substr( $0, 1, 9 ) == "##<EOF>##" );\
print $0 }
' > $conf_name.temp
# заменяем файлы
mv $conf_name.temp $conf_name
# Проверяем наличие параметров, если имена секций не переданы — завершить работу
case $# in 0)
exit 0
;;
esac
# Для всех переданных наименований секций,
for sec in $@
do
# если такой файл есть
Section_part=banlists/$sec/Section.part.conf
if [ -f $Section_part ]
then
# добавить в конфиг секцию и три пустых строки после нее
cat $Section_part >> $conf_name
printf "\n\n\n" >> $conf_name
fi
done
# на всякий случай...
/usr/sbin/chown -R squid:squid /usr/local/rejik
В качестве параметров сценарию передаются наименования папок со списками.
На этом подготовительная часть заканчивается, можно писать правила в crontab-е.
0 8 * * 1-5 /usr/local/rejik/rejik_reconf.sh PORNO GAMES MEDIA && killall redirector
0 18 * * 1-5 /usr/local/rejik/rejik_reconf.sh && killall redirector
В примере в 8-00 с понедельника по пятницу rejik3_reconf.sh дописывает в основную часть три дополнительных секции: PORNO, GAMES, MEDIA. В конце рабочего дня, в 18-00 скрипт запускается без параметров, а значит в конфиге остается только основная часть.
-
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2013-08-26 16:18:42
Re: Squid, ограничение доступа
Спасибо за ваш совет. Правда, мне кажется, мою задачу это не решает. Поправьте меня если я ошибаюсь.
Здесь мы оперируем определёнными днями недели, в то время как я к ним привязываться не могу. Мне бы сутками сразу)
Если попытаться объяснить наглядно, что мне требуется, то первые 3 дня, предположим:
Следующие 3 дня:
3 дня блокируем только определённые ресурсы (blacklist), 3 дня полностью перекрываем человеку воздух.
Насколько я поняла, режик тоже оперирует только определёнными днями недели?
Код: Выделить всё
acl work_time time MTWHF 9:00-18:00
delay_class 1 2
delay_access 1 allow office !work_time
delay_access 1 deny all
delay_parameters 1 1875000/1875000 -1/-1
Если попытаться объяснить наглядно, что мне требуется, то первые 3 дня, предположим:
Код: Выделить всё
acl win src 192.168.1.11
acl blacklist dstdomain "/etc/squid/blacklist.conf"
http_access deny win blacklist
http_access allow win
Код: Выделить всё
acl win src 192.168.1.11
acl blacklist dstdomain "/etc/squid/blacklist.conf"
http_access deny win
Насколько я поняла, режик тоже оперирует только определёнными днями недели?
-
- сержант
- Сообщения: 280
- Зарегистрирован: 2008-05-30 12:16:02
- Откуда: Киев
- Контактная информация:
Re: Squid, ограничение доступа
Ну самое простое что сейчас лезет в голову это сделать 2 конфигурационных файла в основном конфиге /usr/local/etc/squid/squid.conf
без запрета и второй с запретом в /usr/local/etc/squid/squid-deny.conf
как то так, вроде должно работать
без запрета и второй с запретом в /usr/local/etc/squid/squid-deny.conf
Код: Выделить всё
#Каждые 3 дня перезапускам squid с обычными параметрами без запрета
* * */3 * * root squid -k reconfigure > /dev/null
#и каждые 6 дней запускаем squid с конфигом на запрет но через пять минут после того как сработал первый скрипт
5 * */6 * * root squid -k reconfigure -f /usr/local/etc/squid/squid-deny.conf > /dev/null
-
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2013-08-26 16:18:42
Re: Squid, ограничение доступа
Да, это проблему решает.
Спасибо, попробую.
Спасибо, попробую.