TACACS+

From ICO wiki
Jump to navigationJump to search

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.

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õ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 on keelatud 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
}
.
.
.

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