Около года назад у нас появился интернет и вместе с ним проблема - как
делить? Собственно проблема в том, что все машины многопользовательские,
а, как следствие, ограничить доступ на основании IP адреса невозможно.
Теперь, год спустя, обнаружились 2 наиболее практичных способа. Мы
используем первый, но у вас есть возможность выбирать ;)
Способ первый (IMHO более правильный) заключается
в использовании socks5 сервера и клиента.
При этом получаем отличный firewall с возможностью проксить как TCP
так и UDP плюс полный контроль над работой пользователей в интернет. Настраиваем
следующим образом:
Идем на 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
С сервером все, правим стартовые скрипты для автозапуска после ребута.
Теперь клиент. Выбор не особо богат.
SocksCap от Nec - www.socks.nec.com
Неплохой клиент под windows3.1, 95, NT. Под NT немного глючит, что раздражает.
AutoSocks от Aventail - www.aventail.com
мне понравился больше всех. Отлично работает под всеми видами форточек.
Недостаток один - дают только триальную версию на 1 месяц. Но ведь это-же
не проблема, не так-ли? ;))
Hummingbird's SOCKS Client от Hummingbird
Бесплатный, хорошо работающий, но чертовски неудобный. ;)
Способ второй:
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.