Jump to content
Калькуляторы

Подскажите, кто нибудь реализовывал у себя такую схему.

Есть группа пользователей и есть группа свичей, нужно сделать так, что бы некоторые пользователи на некоторые свичи имели имели полные права а на некоторые свичи RO (3 уровень привилегий), свичи из зоопарка cisco, d-link, etc..

Share this post


Link to post
Share on other sites

У нас используется похожая схема. Правда, с некоторыми оговорками:

  • tac_plus отсюда
  • учётки пользователей и группы в LDAP
  • у L3 железок (группа Core) отдельный ip диапазон

 

Упрощённый кусок конфига tac_plus при этом выглядит след. образом:

 

   host = Core {
       address = 10.0.255.0/24
       key = <ключ 1>
   }
   host = Switches {
       address = 10.0.0.0/16
       key = <ключ 2>
   }

   acl = ANY {
       nas = 0.0.0.0/0
   }
   acl = no_core-acl {
       nas = not 10.0.255.0/24
   }

   group = read-only {
       default service = permit
       enable = deny
       service = shell {
           default command = permit
           default attribute = permit
           set priv-lvl = 2
       }
   }
   group = read-all {
       default service = permit
       enable = deny
       service = shell {
           default command = deny
           default attribute = deny
           set priv-lvl = 15
           cmd = show { permit .* }
           cmd = traceroute { permit .* }
       }
   }
   group = read-write {
       default service = permit
       enable = login
       service = shell {
           default command = permit
           default attribute = permit
           set priv-lvl = 15
       }
   }

   group = admin {
       message = "[Admin privileges]"
       member = read-write
   }
   group = noc {
       message = "[NOC privileges]"
       member = read-all@Core
       member = read-write
   }
   group = support {
       message = "[sUPPORT privileges]"
       acl = no_core-acl
       member = read-only
   }

Share this post


Link to post
Share on other sites

Вообще, если задача только в разделении привилегий (tacacs accounting и command authorization не нужны или не поддерживаются), то можно обойтись и freeradius.

 

На freeradius-2.2.6 используем конфиг users в таком стиле

 

DEFAULT         Ldap-Group == "tacacs-admin"
               User-Service-Type = Administrative-User,
               Dlink-User-Level = Admin,
               Mikrotik-Group = full

DEFAULT         Ldap-Group == "tacacs-noc"
               User-Service-Type = Login-User,
               Cisco-AVPair = "shell:priv-lvl=15"
               Dlink-User-Level = Admin,
               Mikrotik-Group = write

DEFAULT         NAS-Identifier =~ "^aggregation-*", Ldap-Group == "tacacs-support"
               User-Service-Type = Login-User,
               Cisco-AVPair = "shell:priv-lvl=2"
               Mikrotik-Group = read

 

Хотя и самому интересно, как другие решают эту задачу :)

Share this post


Link to post
Share on other sites

Блин, затронули больную тему, не могу удержаться.

Можно ещё использовать разные системы авторизации для разных групп свичей. К примеру, у нас для доступа - radius, агрегация и ядро - tac_plus. Может и не изящно и костыльно, но при наличии единой базы учёток вполне работает.

Share this post


Link to post
Share on other sites

FreeRADIUS не подходит потому что у него нет ACL

 

Вообще, если задача только в разделении привилегий (tacacs accounting и command authorization не нужны или не поддерживаются), то можно обойтись и freeradius.

 

На freeradius-2.2.6 используем конфиг users в таком стиле

 

DEFAULT Ldap-Group == "tacacs-admin"

User-Service-Type = Administrative-User,

Dlink-User-Level = Admin,

Mikrotik-Group = full

 

DEFAULT Ldap-Group == "tacacs-noc"

User-Service-Type = Login-User,

Cisco-AVPair = "shell:priv-lvl=15"

Dlink-User-Level = Admin,

Mikrotik-Group = write

 

DEFAULT NAS-Identifier =~ "^aggregation-*", Ldap-Group == "tacacs-support"

User-Service-Type = Login-User,

Cisco-AVPair = "shell:priv-lvl=2"

Mikrotik-Group = read

 

 

 

Хотя и самому интересно, как другие решают эту задачу :)

Интересные у вас атрибуиты

Dlink-User-Level атрибут передает номер от 1 до 5, каждый номер отвечает за свой уровень привилегий

dlink-Privelege-Level = 5

У микротика атрибут указывает на группу к которой относится пользователь, а у микротика их всего 2, это user и full

Mikrotik-Group = "full"

 

Есть рабочая схема и Tacacs и RADIUS

Но стала не стандартная задача

Есть 3 свича А, Б и С и есть пользователь lamer, которому нужно организовать доступ на свич А с 15 уровнем привилегий, на свич Б с 3 уровнем привилегий а на свич С вообще закрыть доступ.

Как поступить со свичами А и Б я знаю а вот как со свичем С?

Edited by FATHER_FBI

Share this post


Link to post
Share on other sites

FreeRADIUS не подходит потому что у него нет ACL

ACL не нужны, достаточно грамотно составить БД и научить радиус от туда получать нужный уровень для нужного юзера в целевом месте.

Я такое делал, но до продакшена не дошло в виду...особенностей работы организации.

Share this post


Link to post
Share on other sites

tacacs+ работает с mysql. Там ничего не мешает настроить детальные права. В tacacs+ с текстовым конфигом тоже можно, но конфиг будет большой. Я не знаю можно ли включать одно уст-во в несколько групп. Имейте в виду, D-Link не передает на NAS(как RADIUS, так и tacacs+) атрибут, в котором указан IP-адрес пользователя. На память не помню точное наименование атрибута.

 

Если будете собирать tacacs+ с поддержкой mysql, увеличьте вручную размер поля с хэшем пароля, а то не взлетит.

Share this post


Link to post
Share on other sites

Хотя и самому интересно, как другие решают эту задачу :)

 

Если я правильно понимаю задачу, когда-то очень давно делал на FreeRadius только средствами конфигурации, при желании можно усложнить. Смысл такой сначала путём hints помещаем то что хотим в нужный домен, например:

 

hints:

 

DEFAULT	NAS-IP-Address <= 10.255.255.255
User-Name := `%{User-Name}@zone255`

DEFAULT	Calling-Station-Id =~ "10.0.1.*"
User-Name := `%{User-Name}@disp1`

 

В hints важен порядок, поэтому как в ACL самое специфичное наверх. В данном случае не зная пароля от zone255 никто туда не попадёт.

 

Потом уже в users навешиваем то что надо. Пример для Cisco, соответственно уровни 15 и 10.

 

users:

 

Admin@zone255	Crypt-Password = "******"
        Service-Type = Login-User,
        	cisco-avpair = "shell:priv-lvl=15"

Admin@disp1	Crypt-Password = "******"
	Service-Type = Login-User,
              	cisco-avpair = "shell:priv-lvl=10"

Share this post


Link to post
Share on other sites

Если я правильно понимаю задачу, когда-то очень давно делал на FreeRadius только средствами конфигурации, при желании можно усложнить. Смысл такой сначала путём hints помещаем то что хотим в нужный домен, например:

 

Классный вариант, спасибо :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.