====== Аутентификация доступа к SQUID ======
===== Kerberos GSSAPI аутентификация =====
* [[http://wiki.squid-cache.org/ConfigExamples/Authenticate/Kerberos|Configuring a Squid Server to authenticate from Kerberos]]
* [[http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory|Configuring a Squid Server to authenticate off Active Directory]]
* [[http://klaubert.wordpress.com/2008/01/09/squid-kerberos-authentication-and-ldap-authorization-in-active-directory/|Squid kerberos authentication and ldap authorization in Active Directory]]
==== Создаем ключи сервиса и копируем иx на сервер ====
=== Если в роли KDC выступает Active Directory ===
== Добавляем пользователя в AD ==
Login: gatehttp
Password: Pa$$w0rd
Пароль не меняется и не устаревает
ИЛИ
New-ADUser -Name "gatehttp" -SamAccountName "gatehttp" -AccountPassword(ConvertTo-SecureString -AsPlainText 'Pa$$w0rd' -Force) -Enabled $true -ChangePasswordAtLogon $false -CannotChangePassword $true -UserPrincipalName gatehttp@corpX.un -DisplayName gatehttp -PasswordNeverExpires $true
Обязательно и DisplayName и UserPrincipalName указать
== Создаем ключ сервиса http связывая его с фиктивным пользователем AD ==
Название сервиса HTTP обязательно заглавными буквами
C:\>setspn -L gatehttp
C:\>ktpass -princ HTTP/gate.corpX.un@CORPX.UN -mapuser gatehttp -pass 'Pa$$w0rd' -out gatehttp.keytab
C:\>setspn -L gatehttp
C:\>setspn -Q HTTP/gate.corpX.un
== Копируем ключ сервиса http сервер squid ==
* [[Сервис SSH#WinSCP]]
C:\>pscp gatehttp.keytab root@gate:
=== Если в роли KDC выступает Heimdal ===
[server:~] # kadmin -l
kadmin> add -r HTTP/gate.corpX.un
kadmin> add -r HTTP/gate.CORPX.UN
kadmin> ext -k gatehttp.keytab HTTP/gate.corpX.un
kadmin> ext -k gatehttp.keytab HTTP/gate.CORPX.UN
kadmin> exit
=== Если в роли KDC выступает MIT ===
root@server:~# kadmin.local
kadmin.local: addprinc -randkey HTTP/gate.corpX.un
kadmin.local: addprinc -e rc4-hmac:normal -randkey HTTP/gate.CORPX.UN
kadmin.local: ktadd -k gatehttp.keytab HTTP/gate.corpX.un
kadmin.local: ktadd -k gatehttp.keytab HTTP/gate.CORPX.UN
kadmin.local: exit
=== Если в роли KDC выступает Samba4 ===
* [[https://wiki.samba.org/index.php/Generating_Keytabs|wiki.samba.org Generating Keytabs]]
* [[http://www.delayer.org/2015/06/squid-samba4-ad-kerberos-auth.html|Squid + Samba4 AD Kerberos Authentication]]
server# samba-tool user create gatehttp 'Pa$$w0rd'
server# samba-tool user setexpiry gatehttp --noexpiry
server# samba-tool spn add HTTP/gate.corpX.un gatehttp
server# samba-tool spn list gatehttp
server# samba-tool domain exportkeytab gatehttp.keytab --principal=HTTP/gate.corpX.un
=== Копируем ключи на сервер ===
server# scp gatehttp.keytab gate:
==== Копируем ключи в системный keytab ====
=== Debian/Ubuntu ===
root@gate:~# ktutil
ktutil: rkt /root/gatehttp.keytab
ktutil: list
ktutil: wkt /etc/krb5.keytab
ktutil: quit
root@gate:~# klist -ek /etc/krb5.keytab
=== Debian/Ubuntu/FreeBSD ===
gate# chmod +r /etc/krb5.keytab
=== FreeBSD ===
gate# ktutil copy /root/gatehttp.keytab /etc/krb5.keytab
gate# touch /etc/srvtab
gate# ktutil list
==== Настройка сервиса SQUID на использование GSSAPI ====
gate# cat /etc/squid/conf.d/my.conf
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -d
acl inetuser proxy_auth REQUIRED
http_access allow inetuser
===== Winbind аутентификация =====
Аутентификация в режиме DOMAIN ([[Сервис WINBIND]])
==== FreeBSD ====
[gate:~] # chown root:squid /var/db/samba/winbindd_privileged/
или
[gate:~] # chown root:squid /var/db/samba34/winbindd_privileged/
или
[gate:~] # pw usermod squid -G wheel
==== Ubuntu ====
root@gate:~# usermod -G winbindd_priv proxy
==== FreeBSD/Ubuntu ====
gate# cat squid.conf
...
# OPTIONS FOR AUTHENTICATION
...
# for linux uncomment
# auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
# for freebsd uncomment
# auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
...
acl inetuser proxy_auth REQUIRED
http_access allow inetuser
# http_access allow localnet
===== NCSA basic аутентификация =====
* Декодирование логинов/паролей [[http://base64.ru/]]
# cat /etc/squid/squid.conf
...
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
...
# mkdir /usr/etc/
# apt install apache2-utils
# touch /etc/squid/passwd
# htpasswd /etc/squid/passwd user1
===== PAM basic аутентификация =====
==== pam_unix (по умолчанию) ====
# chmod u+s /usr/lib/squid/basic_pam_auth
# cat /etc/squid/squid.conf
...
auth_param basic program /usr/lib/squid/basic_pam_auth
...
Возможно, не обязательно
# cat /etc/pam.d/squid
auth sufficient pam_unix.so
==== pam_radius ====
# cat /etc/pam.d/squid
auth sufficient pam_radius_auth.so
===== RADIUS basic аутентификация =====
# vim /etc/squid3/squid.conf
...
auth_param basic program /usr/lib/squid3/squid_radius_auth -h server.corpX.un -w testing123
...
===== Использование протокола SSL для basic аутентификации =====
* [[Сервис stunnel]]
* [[Chrome]]
# vim /etc/squid3/squid.conf
...
#http_access allow localnet
#http_access allow localhost
acl inetuser proxy_auth REQUIRED
http_access allow inetuser
...
http_port 127.0.0.1:3128
...