Приветствую!
Помогите настроить PAM на аутентификацию пользователей через TACACS+ или RADIUS.
Возмникла необходимость аутентифицировать пользователей на сервере Cisco ACS 5.Необходимая конфигурация ACS сделана.
Настраиваю PAM.
В первую очередь хотелось использовать TACACS+.
Сделана была следующая настройка:
[/etc/pam.d]# cat tacacs
#%PAM-1.0
auth sufficient /usr/lib/pam_tacplus.so try_first_pass template_user=tacuser
session sufficient /usr/lib/pam_tacplus.so service=shell protocol=ssh
account sufficient /usr/lib/pam_tacplus.so service=shell protocol=ssh
[/etc/pam.d]# grep -v '#' sshd
auth include tacacs
account include tacacs
session include tacacsauth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth required pam_unix.so try_first_passaccount required pam_nologin.so
account required pam_login_access.so
account required pam_unix.sosession required pam_permit.so
password required pam_unix.so try_first_passПри таких настройках получаю проблемы на уровне Cisco ACS 5: "24408 User authentication against Active Directory failed since user has entered the wrong password".
При этом пароль _точно_ ввожу правильный, подозреваю какие-то проблемы в кодировании на уровне pam_tacplus<=>CiscoACS5.
Так как не получилось использовать pam_tacplus решено использовать pam_radius.
Но и тут возникли проблемы.Настройки PAM:
[/etc/pam.d]# grep -v '#' sshd
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient pam_radius.so no_warn try_first_pass template_user=raduser
auth required pam_unix.so try_first_pass
account required pam_nologin.so
account sufficient pam_radius.so template_user=raduser
account required pam_login_access.so
account required pam_unix.sosession required pam_permit.so
password required pam_unix.so try_first_passПри аутентификации получаю закрытие ssh-сессии, а в /var/log/auth.log следующее:
Feb 21 11:19:44 webserv sshd[99280]: Invalid user user1 from 172.1.1.100
Feb 21 11:19:48 webserv sshd[99282]: in openpam_dispatch(): pam_radius.so: no pam_sm_acct_mgmt()
Feb 21 11:19:48 webserv sshd[99280]: fatal: Internal error: PAM auth succeeded when it should have failed
Up!
Я не с ответом а с вопросом пришел! )Как я понимаю tacacs сервер на циске..?
Если да то изначально как тебе удалось заставить pam_tacplus.so обращаться на удаленную машину! У меня он требует локальный /etc/tacplus.conf
Я от только в упор не понимаю что в него нужно писать, что бы тот отправил запрос на удаленный сервер..Поясни пожалуйста, как у тебя это сделано! Может быть у тебя уже получилась реализовать такую авторизацию.. ?
У меня вот что получилось!tac_plus.conf
=============
key = super_secret
user = tacuser {
# Пользователя несуществует на клиентском хосте
login = cleartext tacuserpass
}
user = user {
# Пользователь существует на клиентском хосте
login = cleartext userpass
}/etc/pam.d/tacacs
=================
auth sufficient /usr/lib/pam_tacplus.so try_first_pass
account sufficient /usr/lib/pam_tacplus.so service=shell protocol=ssh
session sufficient /usr/lib/pam_tacplus.so service=shell protocol=sshПри авторизации пользователем tacuser получаю ошибку:
====================================================
Mon May 28 17:04:07 2012 [14045]: PACKET: key=super_secret
Mon May 28 17:04:07 2012 [14045]: version 192 (0xc0), type 1, seq no 3, flags 0x1
Mon May 28 17:04:07 2012 [14045]: session_id 3974293904 (0xece2e990), Data length 18 (0x12)
Mon May 28 17:04:07 2012 [14045]: End header
Mon May 28 17:04:07 2012 [14045]: type=AUTHEN/CONT
Mon May 28 17:04:07 2012 [14045]: user_msg_len 13 (0xd), user_data_len 0 (0x0)
Mon May 28 17:04:07 2012 [14045]: flags=0x0
Mon May 28 17:04:07 2012 [14045]: User msg:
Mon May 28 17:04:07 2012 [14045]: 0x8 0xa
Mon May 28 17:04:07 2012 [14045]: User data:
Mon May 28 17:04:07 2012 [14045]: End packet
Mon May 28 17:04:07 2012 [14045]: login query for 'tacuser' unknown-port from 10.171.50.244 rejected
Mon May 28 17:04:07 2012 [14045]: login failure: tacuser 10.171.50.244 (10.171.50.244) unknown-port
Mon May 28 17:04:07 2012 [14045]: Writing AUTHEN/FAIL size=18
Mon May 28 17:04:07 2012 [14045]: PACKET: key=super_secret
Mon May 28 17:04:07 2012 [14045]: version 192 (0xc0), type 1, seq no 4, flags 0x1
Mon May 28 17:04:07 2012 [14045]: session_id 3974293904 (0xece2e990), Data length 6 (0x6)
Mon May 28 17:04:07 2012 [14045]: End headerПри авторизации пользователем user получаю следующее:
=====================================================
Mon May 28 17:14:12 2012 [14066]: Read AUTHEN/CONT size=25
Mon May 28 17:14:12 2012 [14066]: PACKET: key=super_secret
Mon May 28 17:14:12 2012 [14066]: version 192 (0xc0), type 1, seq no 3, flags 0x1
Mon May 28 17:14:12 2012 [14066]: session_id 4210167980 (0xfaf210ac), Data length 13 (0xd)
Mon May 28 17:14:12 2012 [14066]: End header
Mon May 28 17:14:12 2012 [14066]: type=AUTHEN/CONT
Mon May 28 17:14:12 2012 [14066]: user_msg_len 8 (0x8), user_data_len 0 (0x0)
Mon May 28 17:14:12 2012 [14066]: flags=0x0
Mon May 28 17:14:12 2012 [14066]: User msg:
Mon May 28 17:14:12 2012 [14066]: userpass
Mon May 28 17:14:12 2012 [14066]: User data:
Mon May 28 17:14:12 2012 [14066]: End packet
Mon May 28 17:14:12 2012 [14066]: login query for 'user' unknown-port from 10.171.50.244 accepted
Mon May 28 17:14:12 2012 [14066]: Writing AUTHEN/SUCCEED size=18
Mon May 28 17:14:12 2012 [14066]: PACKET: key=super_secret
Mon May 28 17:14:12 2012 [14066]: version 192 (0xc0), type 1, seq no 4, flags 0x1
Mon May 28 17:14:12 2012 [14066]: session_id 4210167980 (0xfaf210ac), Data length 6 (0x6)
Mon May 28 17:14:12 2012 [14066]: End header
Mon May 28 17:14:12 2012 [14066]: type=AUTHEN status=1 (AUTHEN/SUCCEED) flags=0x0
Mon May 28 17:14:12 2012 [14066]: msg_len=0, data_len=0
Mon May 28 17:14:12 2012 [14066]: msg:
Mon May 28 17:14:12 2012 [14066]: data:
Mon May 28 17:14:12 2012 [14066]: End packet
Mon May 28 17:14:12 2012 [14066]: 10.171.50.244: disconnectКак я понимаю, серверу не передается пароль несушествующего пользователя в системе.
При этом я могу войти в систему как под паролем локального пользователя так и под паролем с сервераМожете подсказать возможно ли войти в систему под несушествующей локальной учетной записью на удаленном хосте, а под учеткой взятой с сервера? Как я понял переменная template_user служит именно для этого, должна авторизовать входящего пользователя под тем пользователем который указан при авторизации именно в том случае когда локального паользователя с таким именем нет!.