1 (30.11.2010 13:12:53 отредактировано joe_no_gui)

В данной статье я постараюсь наиболее подробно рассмотреть установку и настройку http proxy server'a Squid и одно из средств его администрирования Sams на дистрибутиве Debian 5 Lenny,

Первый и наиболее важный вопрос - для чего он нужен?.
Прокси сервер необходим тогда, когда необходимо ограничить доступ к интернет ресурсам, нарезать трафик для пользователей(квота) а так же он помогает защитить клиентские машины от некоторых сетевых атак.
Самс в частности веб форма о которой пойдет речь есть удобное гуи (ня!) для администрирования.

Итак приступим.
Мы имеем машину в двумя сетевыми интерфейсами один из которых смотрит во внутрь локальной сети с другого будет реализована раздача интенетов и установленный Debian 5.
Система разумеется должна быть без иксов(X-server) ибо нефиг!
Назовем их eth0 (во внутрь) и eth1(интернеты раздает).
eth1 вы настраиваете таким образом каким требует ваш провайдер - будь то pppoe или что иное.
для eth0 мы зададим статичный ip адрес принадлежащий маске нашей локальной сети.
Используем для этого команду
#ifconfig eth0 inet 192.168.0.224 netmask 255.255.255.0
#ifconfig eth0 up
После этого можно проверить поднялся ли интерфейс eth0 с помощью команды
#ifconfig eth0
А так же попинговать айпи адрес нашего прокси-сервера со своей машины с которой собственно в дальнейшем и будет проводиться настройка.
Однако разумеется более правильно было бы сделать прописав настройки для сетевого интерфейса eth0 в /etc/network/interfaces заставив получать его заданный нами статичный апи адрес каждый раз при загрузке демона /etc/init.d/networking/
для этого сделаем следующее:
#nano /etc/network/interfaces
и допишим там следующии строчки
auto eth0
iface eth0 inet static
        address 192.168.0.224
        netmask 255.255.255.0
После этого надо перезапустить демона
#/etc/init.d/networking restart
После этого необходимо настроить интернеты на eth1.
Это я оставляю уже на ваше усмотрение.
После того как с нашего прокси сервера пошли пинги во всемирную паутину нужно подправить список репозиториев и выполнить команду apt-get update.
#nano /etc/apt/sources.list
#apt-get update

Далее нам остается поставить еще две вещи - ssh и midnight commander.
#aptitude install ssh
#aptitude install mc
После этого мы можем со спокойной совестью отключить все те лишние устройства что использовались при установки Debian будь то мышь, клавитура, монитор или что еще могло быть. Поставить Прокси сервер на свое законное место и подключаться на него уже используя ssh и продолжать настройку удаленно.

Для установки Sams нам понадобятся следующии пакеты:
#aptitude install apache2 apache2-mpm-prefork
#aptitude install php5 libapache2-mod-php5 php5-cli php5-common php5-mysql php5-gd
#aptitude install mysql-server-5.0 mysql-client-5.0 libmysqlclient15off
#aptitude install squid
#aptitude install libpcre3
Кроме того можно установить phpmyadmin
#aptitude install phpmyadmin
Кроме того могут понадобится пакеты:
squidguard - Для использования редиректора squidguard
php5-ldap - Для авторизации пользователей в Active Directory | LDAP
php-fpdf - Для генерации pdf отчетов
Их установка выполяется опять-таки через консоль командами:
#aptitude install squidguard
#aptitude install php5-ldap
#aptitude install php-fpdf
Далее необходимо собственно скачать сам Sams.
Мы будем качать .deb пакеты, хотя конечно вы можете поставить и из исходников.
#wget -c "http://nixdev.net/release/sams/debian/l … 5_i386.deb"
Этот пакет для 32 битных систем
#wget -c "http://nixdev.net/release/sams/debian/l … _amd64.deb"
Этот пакет под 64 битные.
Кроме того скачаем доки и собственно вебформу.
wget -c "http://nixdev.net/release/sams/debian/l … .5_all.deb"
wget -c "http://nixdev.net/release/sams/debian/l … .5_all.deb"
Далее необходимо собственно распаковать пакеты.
Для начала распакуем собственно Sams и подправим его чтобы демон запускался.
#dpkg -i sams_1.0.5_i386.deb
или
#dpkg -i sams_1.0.5_amd64.deb
Далее необходимо подправить /etc/init.d/sams и /etc/sams.conf
В /etc/init.d/sams необходимо сменить значение SAMS_ENABLE с FALSE на TRUE.
В /etc/sams.conf необходимо поправить значения MYSQLUSER и MYSQLPASSWORD на ваши.
Далее нужно создать в mysql БД под Sams.
#cd /usr/share/sams/mysql
# mysql -u root -p < sams_db.sql
#mysql -u root -p < squid_db.sql
Далее нужно настроить свой Apache2.
Для этого идем в /etc/php5/apache2/php.ini

Влючаем safe мод
safe_mode = On
safe_mode_exec_dir = "/usr/share/sams/bin"
Все.
Далее мы будем возится с веб мордой самса.
Делаем
#dpkg -i sams-web_1.0.5_all.deb
#dpkg -i sams-doc_1.0.5_all.deb
В принципе после этого не создается ссылка на каталог самс в дирректории /var/www/
И вам будет необходимо создать ее вручную.
#ln -s /usr/share/sams /var/www/sams
Далее необходимо поправить в исходниках вебформы сам функцию GetHostName.
Дело в том что при обновлении движка php была использованна одноименная функция так что GetHostName необходимо заменить на любое другое к примеру GetName.
Файлы в которых необходимо провести эту замену:
/usr/share/sams/src/configtray.php
/usr/share/sams/src/webconfigtray.php
После замены функции веб-форма настройки Sams будет доступна по адресу http://192.168.0.224/sams
Если вы увидели что то типа Access forbiden то необходимо задать права на каталог самс.
#chown www-data:www-data /usr/share/sams
Собственно далее вам необходимо выбрать способ авторизации юзера на прокси сервере.
Рассмотрим ip и ncsa.
Ip
Когда юзеры авторизируются по ip адресу - вы просто создаете их через вебформу sams указывая в даных юзера - ip адресс   к примеру 192.168.0.100 и маску 255.255.255.255.
После этого жмете реконфигурировать самс и вуаля - юзер проходит.
Ncsa
В этом в случае эзер получит диалоговое окно с просьбой ввести логин пароль.
Для того чтобы такое окно получить необходимо сначала поправить вручную конфиг squid/
#nano /etc/squid.conf
и дописать туда
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
после этого перезапустите squid и самс.
#/etc/init.d/squid restart
#/etc/init.d/sams restart
Собственно далее вы опять-таки создаете юзеров. Веб форма русифицированна так что проблем с ней нет.
Можно сказать что это все, однако! вам следует учесть, что несмотря на то что вы выпускаете юзеров через прокси-сервер и даете им интернет следует учесть что squid это http прокси сервер и не может проксировать pop3 и smtp запросы. Проще говоря вы можете получить почту через веб браузер но не сможете получить ее через почтовые программы аля outlook или the bat!
И следующий весьма! важный момент состоит именно в том что вы сделаете.
Вы можете настроить iptables и открыть 25 110 и любые необходимые порты, однако  в этом случае Sams не будет считать проходящий через них трафик.
Вы можете сделать свой почтовый сервер на Exchange или postfix+dovecot.
Либо заставить всех пользователей получать почту через браузер) ag

2

joe_no_gui, спасибо за подробный мануал, прямо вот сейчас копаюсь - пока все получается ab
но есть несколько замечаний:
>В /etc/sams.conf необходимо поправить значения MYSQLUSER и MYSQLPASSWORD на ваши.
Тут стоить пояснить что пользователя для бд нужно будет создать самому. проще всего сделать через phpmyadmin, иначе зачем его ставили?  wink
>Влючаем safe мод
можете пояснить для чего он нужен?
>#ln -s /usr/lshare/sams /var/www/html/sams
изначально в /var/www лежал только один index.html, папку html пришлось создать.
>После замены функции веб-форма настройки Sams будет доступна по адресу http://192.168.0.224/sams
Может быть http://192.168.0.224/html/sams?

P.s.
и исправьте опечатки:
>#dpkh -i sams_1.0.5_amd64.deb
>#ln -s /usr/lshare/sams /var/www/html/sams

3 (30.11.2010 13:10:52 отредактировано joe_no_gui)

Привет Leo56!
Поправил опечатки.
Обратите внимание что создание БД для Самс происходит  с помощью sql запросов которые однозначно указывают параметры таблиц созданных БД. Таким образом, если вы желаете создавать БД для Самс через phpmyadmin вам необходимо открыть .sql запросы
/usr/share/sams/mysql/sams_db.sql
/usr/share/sams/mysql/squid_db.sq
в любом тестовом редакторе будь то gedit kate или что еще и скопировав запрос вставить его в поле выполнения в phpmyadmin.
Safe_mod ограничивает некоторые потенциально опасные функции php.
К сожалению мои знания о безопасности очень скудны вследствие чего не могу достаточно подробно раскрыть эту тему.
По поводу нахождения вебформы самс прошу обратить внимание на структуру папки /var/www/
Как правильно вы заметили там находиться лишь файл index.html с содержанием что то типа <html>It works</html>.
Командой
#ln -s /usr/share/sams /var/www/sams
мы создадим ссылку на папку с самс в /var/www/
Таким образом вебформа будет доступна по ссылке http://192.168.0.224/sams
Либо как вы правильно заметили если использовать команду
#ln -s /usr/share/sams /var/www/html/sams
предворительно создав папку html
#mkdir /var/www/html
То веб форма будет доступна во ссылке http://192.168.0.224/html/sams


Что касается пользователя БД Sams  в MYSQL то да, вы должны либо создать его и дать ему права 777 на БД Sams, либо просто использовать параметры root.

4 (30.11.2010 14:22:53 отредактировано leo56)

joe_no_gui, делал все шаг за шагом, в конце что-то споткнулся:
после добавления строк

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

сквид перестает запускаться, без них работает. и файла etc/squid/ncsa.sams у меня нет. даже поиск по всему диску результата не дает.

И как добавлять пользователей в самс? я когда захожу на веб форму, я вижу только пустые группы administrators и users. Когда перехожу на страницу User authenticate то меня просят Enter password of the user " Administrator " - и ни один из моих паролей не подходит. пустой тоже. И еще, после попытки авторизоваться сверху выскакивают варинги:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 31 in /usr/share/sams/main.php on line 181

Warning: Cannot modify header information - headers already sent by (output started at /usr/share/sams/main.php:181) in /usr/share/sams/main.php on line 184

Warning: Cannot modify header information - headers already sent by (output started at /usr/share/sams/main.php:181) in /usr/share/sams/main.php on line 185

Вроде ничего страшного?

udp: Нашел в базе squidctrl в таблице passwd строки user - Admin, pass - <какой-то забубенный пароль> - тоже не подходит, но когда пытаюсь зарегиться под ним, самс не выдает варингов.

5 (30.11.2010 14:30:33 отредактировано w03zd8rc)

>После замены функции веб-форма настройки Sams будет доступна по адресу http://192.168.0.224/sams
Может быть http://192.168.0.224/html/sams?

нет именно http://192.168.0.224/sams

>Влючаем safe мод
можете пояснить для чего он нужен?

иначе самс не получит возможность редактировать конфиги сквида, и соответственно лешится 2/3 своего назначения

>#ln -s /usr/lshare/sams /var/www/html/sams
изначально в /var/www лежал только один index.html, папку html пришлось создать.

тут уже у автора опечатка, должно быть

 Консоль:
ln -s /usr/lshare/sams /var/www/sams

PS статья не полна, почти не затронута настройка сквида. Должны быть внесены изменения в конфиг сквида для манипуляции посредством самса, а у автора затронута только авторизация пользователей, и то неполностью (как и сказано не описано откуда собственно взять ncsa_auth (подсказка: тут нужна самба с некоторыми плюшками bx))

6 (30.11.2010 14:36:38 отредактировано joe_no_gui)

Сточку написанную ниже необходимо подправить  и указать директории куда у вас установился Sams - /usr/lib/squid/ncsa_auth
И затем подправьте строчку в конфиге /etc/squid/squid.conf
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams

И очень хороший вопрос про пароль к вебформе Sams
login admin
passwd qwerty

7

как и сказано не описано откуда собственно взять ncsa_auth

так этот файл у меня есть, /etc/squid/ncsa.sams нету. и что-то гугль внятного ничего про него не говорит, в одном месте вообще советуют править исходники.

8 (30.11.2010 15:02:35 отредактировано w03zd8rc)

как и сказано не описано откуда собственно взять ncsa_auth (подсказка: тут нужна самба с некоторыми плюшками)

извиняюсь, перепутал с ntlm_auth =)
а ncsa.sams советую посмотреть в папке куда установлен самс
PS и если не трудно, поясните пожалуйста ncsa авторизиция это как? Логин-пароль в вебформе?

9 (23.06.2011 13:56:00 отредактировано Nigelist)

Пытаюсь установить php5-mysql php5-gd php5-mcrypt, ругается на зависимости. Как решить подскажите?

 Консоль:
root@smserv:~# aptitude -f install php5-mysql php5-gd php5-mcrypt
Следующие НОВЫЕ пакеты будут установлены:
  libmcrypt4{a} libt1-5{a} php5-gd{b} php5-mcrypt{b} php5-mysql{b}
0 пакетов обновлено, 5 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 383 kB архивов. После распаковки 1 200 kB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
  php5-gd: Зависит: php5-common (= 5.3.3-7) но установлен 5.3.3-7+squeeze1
  php5-mcrypt: Зависит: php5-common (= 5.3.3-7) но установлен 5.3.3-7+squeeze1
  php5-mysql: Зависит: php5-common (= 5.3.3-7) но установлен 5.3.3-7+squeeze1
Следующие действия разрешат зависимости:

     Сохранить для следующих пакетов их текущие версии:
1)     php5-gd [Не установлен]
2)     php5-mcrypt [Не установлен]
3)     php5-mysql [Не установлен]



Принять данное решение? [Y/n/q/?]

10

apt-get install apache2 apache2-mpm-prefork

apt-get install libapache2-mod-php5 php5-cgi php5-common php5-mysql php5-gd

apt-get install mysql-server mysql-client libmysqlclient15off

apt-get install squid

apt-get install libpcre3

apt-get install libpcre3-dev libmysqlclient15-dev phpmyadmin

apt-get install subversion

Переходим

cd /usr/src

Забераем через svn

svn co http://svn.nixdev.net/svn/sams/tags/1.0.5

cd 1.0.5

./configure –with-httpd-locations=/var/www

make

make install

После этого рекомендую заменить init скрипт sams, на скрипт специально измененный для Debian:

cp debian/init.d /etc/init.d/samsd

chmod +x /etc/init.d/samsd

nano /etc/init.d/samsd

Изменяем значение SAMS_ENABLE на true

update-rc.d samsd defaults

mysql -u root -p

GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";

yourpassword - пароль

Создаем базы SAMS в MySQL

Для этого перемещаемся в каталог ./mysql и там даем команды:

cd mysql

mysql -u root -p < sams_db.sql

mysql -u root -p < squid_db.sql

Настройка PHP: С текущей версии SAMS научился работать с PHP в режиме safe_mode=On. Но это требует дополнительной настройки конфигурации. Для этого редактируем файл конфигурации php /etc/php5/apache2/php.ini.

SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:

nano /etc/php5/apache2/php.ini

    safe_mode = On

    safe_mode_exec_dir = "/usr/local/share/sams/bin"

Все. PHP готов к работе.

У меня возникли ошибки вот метод избавления. Ищим и заменяем GetHostName в GetHostNameSams

nano /usr/local/share/sams/src/webconfigtray.php

nano /usr/local/share/sams/src/configtray.php

Настройка SAMS:

Теперь web-интерфейс SAMS доступен по адресу http://localhost/sams/

Для доступа к web-интерфейсу используйте следующие логин/пароль: admin/qwerty

Т.к. пароль администратора и аудитора установлен по умолчанию - рекомендуется сразу сменить его через web-интерфейс

После этого необходимо настроить параметры работы samsdaemon: тип авторизации пользователей, частота парсинга логов и реконфигурации squid, и прочее

После этого можно создавать пользователей и запускать samsd

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

11 (24.06.2011 13:43:00 отредактировано Nigelist)

Kettler пишет:

apt-get install apache2 apache2-mpm-prefork

apt-get install libapache2-mod-php5 php5-cgi php5-common php5-mysql php5-gd

apt-get install mysql-server mysql-client libmysqlclient15off

apt-get install squid

apt-get install libpcre3

apt-get install libpcre3-dev libmysqlclient15-dev phpmyadmin

apt-get install subversion

Пакеты php5-mysql php5-gd, не желают ставиться. Ругается на зависимости. Выхлоп выложил выше.

Дело как я понимаю в названиях пакетов необходимых по зависимостям: нужен по зависимостям php5-common 5.3.3-7, но установлен php5-common 5.3.3-7+squeeze1, потому и ругается на порушенные зависимости. Можно ли как нибудь решить?

12

apt-get update
apt-get upgrade
?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

13 (24.06.2011 15:53:06 отредактировано Nigelist)

Kettler, конечно же я поставил последние обновления. Может где-то надо сделать простой сим-линк?

14

Зачем aptitude -f install

пробуй

apt-get install

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

15

Kettler, пробовал в первую очередь. Та же ерунда.

16

У меня не чего подобного нет через apt-get

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

17

Kettler, а как можно битый пакет исправить? Можно ли принудительно переустановить?

18 (25.06.2011 08:05:55 отредактировано Nigelist)

Kettler, решил проблему с php5-common. Можно ли устанавливать libmysqlclient16 вместо libmysqlclient15off? И что за команда svn? Обязательно ли устанавливать из исходников? Есть ведь deb-пакеты?

19

Можно libmysqlclient16. Svn выкачиваешь последние исходные.
На счёт deb ваше дело.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

20

Kettler пишет:

cd 1.0.5

./configure –with-httpd-locations=/var/www

make

make install

Kettler, а не подскажете, как собрать пакет с необходимыми зависимостями?

21

ну за место make install
checkinstall ток без зависимостей (но deb пакет).

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

22

А есть что-нибудь попроще для начинающих,типа user gate, что-нить с gui?

23

detalik пишет:

А есть что-нибудь попроще для начинающих,типа user gate, что-нить с gui?

traffpro

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

24

joe_no_gui, спасибо за отличную статью!

25

Всем привет.
поставил самс 1.0.5 на debian 6. В веб-форме не отображается настройка, то есть не могу поставить авторизацию по ip. в чем проблема? направьте в нужную сторону

Настройка wifi ремонт компьютеров

26

автоматическое поднятие pppoe соединения при разрыве соединения? Кто может подсказать?

27 (25.08.2012 04:46:06 отредактировано nkl)

Наконец таки научился из консоли править настройки сетевых интерфейсов, поднимать и отключать их. Но у меня возникает некоторая проблема, при подъеме сразу двух сетевых интерфейсов. Если выполнить

ifup eth0 eth1

то оба интерфейса поднимаются нормально, и локалка пингуется и интернет. Но если выполнить

/etc/init.d/networking restart

, то поднимается только eth1 который смотрит в локалку. Вот как выглядит /etc/networking/interfaces:

# This file describes the network interfaces available on your system
 # and how to activate them. For more information, see interfaces(5).

 # The loopback network interface 
 auto lo
 iface lo inet loopback

 # The WAN network interface
 iface eth0 inet dhcp

 # The LAN network interface
 iface eth1 inet static
 address 192.168.0.2
 netmask 255.255.255.0

 auto eth1
 auto eth2
 

автоматическое поднятие pppoe соединения при разрыве соединения? Кто может подсказать?

Имхо написать сценарий который будет постоянно пинговать какой-то интернет ресурс и в случае не прохождения пинга выполнять ifup [нужное соединение], не?

28

Про фаер не написал, материал не закончен.