TACACS+: Difference between revisions
Line 165: | Line 165: | ||
. | . | ||
group = uusgrupp { | group = uusgrupp { | ||
default service = | default service = permit | ||
service = exec { | service = exec { | ||
priv-lvl = 0 | priv-lvl = 0 |
Revision as of 21:33, 15 December 2012
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 } . . .