diff options
author | zsdc <taras@vyos.io> | 2023-09-13 13:16:20 +0300 |
---|---|---|
committer | zsdc <taras@vyos.io> | 2023-11-20 18:46:24 +0200 |
commit | 5d712700d6b8db43e36ad5f2a9f8792203bb12d0 (patch) | |
tree | 57ca0315aaa64984a0bded43e22b3d0f53e3e2e1 /src/conf_mode/system-login.py | |
parent | 2a023b878471500bd78962ca94d9174a328ce5c9 (diff) | |
download | vyos-1x-5d712700d6b8db43e36ad5f2a9f8792203bb12d0.tar.gz vyos-1x-5d712700d6b8db43e36ad5f2a9f8792203bb12d0.zip |
TACACS: T5577: Added `mandatory` and `optional` modes for TACACS+
In CLI we can choose authentication logic:
- `mandatory` - if TACACS+ answered with `REJECT`, authentication must be
stopped and access denied immediately.
- `optional` (default) - if TACACS+ answers with `REJECT`, authentication
continues using the next module.
In `mandatory` mode authentication will be stopped only if TACACS+ clearly
answered that access should be denied (no user in TACACS+ database, wrong
password, etc.). If TACACS+ is not available or other errors happen, it will be
skipped and authentication will continue with the next module, like in
`optional` mode.
Diffstat (limited to 'src/conf_mode/system-login.py')
-rwxr-xr-x | src/conf_mode/system-login.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/conf_mode/system-login.py b/src/conf_mode/system-login.py index be5ff2d4c..87a269499 100755 --- a/src/conf_mode/system-login.py +++ b/src/conf_mode/system-login.py @@ -389,11 +389,14 @@ def apply(login): pam_profile = 'radius-optional' cmd(f'pam-auth-update --enable {pam_profile}') - # Enable/Disable TACACS in PAM configuration - pam_cmd = '--remove' + # Enable/disable TACACS+ in PAM configuration + cmd('pam-auth-update --disable tacplus-mandatory tacplus-optional') if 'tacacs' in login: - pam_cmd = '--enable' - cmd(f'pam-auth-update --package {pam_cmd} tacplus') + if login['tacacs'].get('security_mode', '') == 'mandatory': + pam_profile = 'tacplus-mandatory' + else: + pam_profile = 'tacplus-optional' + cmd(f'pam-auth-update --enable {pam_profile}') return None |