Предисловие.
В данной статье рассматривается установка прокси-сервера в расчете на 50 пользователей. Прокси-сервер будет развернут на обычном компьютере Core 2 Duo CPU, 2G RAM, 80G HDD. В качестве прокси-сервера выбран SQUID с авторизацией доменных пользователей. Для статистики и управления будем использовать SAMS. Для проверки трафика - антивирус Kaspersky Proxy Server.Установка операционной системы.
В качестве операционной системы будем использовать FreeBSD 9.0 (последний релиз на время написания статьи). Установка описана в статье "Инсталляция FreeBSD 9.0".Рекомендации при ручном создании разделов:
- swap - 2G (равный объему RAM);
- раздел "/" - 1G;
- раздел "/tmp" - 1G;
- раздел "/usr" - 6G;
- раздел "/var/log" - 2G;
- раздел "/var" - остальное (базы данных mysql и kaspersky находятся в этом разделе).
Начальные установки FreeBSD 9.0.
Начальные установки FreeBSD 9.0 описаны в статье "Начальные установки FreeBSD 9.0"
Начальная настройка сетевого экрана.
Проводим перекомпиляцию ядра с целью включения поддержки сетевого экрана IPFW и производим начальную настройку. Это описано в статье "Настройка IPFW".Начальные установки FreeBSD 9.0 описаны в статье "Начальные установки FreeBSD 9.0"
Установка MySQL.
Установка MySQL описана в статье "Установка MySQL 5.5".Установка WEB-сервера.
Установка WEB-сервера "Apache" c поддержкой MySQL и PHP5 описана в статье "Установка web-сервера Apache с поддержкой MySQL, PHP5". При использования в дальнейшем SAMS, необходимо при инсталляции пакета "php53-extentions" включить поддержку GB (используется для рисования графиков), LDAP, MYSQL, OPENSSL, PDF.Настройка безопасного подключения к WEB-серверу, описана в статье "Настройка Apache с поддержкой SSL".
Настройка подключения к WEB-серверу с использованием авторизации (имя пользователя/пароль) описана в статье "Подключение к web-серверу Apache с авторизацией".
Установка SAMBA.
Инсталляция SAMBA.
cd /usr/ports/net/samba36
cd /usr/ports/net/samba36
make config
make install clean
rehash
Некоторые настройки описаны здесь.
mcedit /usr/local/etc/smb.conf
workgroup = NET
server string = PROXY Server
security = ADS
load printer = no
password server = pdc.net.domain
realm = NET.DOMAIN
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
winbind separator = +
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
encrypt passwords = yes
Делаем резервную копию конфигурационного файла.
cp /usr/src/crypto/heimdal/krb5.conf /usr/src/crypto/heimdal/krb5.conf.sample
Настраиваем конфигурационный файл Kerberos.
mcedit /usr/src/crypto/heimdal/krb5.conf
где 172.20.40.10 - наш контроллер домена.
Настраиваем конфигурационный файл коммутатора службы имен.
mcedit /etc/nsswitch.conf
group: files winbind
passwd: files winbind
На контроллере домена создаем пользователя squiduser с правами администратора домена (пароль - "SQUIDUSERpassword2".
Получаем билет.
kinit -p squiduser
Вводим пароль пользователя squid - "SQUIDUSERpassword2".
Проверяем наличие билета.
klist
Подключаемся к домену.
net ads join -U squiduser
Вводим пароль пользователя squiduser - "SQUIDUSERpassword2".
Проверяем наличия нашего сервера в домене.
mcedit /etc/rc.conf
samba_enable="YES"
winbindd_enable="YES"
*Примечание. Всегда указывал только winbindd_enable="YES", однако при данной установке winbind не хотел запускаться при перезагрузке, выходом стало указание samba_enable="YES" перед winbind.
/usr/local/etc/rc.d/samba onestart
Проверяем в процессах.
ps aux | grep smb
Проверяем.
wbinfo -p
Ping to winbindd succeeded
wbinfo -t
checking the trust secret for domain NET via RPC calls succeeded
wbinfo -u
Выводит всех пользователей домена.
Установка SQUID.
Инсталляция прокси-сервера.cd /usr/ports/www/squid31
make config
make install clean
rehash
Настройка конфигурационного файла.
mcedit /usr/local/etc/squid/squid.conf
Настройка авторизации.
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="NET+d-internet-squid"
auth_param ntlm children 30
auth_param ntlm keep_alive off
auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="NET+d-internet-squid"
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
rehash
Настройка конфигурационного файла.
mcedit /usr/local/etc/squid/squid.conf
Настройка авторизации.
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="NET+d-internet-squid"
auth_param ntlm children 30
auth_param ntlm keep_alive off
auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="NET+d-internet-squid"
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
http_access allow localhost
acl NET proxy_auth REQUIRED
http_access deny all
Здесь "NET" - название нашего домена, "d-internet-squid" - группа, присутствие в которой дает право пользоваться прокси-сервером (данная группа создана на контроллере домена). На что следует обратить внимание - в значении параметра -require-membership-of задана запись "NET+d-internet-squid". В этой записи знак "+" - это значение параметра "winbind separator" из конфигурационного файла SAMBA (smb.conf) и задан следующим образом: "winbind separator = +".
Меняем права.
chown root|squid /var/db/samba/winbindd_privileged
Создаем кэш-директории.
squid -z
Добавляем в загрузку.
mcedit /etc/rc.conf
squid_enable="YES"
Запускаем.
/usr/local/etc/rc.d/squid start
Проверяем запущенные процессы.
ps aux
acl NET proxy_auth REQUIRED
http_access allow NET
http_access deny all
Здесь "NET" - название нашего домена, "d-internet-squid" - группа, присутствие в которой дает право пользоваться прокси-сервером (данная группа создана на контроллере домена). На что следует обратить внимание - в значении параметра -require-membership-of задана запись "NET+d-internet-squid". В этой записи знак "+" - это значение параметра "winbind separator" из конфигурационного файла SAMBA (smb.conf) и задан следующим образом: "winbind separator = +".
Меняем права.
chown root|squid /var/db/samba/winbindd_privileged
Создаем кэш-директории.
squid -z
Добавляем в загрузку.
mcedit /etc/rc.conf
squid_enable="YES"
Запускаем.
/usr/local/etc/rc.d/squid start
ps aux
Установка SAMS.
Инсталляция SAMS.
cd /usr/ports/www/sams
cd /usr/ports/www/sams
make install clean
Во всех зависимых пакетах устанавливаем поддержку NTLM, убираем поддержку IPv6.
rehash
Настраиваем конфигурационный файл SAMS.
cp /usr/local/etc/sams.conf.sample /usr/local/etc/sams.conf
mcedit /usr/local/etc/sams.conf
MYSQLPASSWORD=SAMSpassword1
MYSQLVERSION=5.5
SQUIDLOGDIR=/var/log/squid
LDAPUSER=squiduser
LDAPUSERPASSWD=SQUIDUSERpassword2
LDAPUSERSGROUP=Users
Другие настройки будем делать через web-браузер. Для этого настроим web-сервер.
mcedit /usr/local/etc/apache22/httpd.conf
Alias /sams "/usr/local/share/sams/"
<Directory "/usr/local/share/sams/">
AllowOverride AuthConfig
Options Indexes MultiViews
Order allow,deny
Allow from all
</Directory>
Настройка PHP.
cd /usr/local/etc
Если нет файла php.ini, создаем его.
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
mcedit /usr/local/etc/php.ini
safe_mode = On
safe_mode_exec_dir = "/usr/local/share/sams/bin"
Проверяем конфигурационный файл Apache.
apachectl configtest
Если - "Syntax OK", перегружаем Apache.
apachectl graceful
Для создания баз данных в MySQL 5.5 необходимо произвести замены для инсталляции баз данных. Если не поменять, будут ошибки при создании баз данных MySQL при запуске инсталляции через браузер.
mcedit /usr/local/share/sams/data/sams_db.sql
Меняем значения "TYPE=MyISAM" на значение "ENGINE=MyISAM".
mcedit /usr/local/share/sams/data/squid_db.sql
Меняем значения "TYPE=MyISAM" на значение "ENGINE=MyISAM".
Запускаем в браузере - http://squid.net.domain/sams
Нажимаем на "Run SAMS databases installation script".
Вводим пароли root (создавали при инсталляции MySQL) и пароль sams (в файле sams.conf).
Базы успешно созданы.
Добавляем в загрузку
mcedit /etc/rc.conf
sams_enable="YES"
Запускаем.
/usr/local/etc/rc.d/sams start
Проверяем процессы.
ps aux | grep sams
Запускаем в браузере - http://squid.net.domain/sams
Нажимаем значок "User" внизу экрана и вводим логин/пароль, по умолчанию - Admin/qwerty.
При нажатии на "WEB interfice setting" ничего не происходит. Подкорректируем некоторые файлы.
mcedit /usr/local/share/sams/src/configtray.php
и
mcedit /usr/local/share/sams/src/webconfigtray.php
Закомментируем строки.
/*
*function GetHostName()
*{
* if(!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
mcedit /usr/local/share/sams/src/configtray.php
Вместо
$a=explode(" ",$value);
for($i=1;$i<4;$i++)
{
$mem[$i-1]=$a[$i];
}
$a=explode(" ",$swapvalue);
for($i=1;$i<4;$i++)
{
$swap[$i-1]=$a[$i];
}
Вставляем
$a=explode(" ",$value);
for($i=1;$i<4;$i++)
{
$mem[0]=$a[1]+$a[3]+$a[5]+$a[11]; //total mem
$mem[1]=$a[1]; //Used mem
$mem[2]=$a[11]; //Free mem
}
$a=explode(" ",$swapvalue);
for($i=1;$i<4;$i++)
{
$swap[0]=$a[1]; //total swap
$swap[1]=$a[3]; //used swap
$swap[2]=$a[5]; //free swap
}
Настройка WEB интерфейса. После всех изменений нажимаем "Сохранить изменения".
Администрирование SAMS. Вкладка "SAMS"-"Администрирование SAMS" - нажимаем "настройки SAMS".
Параметры подсчета трафика пользователей.
Настройка авторизации пользователей.
Настройка "samsdaemon". По умолчанию путь к "wbinfo" указан как /usr/bin, необходимо поменять на - /usr/local/bin.
Если все нормально, то во вкладке "Пользователи" нажать "Загрузить всех пользователей домена" и в окне "Найдены пользователи домена:" должны отобразиться все наши пользователи.
Далее под свой лад настраиваем пользователей.
Во всех зависимых пакетах устанавливаем поддержку NTLM, убираем поддержку IPv6.
rehash
Настраиваем конфигурационный файл SAMS.
cp /usr/local/etc/sams.conf.sample /usr/local/etc/sams.conf
mcedit /usr/local/etc/sams.conf
MYSQLPASSWORD=SAMSpassword1
MYSQLVERSION=5.5
SQUIDLOGDIR=/var/log/squid
LDAPSERVER=172.20.40.10
LDAPBASEDN=net.domainLDAPUSER=squiduser
LDAPUSERPASSWD=SQUIDUSERpassword2
LDAPUSERSGROUP=Users
Другие настройки будем делать через web-браузер. Для этого настроим web-сервер.
mcedit /usr/local/etc/apache22/httpd.conf
Alias /sams "/usr/local/share/sams/"
<Directory "/usr/local/share/sams/">
AllowOverride AuthConfig
Options Indexes MultiViews
Order allow,deny
Allow from all
</Directory>
Настройка PHP.
cd /usr/local/etc
Если нет файла php.ini, создаем его.
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
mcedit /usr/local/etc/php.ini
safe_mode = On
safe_mode_exec_dir = "/usr/local/share/sams/bin"
Проверяем конфигурационный файл Apache.
apachectl configtest
Если - "Syntax OK", перегружаем Apache.
apachectl graceful
Для создания баз данных в MySQL 5.5 необходимо произвести замены для инсталляции баз данных. Если не поменять, будут ошибки при создании баз данных MySQL при запуске инсталляции через браузер.
mcedit /usr/local/share/sams/data/sams_db.sql
Меняем значения "TYPE=MyISAM" на значение "ENGINE=MyISAM".
mcedit /usr/local/share/sams/data/squid_db.sql
Меняем значения "TYPE=MyISAM" на значение "ENGINE=MyISAM".
Запускаем в браузере - http://squid.net.domain/sams
Нажимаем на "Run SAMS databases installation script".
Вводим пароли root (создавали при инсталляции MySQL) и пароль sams (в файле sams.conf).
Базы успешно созданы.
Добавляем в загрузку
mcedit /etc/rc.conf
sams_enable="YES"
Запускаем.
/usr/local/etc/rc.d/sams start
Проверяем процессы.
ps aux | grep sams
Запускаем в браузере - http://squid.net.domain/sams
Нажимаем значок "User" внизу экрана и вводим логин/пароль, по умолчанию - Admin/qwerty.
При нажатии на "WEB interfice setting" ничего не происходит. Подкорректируем некоторые файлы.
mcedit /usr/local/share/sams/src/configtray.php
и
mcedit /usr/local/share/sams/src/webconfigtray.php
Закомментируем строки.
/*
*function GetHostName()
*{
* if(!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
Нажимаем на "WEB interfice setting".
Не отображается использование памяти и свопа.
В файлах "freemem" и "freeswap" меняем команды "free" на "top".
mcedit /usr/local/share/sams/bin/freemem
#!/bin/sh
STR=`top | grep Mem:`
echo $STR
mcedit /usr/local/share/sams/bin/freeswap
#!/bin/sh
STR=`top | grep Swap:`
echo $STR
Обновляем страницу в браузере.
mcedit /usr/local/share/sams/src/configtray.php
Вместо
$a=explode(" ",$value);
for($i=1;$i<4;$i++)
{
$mem[$i-1]=$a[$i];
}
$a=explode(" ",$swapvalue);
for($i=1;$i<4;$i++)
{
$swap[$i-1]=$a[$i];
}
$a=explode(" ",$value);
for($i=1;$i<4;$i++)
{
$mem[0]=$a[1]+$a[3]+$a[5]+$a[11]; //total mem
$mem[1]=$a[1]; //Used mem
$mem[2]=$a[11]; //Free mem
}
$a=explode(" ",$swapvalue);
for($i=1;$i<4;$i++)
{
$swap[0]=$a[1]; //total swap
$swap[1]=$a[3]; //used swap
$swap[2]=$a[5]; //free swap
}
Настройка WEB интерфейса. После всех изменений нажимаем "Сохранить изменения".
Администрирование SAMS. Вкладка "SAMS"-"Администрирование SAMS" - нажимаем "настройки SAMS".
Параметры подсчета трафика пользователей.
Настройка авторизации пользователей.
Настройка "samsdaemon". По умолчанию путь к "wbinfo" указан как /usr/bin, необходимо поменять на - /usr/local/bin.
Если все нормально, то во вкладке "Пользователи" нажать "Загрузить всех пользователей домена" и в окне "Найдены пользователи домена:" должны отобразиться все наши пользователи.
Далее под свой лад настраиваем пользователей.
Установка Syslog-NG.
Для Webmin установим syslog-ng. Установка syslog-ng описана в статье "Установка Syslog-NG".
Установка WEBMIN.
Установка антивируса Касперского Proxy Server описана в статье "Установка антивируса на прокси-сервер".
Настройка обработки лог сообщений.
Обработка лог сообщение описана в статье "Настройка Logwatch".
Настройка сетевого экрана.
Базовые настройки сетевого экрана IPFW описаны в статье "Настройка IPFW". Пример правил IPFW для сервера, на котором установлен прокси-сервер, представлен ниже.
mcedit /etc/ipfw.rules
#!/bin/sh
cmd="ipfw -q"
$cmd -f flush
$cmd add 101 pass all from any to any via lo0
$cmd add 201 deny all from any to 127.0.0.0/8
$cmd add 301 deny ip from 127.0.0.0/8 to any
$cmd add 500 check-state
$cmd add 600 deny all from any to any frag
$cmd add 610 deny tcp from any to any established
$cmd add 620 pass tcp from any to any out setup keep-state
$cmd add 630 pass udp from any to any out keep-state
$cmd add 640 pass icmp from any to any
$cmd add 1000 pass tcp from 172.19.3.0/24 to any 3128 in setup keep-state
$cmd add 1010 pass tcp from 172.19.4.0/24 to any 3128 in setup keep-state
$cmd add 1020 pass tcp from 172.19.4.0/24 to any 22,443,10000 in setup keep-state
$cmd add 65000 deny log all from any to any
правила 1000-1010 описывают сети, которые подключаются к Интернет через прокси-сервер. Правило 1020 описывает сеть, которая имеет доступ к администраторским интерфейсам (SSH, HTTPS (SAMS), Webmin). Правило 65000 запрещает все соединения с логированием.
Проверка.
На компьютере в сети 172.19.4.0/24 в браузере открываем ссылку - https://squid.net.domain/sams, проходим процедуру авторизации и попадаем интерфейс SAMS.
добрый день!
ОтветитьУдалитьа для чего в данном случае используется SAMS?
в такой конфигурации нет управления с помощью САМС на сколько я вижу по конфигурации SQUID
Добрый день!
ОтветитьУдалитьУ меня при установке sams c php5.4 выдает такую ошибку:
===> sams-1.0.5_5,1 cannot install: doesn't work with PHP version : 5 (Doesn't support PHP 5).
*** [install] Error code 1
Что делать?
Если в FreeBSD ты новичок, то самое главное не мудри. Делай все так, как описал автор. Потом научишься понимать что лишнее, а что нет и пересоберешь сервак так, как тебе нужно. Но на данном этапе просто внимательно читай и повторяй все, что тут описано. Работает на ура практически все. Выставляй правильно все что касается зависимых пакетов. Не ошибайся и будет тебе счастье. Данная статья очень подробная, хотя тут на мой взгляд много лишнего, но все это работает. Проверено на FreeBSD 9.1 amd64. Обязательно обнови порты. Тут есть кое что, что не позволяет нормально аутентифицироваться в домене (возможно это проблема исключительно 9.1), но это мелочи, когда столкнешься, на "лисяре" быстро найдешь решение. Эту тему я поднимал.
УдалитьБольшое упущение автора, что он не написал, что керберос не будет работать, если ты изменишь файл krb5.conf, там где описано в статье, а именно в:
ОтветитьУдалить/usr/src/crypto/heimdal/krb5.conf
соответственно билет он точно не получит, так как файл конфига должен лежать в /etc/krb5.conf
поэтому делать нужно следующим образом.. сначала копировать в нужную директорию
cp /usr/src/crypto/heimdal/krb5.conf /etc/krb5.conf
затем редактировать так, как описано в статье
mcedit /etc/krb5.conf
вот так
ну и samba36 у меня из портов не собралась на 9.1, зато без проблем собралась samba34
ОтветитьУдалитьУ меня тоже не собиралась "Can't fetch". Решил переходом с CVSup/csup на portsnap.
Удалитьhttp://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html
# mv /usr/ports /usr/ports.old
# portsnap fetch extract
# mv /usr/ports.old/distfiles /usr/ports
# mv /usr/ports.old/packages /usr/ports
# rm -rf /usr/ports.old