Ключевые слова:socks, squid, howto, firewall, (найти похожие документы)
Date: Mon, 23 Oct 2000 12:18:57 +0400 (MSD)
From: Алексей Серебряков <admin@ksaa.edu.ru>
Subject: Разделение доступа в интернет из локальной сети
Автор: Алексей Серебряков <admin@ksaa.edu.ru>
Оригинал доступен по адресу: http://www.ksaa.edu.ru/~val/socks5.htm
Разделение доступа в интернет из локальной сети.
Около года назад у нас появился интернет и вместе с ним проблема - как
делить? Собственно проблема в том, что все машины
многопользовательские, а, как следствие, ограничить доступ на
основании IP адреса невозможно.
Теперь, год спустя, обнаружились 2 наиболее практичных способа. Мы
используем первый, но у вас есть возможность выбирать ;)
Способ первый (IMHO более правильный) заключается в использовании
socks5 сервера и клиента.
При этом получаем отличный firewall с возможностью проксить как TCP
так и UDP плюс полный контроль над работой пользователей в интернет.
Настраиваем следующим образом:
1. Идем на http://www.socks.nec.com/ и берем там socks5 сервер (на данный
момент это socks5-v1.0r8) и socks5tools - скрипт для анализа
лог-файлов сервера.
Конфигурируем socks5 сервер. Запустите ./configure - значения по
умолчанию вполне разумны, хотя я посоветовал бы сменить syslog
facility. По умолчанию socks использует LOG_DAEMON, и как следствие
файл /var/log/messages будет забит сообщениями socks. Во избежание
этого запустите ./configure --with-syslog-facility=LOG_LOCAL0 и
добавьте строчки
"local0.* /var/adm/socks5" и
"*.=info;*.=notice;local0.none /var/log/messages"
в /etc/syslog.conf.
Дальше стандартно - make; make install.
Если все нормально, создаем файл конфигурации /etc/socks5.conf
следующего содержания:
[root@val /etc]# cat socks5.conf
# A Socks5 Config file for a dual homed server
#
# Описание роутинга
# route hostmask portmask interface
route 195.9.ххх. - eth0
#Описание аутентификации - в данном случае требуем со всех
логин/пароль
#auth source-host source-port auth-metod
auth - - u
#permit и deny. В данном случае человек с правильным
логином/паролем может идти куда #угодно ;) подробней - man
socks5.conf
#permit auth cmd src-host dest-host src-port dest-port [user-list]
permit u - - - - - -
#Не делать reverse lookup в DNS - процесс заметно ускоряется
set SOCKS5_NOREVERSEMAP
#Записывать номера портов вместо имен сервисов. Тоже для ускорения
set SOCKS5_NOSERVICENAME
#Не рассылать ident запросы клиентам
set SOCKS5_NOIDENT
# Максимальное число детей socks5 - пусть будет больше, зато всем
хватит
set SOCKS5_MAXCHILD 128
Все, теперь создаем /etc/socks5.passwd формат прост - в каждой
строчке имя и пароль, разделенные пробелом.
[root@ksaa /etc]# cat socks5.passwd
user password
lamer lamepassword
С сервером все, правим стартовые скрипты для автозапуска после ребута.
Теперь клиент. Выбор не особо богат.
1 - SocksCap от Nec - http://www.socks.nec.com Неплохой клиент под
windows3.1, 95, NT. Под NT немного глючит, что раздражает.
2 - AutoSocks от Aventail - http://www.aventail.com мне понравился
больше всех. Отлично работает под всеми видами форточек. Недостаток
один - дают только триальную версию на 1 месяц. Но ведь это-же не
проблема, не так-ли? ;))
3 - Hummingbird's SOCKS Client от http://www.hummingbird.com/ Бесплатный,
хорошо работающий, но чертовски неудобный. ;)
Способ второй: Squid - кэширующий прокси сервер. Также позволяет
авторизоваться по логину/паролю, но проксит только HTTP,FTP, и Gopher.
Также начиная с версии 2.0 включает поддежку ARP acl , т.е.
возможность разрешить доступ только станциям с опреденными MAC
адресами сетевых адаптеров. Возможность интересная, но не всех
устраивающая. IMHO практичней и универсальней использовать
username/password аусентификацию. Прикручивается следующим образом:
Запустите ./configure -DUSE_PROXY_AUTH=1, или просто раскоментируйте
строчку USE_PROXY_AUTH в Makefile.
Скажите make ; make install . Затем подправьте все необходимое в
squid.conf и добавьте туда строчку
proxy_auth /usr/local/squid/etc/passwd
passwd - файл с криптаваными паролями ( crypt() ), такого-же формата
как и в Appache.
Для создания этого файла можно использовать вот эту программу (http://www.ksaa.edu.ru/~val/htpasswd.tar.gz).
Если вы хотите разрешить пользователям изменять пароли, используйте
вот этот CGI скрипт (http://www.ksaa.edu.ru/~val/chpasswd-cgi.tar.gz).