TACACS+

From ICO wiki

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 (Authentication, Authorization and Accounting - AAA) teenuseid. TACACS+ on kasulik võrguseadmete halduse korraldamisel, kuna teenus võimaldab võrguseadmete kasutajaid ja ligipääsuõigusi tsentraalselt hallata, ehk väldib olukorda, kus võrguadministraator peaks kümnetes/sadades seadmetes haldama seadmete lokaalseid kasutajakontosid. Piisab vaid igasse seadmesse lisada identne AAA konfitükk.
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.
TACACS+ näol on tegemist Cisco poolt arendatud vabavaraga.

Antud kirjutises käsitlen lihtsaid TACACS+ seadistamisvõimalusi.

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õrgeima 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 või lubada 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 on keelatud käivitada käske "configure" ja "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
}
.
.
.

Kasutajate eemaldamine

passwd faili põhjal autentimisega piisab vastavast masinast kasutaja eemaldamisest ja korrektne oleks ka tac_plus.conf failist vastava kasutaja konfiguratsioon eemaldada.
DES salajase võtmega autentimisel tuleb eemaldada kasutajapõhine konfiguratsioon tac_plus.conf failist.

Cisco AAA seadistamine

Lihtsustatud AAA konfiguratsioon Cisco ruuteris

! luuakse uus AAA skeem, millega lubatakse sisestada allolevad käsud
aaa new-model
!
! Käsib seadmel iga sisse logiva kasutaja nime ja parooli valideerida TACACS+ serveri pihta
aaa authentication login default group tacacs+ enable
!
! Kui kasutaja on autoriseeritud, siis sisselogimisel viiakse ta kohe exec (enable) režiimi
aaa authorization exec default group tacacs+ if-authenticated
!
! Autoriseeritakse privilege level 15 kasutajaid ja kui TACACS+ server pole kättesaadav, siis kasutatakse lokaalset kasutajakontot
aaa authorization commands 15 default group tacacs+
!
! Salvestab aruandlust privilege level 15 kasutajate kohta:
aaa accounting commands 15 default start-stop group tacacs+
!
! TACACS+ serveri IP
tacacs-server host 172.16.1.100
!
! TACACS+ serveri võti
tacacs-server key y97A14T2#741zQ+
!

Tõrkeotsing

Kontrollime, kas TACACS+ protsess jookseb:

ps -ef | grep tac_plus


Peale igat tac_plus.conf konfiguratsioonimuudatust, tuleb taaskäivitada TACACS+ teenus:

/etc/init.d/tacacs_plus restart


Kui teenus ei peaks pärast konfiguratsioonimuudatust käivituma,

 * Restarting TACACS+ authentication daemon tacacs+                                     [fail]

siis tuleb viga otsida tac_plus.conf failist.


Kasutatud allikad

http://en.gentoo-wiki.com/wiki/TACACS_Server_using_tac_plus

http://www.stben.net/tacacs/users_guide.html

http://www.debianhelp.co.uk/tacas.htm

http://www.cisco.com/en/US/docs/switches/datacenter/nexus1000/sw/4_0/security/configuration/guide/security_4tacacs.html

http://www.cisco.com/en/US/docs/ios/12_1/security/command/reference/srdathen.html