TACACS+
Autor
Margus Kurnikov AK21
Sissejuhatus
TACACS+ (Terminal Access Controller Access-Control System Plus) on võrguseadmete ligipääsukontrolli protokoll, mis hõlmab endas nii autentimise, autoriseerimise kui ka aruandluse teenuseid. Andmevahetuseks kasutatakse TCP porti 49.
Erinevalt RADIUS'st, mis on TACACS+ alternatiiv, eristab viimast autoriseerimise funktsionaalsuse lahutamine, mis võimaldab paindlikumat ligipääsukontrolli - kes võib käivitada käske, milliseid käske, millises seadmes. Iga kasutaja poolt sisestatud käsk saadetakse kesksesse TACACS+ serverisse autoriseerimiseks, kus kontrollitakse, kas vastavat käsku on lubatud käivitada konkreetsel kasutajal või grupil. TACACS+ on võimalik luua käskude käivitamisele näiteks kasutaja-, seadme-, või ajapõhiseid reegleid.
TACACS+ protokolli tugi on olemas levinud suuremate tootjate võrguseadmetes - Cisco, Juniper/Netscreen, HP, Alcatel/Lucent, Ericsson jt.
Paigaldamine
TACACS+ teenus paigaldatud Ubuntu 12.04-le.
Testitava ruuterina kasutusel Cisco 1812.
TACACS+ teenuse paigaldus:
apt-get install tacacs+
Teenuse seadistamine
Konfiguratsioonifaili manual:
man tac_plus.conf
Aruandluse logifail:
/var/log/tac_plus.acct
TACACS+ konfiguratsioonifaili asukoht:
/etc/tacacs+/tac_plus.conf
Algupärane konfiguratsioonifail:
# Created by Henry-Nicolas Tourneur(henry.nicolas@tourneur.be) # See man(5) tac_plus.conf for more details # Define where to log accounting data, this is the default. accounting file = /var/log/tac_plus.acct # This is the key that clients have to use to access Tacacs+ key = testing123 # Use /etc/passwd file to do authentication #default authentication = file /etc/passwd # You can use feature like per host key with different enable passwords #host = 127.0.0.1 { # key = test # type = cisco # enable = <des|cleartext> enablepass # prompt = "Welcome XXX ISP Access Router \n\nUsername:" #} # We also can define local users and specify a file where data is stored. # That file may be filled using tac_pwd #user = test1 { # name = "Test User" # member = staff # login = file /etc/tacacs/tacacs_passwords #} # We can also specify rules valid per group of users. #group = group1 { # cmd = conf { # deny # } #} # Another example : forbid configure command for some hosts # for a define range of clients #group = group1 { # login = PAM # service = ppp # protocol = ip { # addr = 10.10.0.0/24 # } # cmd = conf { # deny .* # } #} user = DEFAULT { login = PAM service = ppp protocol = ip {} } # Much more features are availables, like ACL, more service compatibilities, # commands authorization, scripting authorization. # See the man page for those features.
Kasutajate autentimist on võimalik tac_plus's seadistada kolmel moel:
- Autentimine lokaalse passwd faili alusel - /etc/passwd
- Autentimine /etc/tac_plus/tac_plus.conf faili lisatud DES salajaste võtmetega
- Autentimine PAM-ga LDAP serveri pihta
Käsitlen kahte esimest varianti:
Autentimine passwd faili põhjal
Lisan TACACS+ võtme , mis tuleb ka hallatava(te)sse ruuteri(te)sse seadistada (sellest juttu edaspidi), kommenteerin välja rea, kus määratakse autentimisandmete allikaks /etc/passwd fail.
Loon grupi "net_admins", omistan Cisco kõrgeim ligipääsutaseme - privilege level 15. Kasutaja "margus" määran grupi "net_admins" liikmeks.
. . . key = y97A14T2#741zQ+ . . . default authentication = file /etc/passwd . . . group = net_admins { default service = permit login = file /etc/passwd enable = file /etc/passwd service = exec { priv-lvl = 15 } } user = margus { member = net_admins } . . .
Autentimine DES salajase võtmega
Loon grupi "uusgrupp", madalaima ligipääsutasemega - privilege level 0.
Kasutaja "jaan" lisan loodud gruppi ja defineerin krüpteeritud parooli.
Parooli krüpteerimiseks kasutan käsku tac_pwd
.
. . . key = y97A14T2#741zQ+ . . . group = uusgrupp { default service = permit service = exec { priv-lvl = 0 } } . . . user = jaan { login = des UT.e3EErKERm2 member = uusgrupp } . . .
Autoriseermine
Autoriseerimine võimaldab keelata hallatavas võrguseadmes teatud käskude käivitamist. Need reeglid on omistatavad nii kasutajatele kui gruppidele. Reeglid on keelavad või lubavad.
Lihtne näide, kus on loodud grupp "piiratud_ligip22s", mille liikmetele on lubatud ligipääs vaid ruuterile IP-ga 172.16.1.103.
Grupi liikmetel pole luba käivitada käske "configure" ega "debug".
. . . acl = ruuter1_acl { permit = 172.16.1.103 } group = piiratud_ligip22s { default service = permit login = file /etc/passwd enable = file /etc/passwd service = exec { priv-lvl = 15 } cmd = configure { deny "." } cmd = debug { deny "." } acl = ruuter1_acl } user = uno { member = piiratud_ligip22s } . . .