Linux - статьи

         

Настройка Squid и IPTables


Ни Squid, ни IPTables не поддерживают хранение собственных настроек в LDAP. Для Squid существует модуль авторизации пользователей из LDAP, но нам требуется разграничение доступа не по пользователям, а по рабочим станциям. Настройки IPTables - это стартовый скрипт и/или файл дампа, что тоже не совсем подходит.

Самый простой выход в данной ситуации - создание собственной схемы internet-access.schema

В схеме определяется класс internetAccess и его атрибуты: allowNat (разрешить использование NAT), allowProxy (разрешить использование прокси-сервера) или forceProxy (использовать прокси-сервер в прозрачном режиме). Cозданную схему необходимо скопировать в каталог /etc/openldap/schema и модифицировать файл /etc/openldap/slapd.conf (добавленные строки выделены):

...


# Включение схемы для хранения настроек DHCP в LDAP
include /etc/openldap/schema/dhcp.schema

# Включение схемы для хранения

# настроек Squid и IPTables
include /etc/openldap/schema/internet-access.schema


# pid-файл и файл с аргументами запуска

pidfile         /var/run/slapd.pid

argsfile        /var/run/slapd.args

...

После перезапуска OpenLDAP (service ldap restart в ALT Linux) необходимо внести данные, соответствующие схеме, из файла internet-access.ldif

Добавить их можно командой:

ldapmodify -h 127.0.0.1 -x -D

"cn=manager,dc=myserver,dc=myprovider,dc=ru" -w

"secret" -f internet-access.ldif

Для извлечения списка хостов, у которых одно из свойств allowNat, allowProxy или forceProxy установлено в TRUE, можно использовать такой простой скрипт: /opt/scripts/make_ldap_filter.sh

Пример вызова скрипта:

# /opt/scripts/make_ldap_filter.sh allowProxy
192.168.1.11

Eго можно использовать в скрипте, генерирующем правила для IPTables:/opt/scripts/make_iptables.sh

Аналогичный скрипт для Squid (/opt/scripts/make_squid.sh) выглядит так:

#!/bin/sh

/opt/scripts/make_ldap_filter.sh allowProxy >
/etc/squid/allowed_hosts

При этом в конфигурационном файл Squid (/etc/squid/squid.conf) должно быть написано примерно следующее:

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours




refresh_pattern ^ftp:           1440    20%     10080

refresh_pattern ^gopher:        1440    0%      1440

refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Jabber_ports port 5222

acl Safe_ports port 80          # http

acl Safe_ports port 21          # ftp

acl Safe_ports port 443 563     # https, snews

acl Safe_ports port 70          # gopher

acl Safe_ports port 210         # wais

acl Safe_ports port 1025-65535  # unregistered ports

acl Safe_ports port 280         # http-mgmt

acl Safe_ports port 488         # gss-http

acl Safe_ports port 591         # filemaker

acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports !Jabber_ports

acl allowed_hosts src "/etc/squid/allowed_hosts"
http_access allow allowed_hosts
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
error_directory /usr/share/squid/errors/Russian-koi8-r
coredump_dir /var/spool/squid
visible_hostname myserver.myprovider.ru


Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий