group = slaba_prevadzka login = file /etc/passwd before authorization "/usr/local/tac_plugin/slaba.pl $user" }
Ako vstupné parametre pre náš užívateľský skript môžme použiť nasledovné
$user – názov konta
$name – názov zariadenia, na ktoré sa chce užívateľ authentikovať
$port – port zariadenia, na ktoré sa chce užívateľ authentikovať
$address – IP adresa klienta
$priv – priv-level úroveň
$method – číslica 1–4
$type – číslica 1–4
$service – číslica 1–7
$status – pass, fail, error, unknown
Čo sa týka návratovej hotnoty pretautorizačného scriptu, možnosti exit kódu sú 4
0 – autorizácia je bezpodmienečne povolená
1 – autorizácia je bezpodmienečne zakázaná
2 – autorizácia je povolená
3 – autorizácia je zakázaná
Pri poautorizačnom scripte máme nasledovné možnosti
0 – autorizácia pokračuje, akoby skript nebol ani volaný. Hodí sa na extra logovanie, napr. niekde na web status a pod.
1 – autorizácia je bezpodmienečne zakázaná
2 – autorizácia je povolená
Nasledujúci skript nám jednoducho obmedzí konto na autorizáciu iba v slabej prevádzke ktorú si určíme od 19:00 do 7:00 v rátane štátnych sviatkov.
slaba.pl
#!/bin/bash if date | fgrep -f /usr/local/tac_plugin/def_slaba then exit 0 else echo $1 >> /var/log/tacacs/slaba.warn exit 1 fi def_slaba 19: 20: 21: 22: 23: 00: 01: 02: 03: 04: 05: 06: Sat Sun Jan 6 Apr 21 Apr 24 May 1 May 9 Aug 29 Sep 1 Sep 15 Nov 1 Dec 24 Dec 25 Dec 26
Na tomto príklade vidíme jednu z možností praktického použitia autorizačných skriptov. Možností je mnoho od prekročenia časového limitu, preneseného objemu údajov, prepojenie na účtovný systém pri nezaplatení mesačného poplatku, kreditné účtovanie až po výstup na web stránku alebo špeciálneho logového súboru, poprípade upozornenie na prihlásenie prostredníctvom SMS správy na mobilný telefón.
Logový súbor
Ako sme už spomínali pri konfigurácii tacacsu, logový súbor obsahuje účtovacie informácie, ktoré je možné jednoduchým spôsobom spracovávať. Formát logového súboru je nasledovný:
timestamp, názov zariadenia, na ktorom prebieha authentikácia, názov konta, port, ip adresa klienta, účtovný záznam. Účtovným záznamom môže byť jedna z nasledujúcich položiek:
„unknown“, „service“, „start_time“, „port“, „elapsed time“, „status“, „priv_level“, „cmd“, „protocol“, „cmd-arg“, „bytes_in“, „bytes_out“, „paks_in“, „paks_out“, „address“, „callback-dialstring“, „nocallback-verify“, „callback-line“, „callback-rotary“ a samozrejme v každom riadku „task_id“
Najzaujímvejšími údajmi pre nás budú asi start_time, elapsed_time, bytes_in a bytes_out. Pomocou jednoduchých scriptov je možné tieto údaje spracovať a využiť ich buď ako výpisy k vyúčtovaniam poskytovaných služieb alebo ako štatistiku a prehľad na www stránke.
Doteraz sme si priblížili authentikačné funkcie tacacsu, avšak tacacs nám v rámci sessionu umožňuje aj autorizačné služby.
group = mail_only { expires = "Mar 9 2000" login = file /etc/passwd maxsess=1 service = ppp protocol= ip { autocomand=ppp inacl=101 outacl=102 addr-pool = mailonlys } } user = pascal { login = des barU503ivCO45 expires = "Jun 12 2002" cmd= telnet { permit 62\.168\.96\.[0-9]+ permit 128\.[0-9]+\.12.\7 } cmd = show { permit .* } }
Ako ste už určite všetci pochopili, jedná sa o autorizáciu jednotlivých úloh v rámci sessionu. Pri požiadavke o autorizáciu sa prejde list pre daného užívateľa, vyhľadá sa dotazovaný pár a na základe porovnania sa stanoví návratový kód. Pre definovanie podmienok sa používajú regexp výrazy. Ak daný pár nie je súčasťou listu pre dané konto, návratový kód bude vždy DENY. Túto politiku je možné zmeniť veľmi jednoducho. Slúži nám na to direktíva
default authorization = permit
ktorú použijeme na začiatku konfiguračného súboru. Ak chceme túto politiku zmeniť iba pre vybrané kontá použijeme direktívu
default service= permit
ako jeden z atribútov konta alebo skupiny.
Kedže tacacs priamo nema prikaz na vypis authentikovaných užívateľov, takže nám pomôže nasledujúci script. Tacacs zapisuje authentikovaných užívateľov do súboru /var/log/tac.who_log, z ktorého po preformátovaní môžeme dostať čitateľný výpis. Nasledujúci scriptík nám bude neustále vypisovať authentikovaných užívateľov v 5 sekundovom intervale až do stlačenia klávesy Ctrl-C.
cwho.sh
#!/bin/sh while true; do clear fold -w 160 /var/log.tac.who_log | tr -s '\000' '\t' | expand -20 | sort -b sleep 5 done
V ďalšej časti si povieme niečo o konfigurovaní routerov CISCO pre spoluprácu s tacacsom.