Настройка прокси-сервера SQUID+SAMS2 на Ubuntu

настройка прокси-сервера SQUID+SAMS2 на Ubuntu

Задача: настроить сервер обеспечивающий контроль доступа к глобальной сети Интернет. Сервер выступает как единая точка для доступа пользователей к сети WWW. После пятилетней работы прокси-сервера на freebsd в составе, которого софт: Apache, MySql, php, Squid, sams 1 версии, Rejik - сборка зарекомендовала себя очень хорошо, нагрузка не велика от 50 до 100 пользователей. Плюсы - бесплатно. Удобство - управление через Web, понятный интерфейс, обширная справка. Глюки – Sams отказывается рестартовать, было редко, но было. Обслуживание – нужно уделить особое внимание росту базы MysSql прокси

В 2015 г решился на обновление, сборка та же меняется лишь платформа на Ubuntu и Sams 2 версии, который как позже выяснилось, на момент не умел работать с Rejik. Rejik безусловно вещь полезная, но поскольку в старой сборке, к сожалению, я им почти не пользовался, поэтому Sams 2 был установлен на мой сервер
Ниже нет, подробной инструкции как установить Apache+MySql+php или как установить Squid и Sams, ниже описание тех сложностей, которые возникли при установке и настройке сборки софта Squid+Sams2 на Ubuntu, и не которые моменты, что называется для себя

 Настройка прокси-сервера SQUID+SAMS2 на Ubuntu

1. Обновляем ПО
apt-get update
apt-get upgrade

2. Устанавливаем mc, squid3
apt-get install squid3 && mc

3. Локализуем систему, устанавливаем xenserver  tools
Устанавливаем mc, bootlogd, chkconfig, vsftpd
Отключаем ipv6,устанавливаем, настраиваем ntp
dpkg-reconfigure tzdata

5. Вводим сервер в домен, устанавливаем winbind, samba
apt-get install squid3
Предлагаемые пакеты:
squidclient squid-cgi squid-purge smbclient winbindd openssl-blacklist

6. Устанавливаем все необходимое
apt-get install apache2
apt-get install mysql-server
apt-get install php5
apt-get install php5-dev
apt-get install php5-mcrypt
apt-get install php5-imagick
apt-get install php5-mysql
apt-get install php5-gd
apt-get install libmysqlclient-dev
apt-get install libpcre3-dev
apt-get install php-fpdf

7. Настраиваем чтобы squid мог читать pipe winbind
chown root:proxy -R /var/run/samba/winbindd_privileged/
Исправляем /etc/init.d/winbind
mkdir -p /var/run/samba/winbindd_privileged || return 1
chgrp proxy $PIDDIR/winbindd_privileged/ || return 1
chmod 0750 $PIDDIR/winbindd_privileged/ || return 1
start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- $WINBINDD_OPTS

8. Проверяем ntlm
/usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
Administrator password
Ответ должен быть ОК

9. В squid.conf вносим изменения
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 100
auth_param ntlm keep_alive off
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 100
auth_param basic realm Proxy Autentification Required
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
Раскомментировать
http_port 3128
Раскомментировать
access_log /var/log/squid3/access.log squid
Раскомментировать
pid_filename /var/run/squid3.pid
Раскомментировать
cache_log /var/log/squid3/cache.log
Раскомментировать
coredump_dir /var/spool/squid3
Раскомментировать эти строчки для того чтобы squid обрывал соединение после превышения лимита по трфику
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
Добавить строчку
visible_hostname name.domain.local
Останавливаем squid
stop squid3
sudo service --status-all
sudo service squid3 reload
sudo initctl list
Создаем swap Squid
squid3 -z
Перезапустим squid и убедится, что squid запустился без ошибок
etc/init.d/squid3 restart
Перечитать конфигурацию
squid3 -k reconfigure

10. Устанавливаем mysql
apt-get install mysql-server
11. Устанавливаем php
PHPLIST='php5 php5-cli php5-common php5-dev php5-mcrypt php5-imagick php5-mysql php5-gd php5-ldap php-fpdf libapache2-mod-php5'
Устанавливаем php версию
echo > /etc/apt/preferences.d/php5_3
for i in $PHPLIST ; do echo "
Package: $i
Pin: release a=precise
Pin-Priority: 991
" >> /etc/apt/preferences.d/php5_3; done
Создаем source list
echo '# needed sources vor php5.3:
deb bg.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src bg.archive.ubuntu.com/ubuntu/ precise main restricted
deb bg.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb-src bg.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb bg.archive.ubuntu.com/ubuntu/ precise universe
deb-src bg.archive.ubuntu.com/ubuntu/ precise universe
deb bg.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src bg.archive.ubuntu.com/ubuntu/ precise-updates universe
deb bg.archive.ubuntu.com/ubuntu/ precise multiverse
deb-src bg.archive.ubuntu.com/ubuntu/ precise multiverse
deb bg.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src bg.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src bg.archive.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
deb security.ubuntu.com/ubuntu precise-security main restricted
deb-src security.ubuntu.com/ubuntu precise-security main restricted
deb security.ubuntu.com/ubuntu precise-security universe
deb-src security.ubuntu.com/ubuntu precise-security universe
deb security.ubuntu.com/ubuntu precise-security multiverse
deb-src security.ubuntu.com/ubuntu precise-security multiverse
deb-src archive.canonical.com/ubuntu natty partner
deb extras.ubuntu.com/ubuntu precise main
deb-src extras.ubuntu.com/ubuntu precise main
deb bg.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src bg.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb archive.canonical.com/ubuntu precise partner
deb-src archive.canonical.com/ubuntu precise partner
' >> /etc/apt/sources.list.d/precise.list

apt-get update
apt-get -t precise install $PHPLIST
apt-get update
aptitude –f -t precise install $PHPLIST

12. Установка SAMS 2
cd /srv
wget sams.perm.ru/download/sams-2.0.0-rc1.tar.bz2
tar -xvf sams-2.0.0-rc1.tar.bz2
apt-get install make
apt-get install autoconf
apt-get install libtool
apt-get autoremove
apt-get install libldap2-dev
apt-get install libmysqlclient-dev
apt-get install libpcre3-dev
apt-get install libpcre++-dev
apt-get install build-essential
make -f Makefile.cvs
./configure

Файл libtool, который генерирует скрипт, нуждается в правке.
Набираем patch -l и вставляем следующий текст. В конце нужно два раза нажать Ctrl-D, чтобы он понял, что это конец файла.

--- libtool.old 2012-02-14 17:34:10.363994833 +0400
+++ libtool     2012-02-14 15:55:27.142358890 +0400
@@ -5986,7 +5986,8 @@
        case $dir in
        [\\/]* | [A-Za-z]:[\\/]*) ;;
        *)
-         absdir=`cd "$dir" && pwd`
+#        absdir=`cd "$dir" && pwd`
+         absdir="/usr/lib"
          test -z "$absdir" && \
            func_fatal_error "cannot determine absolute directory name of \`$dir'"
          dir="$absdir"

PS: Придумал не я взял в тырнете, память забыла, где именно
make
make install
ln -s /usr/sbin/squid3 /usr/sbin/squid
cp /init.d /etc/init.d/sams2daemon
chmod o+x /etc/init.d/sams2daemon
Редактируем скрипт /etc/init.d/sams2daemon
Нужно прописать правильный путь к конфигу sams:
SAMSPATH=`cat /usr/local/etc/sams2.conf | grep SAMSPATH | tr “SAMSPATH=” “\0″`
Включить его:
SAMS_ENABLE=true
/etc/init.d/sams2daemon start or /usr/bin/sams2daemon
ps aux | grep sams2daemon
chown root:www-data sams2.conf

13. Настраиваем Apache для Sams2
chown www-data:www-data -R /usr/local/share/sams2/

Настраиваем Apache
Alias /sams2 /usr/local/share/sams2
<Directory /usr/local/share/sams2/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>

14. Редактируем файл конфигурации php /etc/php.ini (для mod_php файл php.ini может быть в /etc/httpd/conf)
Включаем режим safe mode.
Для этого выставляем параметр safe_mode
safe_mode = On
SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo.
В режиме safe_mode php блокирует доступ к системным командам. PHP позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр: 
safe_mode_exec_dir = "/usr/local/share/sams/bin"
Далее, разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр:
disable_functions = "chdir,dl,ini_get_all,phpinfo,system,shell_exec,popen,proc_open,exec,passthru,pcntl_exec" 
и если он не пустой, убираем из него запрет вызова функций phpinfo system shell_exec exec
также убираем запрет вызова функций phpinfo system shell_exec exec в параметре:
hphp.executor.func.blacklist = chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec
safe_mode = On
safe_mode_exec_dir = /usr/share/sams/bin
disable_functions = chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec
Заходим в админку sams ip-address-proxy/sams2,
стандартные логин и пароль SAMS2 по умолчанию admin и qwerty.

15. Редиректор REJIK
РЕДИРЕКТОР REJIK не поддерживается sams2

16. В настройках интерфейса Sams2 в пункте путь к каталогу, где лежат файлы запрета нужно указывать ip прокси-сервера/sams2

Поделиться:

Добавить комментарий

1 + = 3
Решите простой математический пример. Например для "два плюс четыре =?" введите "6".