Очень благодарен за подсказки!!! Спасибо... теперь хоть можно забыть на не много времени о Linuxе, правда осталось настроить squid и sams, но это уже проще....
проверено ubuntu 8.04 -11.04
единственное где закоментировать пишут не всегда надо закоментировать, нужно смотреть
Прокси сервер SQUID + SAMS + SamsRedirector на Ubuntu Server
необходимы следующие пакеты:
Squid - сам прокси сервер
MySQL-Server - MySQL сервер
MySQL-Client - MySQL клиент
mysql-devel - файлы заголовков для MySQL
Apache2 - ну а это же наш великий веб индеец
mod_php - модуль php для Apache2
php - консольный php
php-mysql - библиотека поддержки MySQL в php
libgd - библиотека поддержки графики
php-gd - модуль поддержки libgd в php (используется для рисования графиков)
libpcre - библиотека, пока не определил
libpcre-devel - файлы заголовков libpcre
php-fpdf - библиотека конвертирования отчетов в pdf
Дополнительно установим следующие пакеты для удобства работы:
mc - Midnight Commander консольный оконный файловый менеджер, а главное OpenSource
htop - очень мощный консольный диспечер задач, с большим набором функций, а самое главное все наглядно и понятно
openssh-server - ну тут и говорить уже не надо, и так все все знают.
# sudo su
# aptitude install mc htop openssh-server make
Устанавливаем прокси сервер SQUID:
# sudo apt-get install squid (squid3)
Устанавливаем apache:
# sudo apt-get install apache2
Устанавливаем php5:
# sudo apt-get install aptitude install php5 libapache2-mod-php5 php5-cli php5-common php5- mysql php5-gd
Устанавливаем MySql:
# sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysqlclient15off
Введем пароль для MySQL и обязательно его запомним
# aptitude install libpcre3 libpcre3-dev libgd2-xpm libapache2-mod-php5 php-fpdf gcc
Также, возможно, потребуется установить дополнительные пакеты:
squidguard – для использования редиректора squidguard
php5-ldap – для авторизации пользователей в Active Directory | LDAP
php-fpdf – для генерации pdf отчетов
install apache2 apache2-mpm-prefork libapache2-mod-php5 php5-cgi php5-common php5-mysql mysql-server mysql-client libmysqlclient15off squid libpcre3 php5-gd libpcre3-dev libmysqlclient15-dev gcc make
По завершению установки следует отредактировать файл /etc/php5/apache2/php.ini
Необходимо изменить параметры:
safe_mode = On
safe_mode_exec_dir = “/usr/share/sams/bin”
disable_functions = “chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec”
PHP готов к работе.
Настраиваем прокси-сервер squid
Для этого откроем /etc/squid/squid.conf
# sudo nano /etc/squid/squid.conf (или в mc F4 кому как удобно и если Вы поставили squid3 набирайте /etc/squid3/squid.conf)
Внимание! Ни в коем случае не менять структуру файла и не удалять коментарии !
...
http_port 3128 #<<< раскомментировать эту строчку
Изменяем эту опцию, добавляя интерфейс, на котором принимаем запросы, и включая прозрачность:
http_port 192.168.15.1:3128 transparent
...
cache_dir ufs /var/spool/squid 100 16 256 #<<< раскомментировать
…
access_log /var/log/squid/access.log
pid_filename /var/run/squid.pid
...
acl our_networks src 192.168.10.0/24 #<<< раскомментировать
http_access allow our_networks #<<< раскомментировать
...
visible_hostname proxy.localdomain #<<< добавить строчку, скорее всего взамен строки 2161
...
добавляем для SamsRedirector строчки
# TAG: url_rewrite_program
url_rewrite_program /usr/bin/samsredir
Ищем соответствующие секции и вставляем/раскоментариваем :
url_rewrite_program /usr/local/bin/samsredir
url_rewrite_children 5
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/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 stop
squid -z
/etc/init.d/squid start
если ошибок не наблюдаем, настраиваем компьютер на работу с интернет
прокси сервер 192.168.10.0 порт 3128
Установка SAMS
wget
http://www.nixdev.net/release/sams/ubuntu/jaunty/sams_1.0.5_i386.debwget
http://www.nixdev.net/release/sams/ubuntu/jaunty/sams-web_1.0.5_all.debwget
http://www.nixdev.net/release/sams/ubuntu/jaunty/sams-doc_1.0.5_all.deb(
http://www.nixdev.net/release/sams/ubuntu/hardy/)
Начнем установку
dpkg -i sams_1.0.5_i386.deb
dpkg -i sams_1.0.5_i386.deb (выйдет информация о правке init-скрипта.
Делаем следующее:
nano /etc/init.d/sams
изменяем в открывшемся файле значение false на true в строке “SAMS_ENABLE=false”
dpkg -i sams-web_1.0.5_all.deb
dpkg -i sams-doc_1.0.5_all.deb
Отредактируем в конфиге пароли, логины доступа пользователя к SAMS-MySql и пути к (squid3)
nano /etc/sams.conf
Учтите, что в строке
SHUTDOWNCOMMAND=shutdown -h now # прописана команда на полный останов прокси!
Собственно редактируем следующие строки:
DB_USER=sams - Имя пользователя MySQL, от имени которого будет работать SAMS
; Password for database connection
DB_PASSWORD="yourpassword" - Пароль пользователя в MySQL.
SQUIDROOTDIR=/etc/squid3
SQUIDLOGDIR=/var/log/squid3
SQUIDCACHEDIR=/var/spool/squid3
SAMS уже установлен, приступаем к конфигурированию. Нам необходимо создать учетную запись в базе данных, для этого:
Переходим в каталог /usr/src/sams/mysql/
# cd /usr/src/sams/mysql/
# mysql -u root -p < sams_db.sql
# mysql -u root -p < squid_db.sql
# mysql -u root -p < create_sams_user.sql
В файле /usr/src/sams/mysql/create_sams_user.sql прописываем вышеназначенного пользователя.
mysql -u root -p (необходимо ввести пароль суперпользователя MySQL)
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";
exit
ЗАМЕТКА. Для установленной версии php5 и сервера mysql-5.1 в WEB интерфейсе будут проблемы с настройками. Необходимо сделать следующее.
1. В файле /usr/local/share/sams/src/webconfigtray.php закоментировать таким образом следующие строчки.
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
2. В файле /usr/local/share/sams/src/configtray.php закоментировать таким образом следующие строчки.
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
Перезагружаем сервер – желательно
WEB-интерфейс SAMS’а доступен по адресу http://<адресс сервера>/sams/
Для доступа к web-интерфейсу используйте следующие логин/пароль:
Админ:
admin / qwerty
Статистика:
auditor / audit
Настройка WEB интерфейса:
ставим язык russian utf-8
Показывать графики в отчетах
Создавать PDF отчеты с помощью fpdf
Администрирование SAMS:
авторизация в NCSA
файл перенаправления запроса http://<адресс сервера>/sams/icon/classic/blank.gif
Путь к каталогу, где лежат файлы запрета запроса http://<адресс сервера>/sams/messages
Редиректор встроенный SAMS
Сохранять данные о трафике в базе за последние 12 месяцев
Удалить все существующие группы пользователей и шаблоны пользователей
удаляем все безжалостно…
Регулярные выражения :
создать список ban и поместить туда к примеру vkontakte.ru
Локальные домены:
добавить workgroup и <адресс сервера>
Создаем шаблон пользователей users:
Запрет доступа по регулярным выражениям
ban
Авторизация IP (авторизация по IP адресу)
Теперь добавим группу Users
и первого юзера
(не забудьте поставить галку в поле – Пользователь активен)
Запускаем демона
/etc/init.d/samsd start
Идем в меню SQUID – реконфигурировать
после того, как убедились, что команда демоном получена – смотрим в консоли:
ps -auxw|grep proxy
Теперь для проверки reboot и будем смотреть как это все работает,
В браузере прописываем настройки прокси <адресс сервера> порт 3128
Все должно работать, а при попытке входа на запрещенный URL должны получить:
iptables
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
sysctl -w net.ipv4.ip_forward=1 # Настройка ядра, для разрешения на продвижение пакетов
sysctl -w net.ipv4.ip_dynaddr=1 # Позволяет выполнять корректно MASQUERADE при динамическом изменении ip адреса
modprobe ip_nat_ftp # Для правильной работы активного режима FTP
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F #очищаем все предыдущее правила
iptables -t nat -F #очищаем все предыдущее правила таблици NAT
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
# добовляют протоколирующие функции.
## neue Kette DROP und LOG Regel
iptables -N LOG_DROP #- дефинируем новую цупочку с именем LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix "--rest-muell-- " # создаем новую цепочку,это будет добавлятся в лог файл строчка "--rest-muell-- "
iptables -A LOG_DROP -j DROP # комбинируем предыдущие 2 правила, блокируем и пишем в лог.
iptables -A INPUT -i lo -j ACCEPT # разрешаем входящий трафик на интерфейсе loopback
iptables -A INPUT -p icmp -j ACCEPT # разрешаем входящий трафик по протоколу ICMP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # разрешаем входящий трафик по ранее установленным соединениям
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# Внутрение компьютеры заворачиваем всех на 3128 squid
#iptables -t nat -A PREROUTING -i 192.168.10.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
# Внутрение компьютеры могли подключаться 3128 squid
iptables -A INPUT -p tcp -i eth1 --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP # запрещаем подключаться извне к нашему apache
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -j ACCEPT # разрешаем входящий трафик из локальной сети
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
iptables -A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
#######################################################################
iptables -P INPUT DROP # запрещаем остальной входящий трафик
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#######################################################################
iptables -P OUTPUT ACCEPT # разрешаем весь исходящий трафик
#разрешаем транзитный трафик из локальной сети по порту 21
#iptables -A FORWARD -p tcp --sport 21 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 21 -j ACCEPT
#iptables -I FORWARD -s 192.168.10.10 -p tcp --dport 21 -j ACCEPT
#iptables -I FORWARD -s 192.168.10.10 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.10.23 -d XXX.xxx.xxx.xxx --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.10.1 -d XXX.xxx.xxx.xxx --dport 80 -j ACCEPT
# kanevskadm.ru
LOCALNET="192.168.10.1"
iptables -A FORWARD -p tcp -s $LOCALNET -d smtp.kanevskadm.ru --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s smtp.kanevskadm.ru -d $LOCALNET --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s $LOCALNET -d pop.kanevskadm.ru --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s pop.kanevskadm.ru -d $LOCALNET --sport 110 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 110 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 25 -j MASQUERADE
#BTI
iptables -A FORWARD -p tcp -s 192.168.10.19 -d XXX.xxx.xxx.xxx -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # разрешаем транзитный трафик по ранее установленным соединениям
#iptables -A FORWARD -i eth1 -s 192.168.10.0/24 -j ACCEPT # разрешаем транзитный трафик из локальной сети
###################################################################
iptables -P FORWARD DROP # запрещаем остальной транзитный трафик
iptables -t nat -F POSTROUTING # очищаем правила для POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # выполняем преобразование адресов для трафика, выходящего в Интернет
может кому поможет
Благодfрю за созданный свой ман, google и конференцию ubuntu@jabber.ru