Hlavní navigace

Integrace SQUID proxy serveru do Active Directory (2)

Daniel Mašek

Dnes nás čeká pokračování integrace našeho proxy serveru do Active Directory. Dokončíme konfiguraci autentizací proti AD na všechny způsoby a podíváme se konečně na Squid, Sambu a nakonec dojde i na HTTP server dle vlastního výběru. Na konci tohoto dílu byste měli mít připravené plně funkční řešení.

Kerberos – dokončení konfigurace

Navážeme tam, kde jsme minule skončili. Máme stažený Msktutil pro naši architekturu (na výběr máme amd64 nebo i386, já použiji i386) a balíček si nainstalujeme.

# dpkg -i msktutil_0.4-2_i386.deb

Teď nastal čas si zažádat AD o autorizaci, abychom mohli vytvořit účet počítače pro účely autentizace přes Kerberos. Z důvodů, které jsou popsány v mailing listu Squidu, nyní nepoužíváme jako hostname proxy.domain.internal, ale v minulém díle zmíněný PROXY-K. Důvodem je Samba (potažmo zřejmě Winbind), která pravidelně mění heslo účtu počítače a nám by tím neustále zneplatňovala uložený klíč Kerberose.

# kinit administrator
Password for administrator@DOMAIN.INTERNAL:

a zkontrolujeme

# klist

Pokusíme se založit první účet počítače. Podmínkou je také maximální délka 15 znaků. Poslední parametr --enctypes 28 je nutný pouze pro verzi AD 2008.

# msktutil -c -b "CN=COMPUTERS" -s HTTP/proxy.domain.internal -k /etc/squid3/PROXY.keytab --computer-name PROXY-K \
--upn HTTP/proxy.domain.internal --server eupdc1.domain.internal --verbose --enctypes 28

Také existuje možnost, kdy si účet založíme přímo na Windows serveru a pak ho reinicializujeme a exportujeme keytab.

Co vlastně msktutil umí?

  • vytvářet účet PC v AD a měnit jeho heslo
  • ukládat klíče pro Kerberos a provádět údržbu keytab

Účet počítače v Active Directory, zde je možno ho ručně vytvořit i resetovat

Pokud vše proběhlo dobře, máme v souboru /etc/squid3/PROXY.keytab klíče. Zajistíme si, aby mohl Squid soubor číst.

# chgrp proxy /etc/squid3/PROXY.keytab
# chmod g+r /etc/squid3/PROXY.keytab

Odhlásíme se.

# kdestroy

Jako test funkčnosti můžeme resetovat na Windows serveru účet počítače a zkusit aktualizovat keytab. Pozor, hostname malými písmeny.

# msktutil --auto-update --verbose --computer-name proxy-k -k /etc/squid3/PROXY.keytab

Čas od času je potřeba aktualizovat účet hosta v AD, proto si do /etc/crontab přidáme to, co jsme si teď vyzkoušeli

00 4  *   *   *     msktutil --auto-update --verbose --computer-name proxy-k | logger -t msktutil

Posledním úkolem u konfigurace Kerberose je říci Squidu, kde najde keytab.

# echo "export KRB5_KTNAME=/etc/squid3/PROXY.keytab" | tee /etc/default/squid3

NTLM

Nastal čas doinstalovat Sambu a Winbind, ten nám zajistí NTLM autentizaci.

# apt-get install samba winbind samba-common-bin

a pro jistotu je zatím zastavíme

# service smbd stop
    smbd stop/waiting
# service winbind stop
    * Stopping the Winbind daemon winbind                  [ OK ]

následně upravíme sekci [global] v /etc/samba/smb.conf

#GLOBAL PARAMETERS
[global]
workgroup = DINTERNAL
realm = DOMAIN.INTERNAL
preferred master = no
server string = squid proxy server
security = ADS
encrypt passwords = yes
log level = 3
log file = /var/log/samba/%m
max log size = 50
printcap name = cups
printing = cups
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind nested groups = Yes
winbind trusted domains only = Yes
winbind cache time = 3600
winbind separator = +
;template primary group = “Domain Users”
template shell = /bin/bash

a přidáme náš server do domény

# net ads join -U Administrator

Úspěch tohoto kroku poté ověříme spuštěním obou služeb a použitím následujícího příkazu. Zde by neměl být žádný problém.

# wbinfo -t
checking the trust secret for domain DINTERNAL via RPC calls succeeded

Pokus o ověření standardním doménovým uživatelem user vypadá také pořádku.

# wbinfo -a user --verbose
Enter user's password:
plaintext password authentication succeeded
Enter user's password:
challenge/response password authentication succeeded

Teď ještě přidáme proxy do skupiny winbindd_priv, aby mohla číst z adresáře  /var/run/samba/winbindd_privileged.

# gpasswd -a proxy winbindd_priv

A posledním krokem u konfigurace NTLM je zabezpečení pravidelné aktualizace hesla u našeho druhého účtu hosta. Některé zdroje uvádí, že to Samba dělá samostatně, častější změnou každopádně ničemu neuškodíme. Vložíme opět do /etc/crontab.

05  4  *   *   *     net rpc changetrustpw -d 1 | logger -t changetrustpw

Basic autentizace

Základní ověřování používá protokol LDAP a pro jeho účely si musíme nachystat uživatelský účet v doméně. Tento nebude vyžadovat žádná speciální oprávnění, naopak, měl by mít práva co nejmenší, protože jde pouze o možnost číst údaje o objektech v AD. Dále je potřeba nastavit, aby mu nevypršelo heslo, protože ho budeme mít staticky uložené v souboru na našem proxy serveru. V našem případě se bude jmenovat prostě  user.

Vhodné nastavení uživatele v AD, možná by stačilo členství i v Domain Guests

Vytvoříme soubor s heslem a nastavíme odpovídající oprávnění pro přístup.

# echo 'tajne_HeSlo987*#' > /etc/squid3/ldappass.txt
# chmod o-r /etc/squid3/ldappass.txt
# chgrp proxy /etc/squid3/ldappass.txt

A celé to musíme zabalit

Wrapper bude nutné zkompilovat ze zdrojových kódů, ale nejdříve potřebujeme hlavičkové soubory jádra.

# apt-get install build-essential linux-headers-$(uname -r)

pak na něj konečně přijde řada

# cd /usr/local/src/
# wget "http://downloads.sourceforge.net/project/squidkerbauth/negotiate_wrapper/negotiate_wrapper-1.0.1/negotiate_wrapper-1.0.1.tar.gz"
# tar -xvzf negotiate_wrapper-1.0.1.tar.gz
# cd negotiate_wrapper-1.0.1/
# ./configure && make && make install

Squid

Squid už jsme si nainstalovali v minulém díle, teď nás tedy čeká úprava jeho konfigurace v souboru /etc/squid3/squid.conf

### Negotiate Kerberos a NTLM autentizace
auth_param negotiate program /usr/local/bin/negotiate_wrapper -d --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=DINTERNAL --kerberos /usr/lib/squid3/squid_kerb_auth -d -s GSS_C_NO_NAME
auth_param negotiate children 10
auth_param negotiate keep_alive off

### NTLM autentizace
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=DINTERNAL
auth_param ntlm children 10
auth_param ntlm keep_alive off

### Basic autentizace přes LDAP
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -b "dc=DOMAIN,dc=INTERNAL" -D user@domain.internal -W /etc/squid3/ldappass.txt -f sAMAccountName=%s -h eupdc1.europapier.internal
auth_param basic children 10
auth_param basic realm Internet Proxy
auth_param basic credentialsttl 1 minute

### definujeme si access list pro autentizační metody
acl auth proxy_auth REQUIRED

### a konečně vynutíme ověřování klientů
http_access deny !auth
http_access allow auth
### tohle bude vždy na konci http_access
http_access deny all

Jde o velice minimalistickou konfiguraci vhodnou na začátek při testování funkce proxy serveru. S pomocí acl lze přesně definovat přístupy uživatelů, lze použít i externí přístupové skupiny přímo z Active Directory a ošetřit výjimky. Toto téma by vydalo na další případný článek. Po úpravách si spustíme/restartujeme náš Squid.

# service squid3 restart
    squid3 stop/waiting
    squid3 start/running, process 8688

A teď se vyzkoušíme připojit z nějaké doménové stanice na Internet s použitím našeho nového proxy serveru. Pokud se objeví hláška vyžadující přihlášení anebo se neobjeví nic a Internet stejně nejde, je něco špatně. (Tedy pokud jste si mezitím neukopli síťový kabel.) Při úspěšném připojení se následně podíváme do /var/log/squid3/access.log a pokud uvidíte například toto, máte vyhráno!

1347514512.995     43 192.168.21.52 TCP_MISS/200 1470 GET http://gidnes.cz/u/n4/shadeMid.gif masekd DIRECT/194.79.52.198 image/gif

Doménové jméno uživatele máme konečně v logu a teď si připravíme hezčí výstup.

Statistiky přístupů

Jak jsem na začátku slíbil, nastal váš čas na výběr oblíbeného web serveru. Já zvolil pro účely předvedení webfsd a document root nastavil na /var/www/html/. Pro analýzu logů je také celkem slušný výběr a my si ukážeme Sarg.

# apt-get install sarg

Konfigurace Sargu se usídlí v /etc/sarg, kde nás budou momentálně zajímat pouze soubory sarg.conf a sarg-reports.conf. Statistiky se pravidelně spouštějí cronem, a to už instalace zařídila za nás.

# sarg.conf
access_log /var/log/squid3/access.log
output_dir /var/www/html/squid-reports

Zde uvádím pouze upravené parametry pro správnou funkci, Sarg potřebuje vědet odkud vzít data a kam je zapsat. Nezapomeňte případně upravit oprávnění na zápis do output_dir. U souboru sarg-report.conf také není moc na vysvětlování.

# sarg-reports.conf
       SARG=/usr/bin/sarg
     CONFIG=/etc/sarg/sarg.conf
    HTMLOUT=/var/www/html/squid-reports
  PAGETITLE="Access Reports on $(hostname)"
    LOGOIMG=/squid-reports/images/sarg.png
   LOGOLINK="http://$(hostname)/"
      DAILY=Daily
     WEEKLY=Weekly
    MONTHLY=Monthly
EXCLUDELOG1="SARG: No records found"
EXCLUDELOG2="SARG: End"

Nebudeme čekat na cron, nějaká data v logu máme, vygenerujeme report hned.

# /usr/sbin/sarg-reports manual

Výstup poskytuje statistiky přístupů na jednotlivé stránky, TOP uživatele apod. Vše v přehledných tabulkách a grafech.

Náhled vygenerovaných reportů

Kam dál?

Tato ukázka je v podstatě pouze proof-of-concept, při reálném nasazení bychom se museli více zabývat zabezpečením, odladit výkonnostní parametry, mít přehled o SW vybavení na stanicích, které by mohlo mít problémy s tímto „omezením“ přístupu, ošetřit výjimky apod. Teď už ale víme, že to jde.

Použité zdroje informací

Našli jste v článku chybu?

4. 3. 2013 13:08

killa (neregistrovaný)

Potíž nastane v okamžiku, kdy mskutil aktualizuje účet v ad, pak totiž nefunguje ten pro sambu a naopak, je třeba kerberos účet odlišit názvem, jinak blbý....

10. 10. 2012 10:43

zz_indigo (neregistrovaný)

Osobne by som sa vobec z NTLM nezdrzoval. Ak nahodou niekde za proxinou bude server nastaveny tak ze bude vediet aj NTLM overovanie tak sa mozu diat cudne veci (NTLM na rozdiel od digest/basic nieje mozne "retazit")

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Test Philips 24PFS5231 s Bluetooth repro

Test Philips 24PFS5231 s Bluetooth repro

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách