Squid, ограничение доступа

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
hopkins
проходил мимо
Сообщения: 3
Зарегистрирован: 2013-08-26 16:18:42

Squid, ограничение доступа

Непрочитанное сообщение hopkins » 2013-08-26 16:28:33

Добрый день!

Столкнулась с такой задачей: необходимо сделать так, чтобы на одной машине доступ в интернет блокировался каждые 3 дня через каждые 3 дня. То есть 3 дня - доступ свободный, следующие 3 дня - выхода в интернет нет и т. д.
Подскажите, возможно ли это реализовать средствами сквида?
Буду очень признательна за любой совет.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Nick_mad
сержант
Сообщения: 280
Зарегистрирован: 2008-05-30 12:16:02
Откуда: Киев
Контактная информация:

Re: Squid, ограничение доступа

Непрочитанное сообщение Nick_mad » 2013-08-26 21:42:12

Здравствуйте.

Я не эксперт в сквиде но в виде "куда копать"

У меня по этому правилу определяется рабочее время.

Код: Выделить всё

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
по этому правилу в нерабочее время разрешаем группе office качать без ограничения ставите в такое правило вашу группу определяете время в которое ей нельзя никуда ходить и вроде как бы все.

Можно еще режиком сделать, описано тут, обратите внимание на комментарии, там расписано как сделать временное ограничение.
Изменение конфига РЕЖИКА по времени

В стандартных настройках РЕЖИКа нет возможности изменять правила в зависимости от времени. Придется обходить этот недостаток. Подготовку к обходу разделим на два этапа. Для простоты восприятия считаем что РЕЖИК у нас уже установлен и настроен, и что мы просто добавляем или убираем секции целиком, а не изменяем их.

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 скрипт запускается без параметров, а значит в конфиге остается только основная часть.

hopkins
проходил мимо
Сообщения: 3
Зарегистрирован: 2013-08-26 16:18:42

Re: Squid, ограничение доступа

Непрочитанное сообщение hopkins » 2013-08-27 9:46:13

Спасибо за ваш совет. Правда, мне кажется, мою задачу это не решает. Поправьте меня если я ошибаюсь.

Код: Выделить всё

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
Следующие 3 дня:

Код: Выделить всё

acl win src 192.168.1.11
acl blacklist dstdomain "/etc/squid/blacklist.conf"
http_access deny win 
3 дня блокируем только определённые ресурсы (blacklist), 3 дня полностью перекрываем человеку воздух.

Насколько я поняла, режик тоже оперирует только определёнными днями недели?

Nick_mad
сержант
Сообщения: 280
Зарегистрирован: 2008-05-30 12:16:02
Откуда: Киев
Контактная информация:

Re: Squid, ограничение доступа

Непрочитанное сообщение Nick_mad » 2013-08-27 10:07:03

Ну самое простое что сейчас лезет в голову это сделать 2 конфигурационных файла в основном конфиге /usr/local/etc/squid/squid.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
как то так, вроде должно работать

hopkins
проходил мимо
Сообщения: 3
Зарегистрирован: 2013-08-26 16:18:42

Re: Squid, ограничение доступа

Непрочитанное сообщение hopkins » 2013-08-27 10:39:52

Да, это проблему решает.
Спасибо, попробую.