diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/system-login.py | 14 | ||||
| -rw-r--r-- | src/pam-configs/radius | 20 | ||||
| -rw-r--r-- | src/pam-configs/radius-mandatory | 19 | ||||
| -rw-r--r-- | src/pam-configs/radius-optional | 19 | 
4 files changed, 48 insertions, 24 deletions
| diff --git a/src/conf_mode/system-login.py b/src/conf_mode/system-login.py index 02c97afaa..be5ff2d4c 100755 --- a/src/conf_mode/system-login.py +++ b/src/conf_mode/system-login.py @@ -104,6 +104,9 @@ def get_config(config=None):      # prune TACACS global defaults if not set by user      if login.from_defaults(['tacacs']):          del login['tacacs'] +    # same for RADIUS +    if login.from_defaults(['radius']): +        del login['radius']      # create a list of all users, cli and users      all_users = list(set(local_users + cli_users)) @@ -377,11 +380,14 @@ def apply(login):              except Exception as e:                  raise ConfigError(f'Deleting user "{user}" raised exception: {e}') -    # Enable RADIUS in PAM configuration -    pam_cmd = '--remove' +    # Enable/disable RADIUS in PAM configuration +    cmd('pam-auth-update --disable radius-mandatory radius-optional')      if 'radius' in login: -        pam_cmd = '--enable' -    cmd(f'pam-auth-update --package {pam_cmd} radius') +        if login['radius'].get('security_mode', '') == 'mandatory': +            pam_profile = 'radius-mandatory' +        else: +            pam_profile = 'radius-optional' +        cmd(f'pam-auth-update --enable {pam_profile}')      # Enable/Disable TACACS in PAM configuration      pam_cmd = '--remove' diff --git a/src/pam-configs/radius b/src/pam-configs/radius deleted file mode 100644 index eee9cb93e..000000000 --- a/src/pam-configs/radius +++ /dev/null @@ -1,20 +0,0 @@ -Name: RADIUS authentication -Default: no -Priority: 257 -Auth-Type: Primary -Auth: -    [default=ignore success=2] pam_succeed_if.so service = sudo -    [default=ignore success=ignore] pam_succeed_if.so user ingroup aaa quiet -    [authinfo_unavail=ignore success=end default=ignore] pam_radius_auth.so - -Account-Type: Primary -Account: -    [default=ignore success=2] pam_succeed_if.so service = sudo -    [default=ignore success=ignore] pam_succeed_if.so user ingroup aaa quiet -    [authinfo_unavail=ignore success=end perm_denied=bad default=ignore] pam_radius_auth.so - -Session-Type: Additional -Session: -    [default=ignore success=2] pam_succeed_if.so service = sudo -    [default=ignore success=ignore] pam_succeed_if.so user ingroup aaa quiet -    [authinfo_unavail=ignore success=ok default=ignore] pam_radius_auth.so diff --git a/src/pam-configs/radius-mandatory b/src/pam-configs/radius-mandatory new file mode 100644 index 000000000..43b6bd3e0 --- /dev/null +++ b/src/pam-configs/radius-mandatory @@ -0,0 +1,19 @@ +Name: RADIUS authentication (mandatory mode) +Default: no +Priority: 576 + +Auth-Type: Primary +Auth-Initial: +    [default=ignore success=end perm_denied=bad auth_err=bad] pam_radius_auth.so +Auth: +    [default=ignore success=end perm_denied=bad auth_err=bad] pam_radius_auth.so use_first_pass + +Account-Type: Primary +Account: +    [default=ignore success=1] pam_succeed_if.so user notingroup radius quiet +    [default=ignore new_authtok_reqd=done success=end perm_denied=bad auth_err=bad] pam_radius_auth.so + +Session-Type: Additional +Session: +    [default=ignore success=1] pam_succeed_if.so user notingroup radius quiet +    [default=ignore success=ok perm_denied=bad auth_err=bad] pam_radius_auth.so diff --git a/src/pam-configs/radius-optional b/src/pam-configs/radius-optional new file mode 100644 index 000000000..9f6d5f0ea --- /dev/null +++ b/src/pam-configs/radius-optional @@ -0,0 +1,19 @@ +Name: RADIUS authentication (optional mode) +Default: no +Priority: 576 + +Auth-Type: Primary +Auth-Initial: +    [default=ignore success=end] pam_radius_auth.so +Auth: +    [default=ignore success=end] pam_radius_auth.so use_first_pass + +Account-Type: Primary +Account: +    [default=ignore success=1] pam_succeed_if.so user notingroup radius quiet +    [default=ignore new_authtok_reqd=done success=end perm_denied=bad auth_err=bad] pam_radius_auth.so + +Session-Type: Additional +Session: +    [default=ignore success=1] pam_succeed_if.so user notingroup radius quiet +    [default=ignore success=ok perm_denied=bad auth_err=bad] pam_radius_auth.so | 
