The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Запрет доступа к сайтам"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Настройка Squid и других прокси серверов (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запрет доступа к сайтам"  
Сообщение от timur_m (ok) on 20-Ноя-07, 11:30 
Помогите разобраться вот с каким вопросом.

Мажно ли выписать ресурсы Интернета к которым не должен поучать доступ пользователь в отдельный файл и как, при этом, нужно описать ссылку на файл в squid.conf?

Заранее, спасибо...

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Запрет доступа к сайтам"  
Сообщение от kia_leon (??) on 20-Ноя-07, 16:21 
>Помогите разобраться вот с каким вопросом.
>
>Мажно ли выписать ресурсы Интернета к которым не должен поучать доступ пользователь
>в отдельный файл и как, при этом, нужно описать ссылку на
>файл в squid.conf?
>
>Заранее, спасибо...

Есть два решения
1. Прокси-сервер SQUID

Прокси-сервер - это программа которая выполняет роль "прокладки" между браузером пользователя и WWW сервером. Через него проходят все запросы пользователя по протоколу http и ответы серверов пользователю. Он может фильтровать проходящий траффик по тем или иным признакам, а так же разграничивать доступ к интернету по протоколу http (в случае если используется непрозрачный прокси-сервер).
   SQUID - пожалуй, самый лучший прокси под UNIX платформу. Есть сборки и для win32, но, на мой взгляд, это уже совсем не то :) Очень богатая функциональность:
— Поддержка протоколов HTTP, FTP, SSL, HTCP, CAPR
— Каскадирование серверов
— возможность прозраного проксирования
— поддержка протокола SNMP
кэширование DNS-запросов

Устанавливаем SQUID

#cd /usr/ports/www/squid
#make && make install && make clean

Парамерты отсавляем без изменения
По завершению установки создаем конфигурачионный фаил

#rm /usr/local/etc/squid/squid.conf
#ee /usr/local/etc/squid/squid.conf

http_port 3128
icp_port 0
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 128 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 512 KB
cache_dir ufs /home/squid/cache 2048 64 256
cache_access_log /home/squid/log/access.log
cache_log /home/squid/log/cache.log
cache_store_log /home/squid/log/store.log
cache_mgr  kialeon@tmn.sng-proekt.ru
visible_hostname http://rusgazen.ru
tcp_outgoing_address 200.168.1.200
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
redirect_program /home/squid/redirector.pl
redirect_children 10

acl     all             src             0.0.0.0/0.0.0.0
acl     allowed_sites   dstdomain      "/home/squid/allowed_sites.conf"
acl     limited_IP      src             "/home/squid/limited_IP.conf"
acl     localhost       src             127.0.0.0/8
acl     our_networks    src             192.168.0.0/23  
acl    denied_sites    dstdomain  "/home/squid/denied_ext.conf"
http_access    deny    denied_sites
http_access     allow   allowed_sites
http_access     deny    limited_IP
http_access     allow   our_networks
http_access     allow   localhost
http_access     deny    all

#httpd_accel_host virtual
#httpd_accel_port 80
#httpd_accel_uses_host_header on

coredump_dir /home/squid/cache
pid_filename /home/squid/log/squid.pid


Применчание:
tcp_outgoing_address 200.168.1.200 #Внешний IP
acl     our_networks    src             192.168.0.0/23  #IP сети которую выпускаем в инет

Это - самый минимум конфигурации, для прозрачного проксирования, и списков людей, которым можно посещать лишь малое количество сайтов (сайты описаны в файле allowed_sites.conf, а ip компов в файле limited_IP.conf), и списка сайтов на которые ходить нельзя никому (denied_ext.conf).

Далее создаем файлы описанные в конфиге

#mkdir -p /home/squid
#mkdir -p /home/squid/log
#mkdir -p /home/squid/cache
#touch /home/squid/allowed_sites.conf
#touch /home/squid/limited_IP.conf
#touch /home/squid/denied_ext.conf
#touch /home/squid/redirector.pl
#cd /home/squid
#chmod +x redirector.pl
#chown -R squid:wheel /home/squid/log/
#chod 777 /home/squid/cache
#echo 'squid_enable="YES"' >> /etc/rc.conf
#squid -z
2005/09/20 14:51:04| aclParseAclLine: WARNING: empty ACL: acl
2005/09/20 14:51:04| aclParseAclLine: WARNING: empty ACL: acl
2005/09/20 14:51:04| aclParseAclLine: WARNING: empty ACL: acl
2005/09/20 14:51:04| Creating Swap Directories

Всё нормально, не считая ругани на пустые файлы ACL. На это можно не обращать внимания, или забить туда какие-ньть адреса. Тогда он  ругаться перестанет.
  Вот содержимое файла /home/squid/redirector.pl

#ee /home/squid/redirector.pl

#! /usr/bin/perl

$0 = 'redirect' ;
$| = 1 ;

open (IN_FILE, "/home/squid/denied_ext.conf") || die $!;
my @tmp_data = <IN_FILE>;
chomp @tmp_data;
push @banners, map { qr /\Q$_\E/ }  grep { ! /^\s*$/ } @tmp_data;
close IN_FILE;

while (<>) {
    ($url, $who, $ident, $method, $hz) = /^(\S+) (\S+) (\S+) (\S+) (\S+)$/ ;
    $url = 'http://rusgazen.ru/'
        if grep ($url=~/$_/i, @banners) ;
    print "$url $who $ident $method\n" ;
}


Это простенький перловый скрипт, перебирающий переданный ему URL на соответствие шаблонам лежащим в файле denied_ext.conf, и если они подходят, то вместо этого УРЛа он отдаёт другой – http://rusgazen.ru по которому лежит мелкий рисунок серого цвета (белый неудобно - у меня до кучи он баннеры режет и белые дыры на страницах не смотрятся вообще...)
   Ну, а теперь пристегните ремни, сейчас мы попробуем взлететь со всем этим хозяйством (копирайт из старого-старого анекдота):

#cd /usr/local/etc/rc.d/
#squid start
Starting squid.
2005/09/20 15:28:35| aclParseAclLine: WARNING: empty ACL: acl allowed_sites
2005/09/20 15:28:35| aclParseAclLine: WARNING: empty ACL: acl limited_IP
2005/09/20 15:28:35| aclParseAclLine: WARNING: empty ACL: acl denied_sites
#ps -ax | grep squid
73072  ??  Ss     0:00.00 /usr/local/sbin/squid -D
73074  ??  D      0:04.75 (squid) -D (squid)
73087  p0  D+     0:00.00 grep squid
#ps -ax | grep perl
73075  ??  Is     0:00.03 redirect (perl)
73076  ??  Is     0:00.03 redirect (perl)
73077  ??  Is     0:00.03 redirect (perl)
73078  ??  Is     0:00.03 redirect (perl)

Всё нормально. Добавляем правило в файрволл (ipfw), до divert natd:
#ipfw add 100 fwd 127.0.0.1,3128 tcp from 192.168.0.0/23 to any 80 via em0

Где em0 - внешний интерфейс, и всё, можно работать. Если на ходу возникает необходимость переконфигурить squid то перезапускать необязательно, можно дать команду
#squid -k reconfigure
или
#killall -1 squid

Заполняйте файлы с разрешениями-запретами, и пользуйтесь. Клиентов настраивать не нужно - достаточно указать шлюзом по-умолчанию машину со squid - всё остальное сделает ipfw - перекинет пакеты на squid.

И второй
Собираем из портов  SquidGuard
# cd /usr/ports/www/squidguard

Создаем конфигурационный фаил.
#ee /usr/local/etc/squid/squidGuard.conf
logdir /home/squid/SquidGuard/log
dbhome /home/squid/SquidGuard

src it-department {     # описываем адреса отдела ИТ
ip 200.168.1.202-200.168.1.220
log it-department
}

src it-user {     #  Юзвери
ip 200.168.1.1-200.168.1.201
log it-user
}

src it-server {     # Сервера
ip 200.168.0.1-200.168.0.254
log it-server
}

rewrite mp3 {     #Константа подмены mp3
s@.*\.mp3$@http://s-proxy/block.mp3@r
log rewr_mp3
}

dest porn {        #Описывам ПОРНО
expressionlist porn/1            #Обрезает по словам в адресной строке
domainlist      porn/domains    #Обрезает по доменам
urllist         porn/urls            #Обрезает по URL
log porn
}

acl {   # начинаем раздавать права

it-department {
pass !porn all        # отделу ИТ можно все
redirect http://200.168.0.1/deny.html
rewrite mp3
}

it-user {
pass all       # Можно все кроме пормно mp3 и малоли что потом придумаю
redirect http://200.168.0.1/deny.html
}

it-server {
pass none       # отделу ИТ можно все кроме рекламы
redirect http://200.168.0.1/deny.html
}


default {       # действия выполняемые по умолчанию, если пользователь не описан ни в одном src
pass none       # блокируем все
redirect http://200.168.0.1/deny.html
log default     # пишем логи в файл /usr/local/squidGuard/log/default
}

}       # закрываем список acl


Далее создаем файлы описанные в конфиге

#mkdir -p /home/squid/SquidGuard/log
#mkdir -p /home/squid/SquidGuard/
#cd /home/squid
#chown -R squid:wheel /home/squid/SquidGuard/
#chown -R squid:wheel /home/squid/SquidGuard/log
#chod 777 /home/squid/SquidGuard/
#chod 777 /home/squid/SquidGuard/log

Далее переносим базы с /var/db/squidGuard/ в /home/squid/SquidGuard/
и делаем всем перенесенным папкам и файлам права 777.

#chod 777 /home/squid/SquidGuard/porn
#chod 777 /home/squid/SquidGuard/porn/*

и так далее по всем каталогам.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Запрет доступа к сайтам"  
Сообщение от Аноним on 21-Ноя-07, 07:02 
>Помогите разобраться вот с каким вопросом.
>
>Мажно ли выписать ресурсы Интернета к которым не должен поучать доступ пользователь
>в отдельный файл и как, при этом, нужно описать ссылку на
>файл в squid.conf?
>
>Заранее, спасибо...

в squid.conf создаешь acl, например:
acl bad_url url_regex "/etc/squid/acl/badsait"

в этом файлике прописываешь адреса которые хочешь закрыть.

далее в squid.conf запрещаешь доступ:

http_access allow main !bad_url

предполагается что acl main, это какой-то твой используемый acl (группа адресов или группа пользователей)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Запрет доступа к сайтам"  
Сообщение от timur_m (ok) on 21-Ноя-07, 12:17 
>[оверквотинг удален]
>acl bad_url url_regex "/etc/squid/acl/badsait"
>
>в этом файлике прописываешь адреса которые хочешь закрыть.
>
>далее в squid.conf запрещаешь доступ:
>
>http_access allow main !bad_url
>
>предполагается что acl main, это какой-то твой используемый acl (группа адресов или
>группа пользователей)

Все работает, разобрался. Спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру