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.