IT-Service - Настройка прокси сервера Squid с доменной авторизацией
Пятница, 12 Сентябрь 2014 04:19

Настройка прокси сервера Squid с доменной авторизацией

Автор 
Оцените материал
(0 голосов)

Введение

Нужен кеширующий прокси сервер, с авторизацией из домена и проверкой на вирусы

У нас уже должна стоять Ubuntu со всеми обновлениями

 

Настройка Системы

Устанавливаем дополнительные пакеты, для дальнейшей работы

aptitude install ssh samba krb5-user havp clamav squid apache2 php5 php5-gd perl

Вход в домен

Правим конфиги

/etc/krb5.conf

[libdefaults]
default_realm = DOMEN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
DOMEN.LOCAL = {
kdc = DOMEN.LOCAL
admin_server = DOMEN.LOCAL
kpasswd_server = dc.domen.local
default_domain = domen.local
}

[domain_realm]
.domen.local = domen.LOCAL

[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

/etc/nsswitch.conf

group: files winbindd
hosts: files winbind dns
networks: files winbindd
passwd: files winbindd
shadow: files winbindd
shells: files winbindd

/etc/samba/smb.conf – Исправляем имя компа на свое

[global]
workgroup = DOMEN
realm = DOMEN.LOCAL
server string = nod1
security = ads
hosts allow = 192.168.0.0/16
load printers = no
show add printer wizard = no
log file = /var/log/samba/log.%m
password server = dc.domen.local
netbios name = nod1
auth methods = winbind
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes
case sensitive = No
socket options = TCP_NODELAY
dns proxy = no

Перезапускаем сервисы

/etc/init.d/samba restart
/etc/init.d/winbind restart

Получаем билет

kinit user@DOMEN.LOCAL

вводим пароль

Входим в домен

net ads join -U user -W DOMEN.LOCAL

Проверяем

wbinfo -u

Если вы увидели список пользователей, то Мы в домене!

Настройка Squid

/etc/squid/squid.conf

http_port 3128 transparent
icp_port 3130

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 1024 MB
cache_dir ufs /var/log/squid/cache2 50000 64 512
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl
# пользователи у которых есть доступ к фтп

acl     group_ftp      external nt_group group_ftp
# пользователи у которых просто интернет

acl     squid      external nt_group squid
# пользователи у которых есть тока аська

#acl     icq        external nt_group group_icq
# пользователи с полными парвами на доступ в инет

acl     group1          external nt_group group1
# люди с доступом к ya.ru

acl     group2          external nt_group group2
# пользователи с ограниченным доступом в инет

#только определённый набор ресурсов и всё.
acl     group3          external nt_group group3

# ACL авторизации на проксе
acl     DOMEN.LOCAL            proxy_auth     REQUIRED

acl allow_all dstdomain \
"/etc/squid/urls/allow.txt"

acl corpsite dstdomain \
"/etc/squid/urls/corpsite.txt"

acl yaru dstdomain \
"/etc/squid/urls/yaru.txt"

acl icq_hosts dstdomain \
"/etc/squid/urls/icq.txt"

acl porno dstdomain \
"/etc/squid/urls/porno.txt"

acl     full_ports              port    1-65535 #full
acl     ssl_ports               port    443     # ssl
acl     icq_ports               port    5190    # ICQ
acl     http_ports              port    80 443          # ssl
acl     ftp_ports               port    20 21           # ssl
acl     CONNECT                 method  CONNECT
acl     manager                 proto   cache_object

acl all src 0.0.0.0/0.0.0.0
acl local_net src 192.168.0.0/255.255.0.0
acl to_local dst 192.168.0.0/255.255.0.0
acl localhost src 127.0.0.1/255.255.255.255


#даем доступ для неавторизированных пользователей
http_access     allow   all    allow_all
http_access     allow   bank    full_ports
#даем доступ на сайт компании, и заодно режем все остальное
http_access	allow	DOMEN.LOCAL	corpsite

#Доступ в интернет группе group1
http_access     allow   group1          full_ports

#Доступ для фтп
http_access     allow   group_ftp               ftp_ports

#Блокируем порносайты
http_access     deny    porno

#Закрываем доступ в ICQ
http_access     deny    icq_hosts
http_access     deny    icq_ports

#Доступ к ya.ru
http_access     allow   group2          yaru

#Доступ закрыть к ya остальным
#http_access     deny   yaru

#Доступ в интернет группе squid
http_access     allow   squid           http_ports

http_access     allow   to_local

#Остальным запретить
http_access deny all

cache_peer 127.0.0.1 parent 3127 0 no-query no-digest no-netdb-exchange default
cache_peer_access 127.0.0.1 allow all
never_direct allow all

cache_effective_user proxy
http_reply_access allow all
icp_access allow all
visible_hostname PROXY.DOMEN.LOCAL SQUID Server

Создаем каталог для файлов необходимых для сквида

mkdir /etc/squid/urls/

/etc/squid/urls/allow.txt

wsus.utk.ru
updates.modemu.net

/etc/squid/urls/corpsite.txt

.corp1.ru
.corp3.ru
.corp2.ru

/etc/squid/urls/block.txt

.ekabu.ru
.fishki.net
.odnoklassniki.ru
.ej.ru
.yadro.ru
.vkontakte.ru
.slamdunk.ru
.rb.sport-express.ru
.sport.ru
.premierzal.ru
.sports.ru
.housemdtv.ru
.games.1c.ru
.youtube.com
.rutube.com
.luckymotors.ru
.suzuki-motor.ru
.hyundai.ru
.avtoberez.ru
.pogazam.ru
.u-mama.ru
.drom.ru
.sumotors.ru
.glazurit.ru
.mamba.ru
.dagomir.ru
.weburg.ru
.24open.ru

/etc/squid/urls/yaru.txt

.ya.ru
.mail.ru

/etc/squid/urls/icq.txt

.aol.com
.icq.com

Чтобы сквид мог проверять состоит ли пользователь в группе, его надо включить в группу winbind

adduser proxy winbindd_priv

Первый запуск – для создания папки хеширования файлов

squid -z

Настройка havp

/etc/havp/havp.config – ничего не изменяя

USER havp
GROUP havp
DAEMON true
PIDFILE /var/run/havp/havp.pid
SERVERNUMBER 20
MAXSERVERS 200

ACCESSLOG /var/log/havp/access.log
ERRORLOG /var/log/havp/havp.log
USESYSLOG false
SYSLOGNAME havp
SYSLOGFACILITY daemon
SYSLOGLEVEL info
LOG_OKS false
LOGLEVEL 0

SCANTEMPFILE /var/spool/havp/havp-XXXXXX
TEMPDIR /var/tmp
FORWARDED_IP false
PORT 3127
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/ru
WHITELISTFIRST true
WHITELIST /etc/havp/whitelist
BLACKLIST /etc/havp/blacklist
FAILSCANERROR false
SCANIMAGES false
MAXSCANSIZE 5000000
STREAMUSERAGENT Player Winamp iTunes QuickTime Audio RMA/ MAD/ Foobar2000 XMMS

ENABLECLAMLIB true
CLAMDBDIR /var/lib/clamav
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLESOPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
ENABLEDRWEB false

Чтобы havp мог проверять файлы на вирусы, его надо добавить в группу clamav

adduser havp clamav

Статистика

Сайт проекта: http://lightsquid.sourceforge.net/ Скачиваем – Распаковываем в каталог /var/www

Сделаем файлы исполняемыми

cd /var/www
chown -R www-data:www-data *
chmod +x *.pl *.cgi

Настроим апач2 для поддержки cgi

mcedit /etc/apache2/sites-available/default

Секцию

       <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>

Привести к такому виду

       <Directory /var/www/>
           Options Indexes FollowSymLinks MultiViews
           AddHandler cgi-script .cgi 
           AllowOverride All
           Order allow,deny
           allow from all
       </Directory>

Перезапускаем службу апача

/etc/init.d/apache2 restart

Настраиваем Lightsquid

cd /var/www

Открываем файл lightsquid.cfg Изменяем на свои пути

#path to additional `cfg` files
$cfgpath             ="/var/www";
#path to `tpl` folder
$tplpath             ="/var/www/tpl";
#path to `lang` folder
$langpath            ="/var/www/lang";
#path to `report` folder
$reportpath          ="/var/www/report";
#path to access.log
$logpath             ="/var/log/squid";
#path to `ip2name` folder
$ip2namepath         ="/var/www/ip2name";
Изменяем язык на русский
$lang                ="ru";

Настройка CRON для сбора статистики каждые 30 минут

Заходим в конфигурационный файл

mcedit /etc/crontab

Добавляем в конце файла строчку

*/30 * * * * root `/var/www/lightparser.pl today`

В конце обязательно оставляем переход строки

Прочитано 4147 раз
Авторизуйтесь, чтобы получить возможность оставлять комментарии