first cut of everything we need for 2fa client side
This commit is contained in:
parent
db4eeaacc2
commit
2b3a8d2448
8 changed files with 132 additions and 0 deletions
21
files/2fa/pam_url.conf
Normal file
21
files/2fa/pam_url.conf
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
pam_url:
|
||||||
|
{
|
||||||
|
settings:
|
||||||
|
{
|
||||||
|
url = "https://fas-all.phx2.fedoraproject.org:8443/"; # URI to fetch
|
||||||
|
returncode = "OK"; # The remote script/cgi should return a 200 http code and this string as its only results
|
||||||
|
userfield = "user"; # userfield name to send
|
||||||
|
passwdfield = "token"; # passwdfield name to send
|
||||||
|
extradata = "&do=login"; # extradata to send
|
||||||
|
prompt = "Password+Token: "; # password prompt
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
{
|
||||||
|
verify_peer = true; # Should we verify SSL ?
|
||||||
|
verify_host = true; # Should we verify the CN in the SSL cert?
|
||||||
|
client_cert = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side certificate
|
||||||
|
client_key = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side key (can be same file as above if a single cert)
|
||||||
|
ca_cert = "/etc/pki/tls/private/totpcgi-ca.cert";
|
||||||
|
};
|
||||||
|
};
|
21
files/2fa/pam_url.conf.fakefas01.fedoraproject.org
Normal file
21
files/2fa/pam_url.conf.fakefas01.fedoraproject.org
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
pam_url:
|
||||||
|
{
|
||||||
|
settings:
|
||||||
|
{
|
||||||
|
url = "https://fas-all.phx2.fedoraproject.org:8443/"; # URI to fetch
|
||||||
|
returncode = "OK"; # The remote script/cgi should return a 200 http code and this string as its only results
|
||||||
|
userfield = "user"; # userfield name to send
|
||||||
|
passwdfield = "token"; # passwdfield name to send
|
||||||
|
extradata = "&do=login"; # extradata to send
|
||||||
|
prompt = "Password+Token: "; # password prompt
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
{
|
||||||
|
verify_peer = true; # Should we verify SSL ?
|
||||||
|
verify_host = true; # Should we verify the CN in the SSL cert?
|
||||||
|
client_cert = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side certificate
|
||||||
|
client_key = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side key (can be same file as above if a single cert)
|
||||||
|
ca_cert = "/etc/pki/tls/private/totpcgi-ca.cert";
|
||||||
|
};
|
||||||
|
};
|
21
files/2fa/pam_url.conf.stg.fedoraproject.org
Normal file
21
files/2fa/pam_url.conf.stg.fedoraproject.org
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
pam_url:
|
||||||
|
{
|
||||||
|
settings:
|
||||||
|
{
|
||||||
|
url = "https://fas-all.stg.phx2.fedoraproject.org:8443/"; # URI to fetch
|
||||||
|
returncode = "OK"; # The remote script/cgi should return a 200 http code and this string as its only results
|
||||||
|
userfield = "user"; # userfield name to send
|
||||||
|
passwdfield = "token"; # passwdfield name to send
|
||||||
|
extradata = "&do=login"; # extradata to send
|
||||||
|
prompt = "Password+Token: "; # password prompt
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
{
|
||||||
|
verify_peer = true; # Should we verify SSL ?
|
||||||
|
verify_host = true; # Should we verify the CN in the SSL cert?
|
||||||
|
client_cert = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side certificate
|
||||||
|
client_key = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side key (can be same file as above if a single cert)
|
||||||
|
ca_cert = "/etc/pki/tls/private/totpcgi-ca.cert";
|
||||||
|
};
|
||||||
|
};
|
21
files/2fa/pam_url.conf.vpn.fedoraproject.org
Normal file
21
files/2fa/pam_url.conf.vpn.fedoraproject.org
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
pam_url:
|
||||||
|
{
|
||||||
|
settings:
|
||||||
|
{
|
||||||
|
url = "https://fas-all.vpn.fedoraproject.org:8443/"; # URI to fetch
|
||||||
|
returncode = "OK"; # The remote script/cgi should return a 200 http code and this string as its only results
|
||||||
|
userfield = "user"; # userfield name to send
|
||||||
|
passwdfield = "token"; # passwdfield name to send
|
||||||
|
extradata = "&do=login"; # extradata to send
|
||||||
|
prompt = "Password+Token: "; # password prompt
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
{
|
||||||
|
verify_peer = true; # Should we verify SSL ?
|
||||||
|
verify_host = true; # Should we verify the CN in the SSL cert?
|
||||||
|
client_cert = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side certificate
|
||||||
|
client_key = "/etc/pki/tls/private/totpcgi.pem"; # file to use as client-side key (can be same file as above if a single cert)
|
||||||
|
ca_cert = "/etc/pki/tls/private/totpcgi-ca.cert";
|
||||||
|
};
|
||||||
|
};
|
11
files/2fa/sudo.pam
Normal file
11
files/2fa/sudo.pam
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#%PAM-1.0
|
||||||
|
auth required pam_env.so
|
||||||
|
auth sufficient pam_url.so config=/etc/pam_url.conf
|
||||||
|
auth requisite pam_succeed_if.so uid >= 500 quiet
|
||||||
|
auth required pam_deny.so
|
||||||
|
|
||||||
|
auth include system-auth
|
||||||
|
account include system-auth
|
||||||
|
password include system-auth
|
||||||
|
session optional pam_keyinit.so revoke
|
||||||
|
session required pam_limits.so
|
6
files/2fa/sudo.pam.dev.fedoraproject.org
Normal file
6
files/2fa/sudo.pam.dev.fedoraproject.org
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#%PAM-1.0
|
||||||
|
auth include system-auth
|
||||||
|
account include system-auth
|
||||||
|
password include system-auth
|
||||||
|
session optional pam_keyinit.so revoke
|
||||||
|
session required pam_limits.so
|
6
files/2fa/sudo.pam.qa.fedoraproject.org
Normal file
6
files/2fa/sudo.pam.qa.fedoraproject.org
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#%PAM-1.0
|
||||||
|
auth include system-auth
|
||||||
|
account include system-auth
|
||||||
|
password include system-auth
|
||||||
|
session optional pam_keyinit.so revoke
|
||||||
|
session required pam_limits.so
|
25
tasks/2fa_client.yml
Normal file
25
tasks/2fa_client.yml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
- name: install pam_url
|
||||||
|
yum: name=pam_url state=installed
|
||||||
|
|
||||||
|
- name: /etc/pki/tls/private/totpcgi.pem
|
||||||
|
copy: src=$puppet_private/2fa-certs/keys/${inventory_hostname}.pem dest=/etc/pki/tls/private/totpcgi.pem mode=0400
|
||||||
|
|
||||||
|
- name: /etc/pki/tls/private/totpcgi-ca.cert
|
||||||
|
copy: src=$puppet_private/2fa-certs/keys/ca.crt dest=/etc/pki/tls/private/totpcgi-ca.cert mode=0400
|
||||||
|
|
||||||
|
- name: /etc/pam_url.conf - split for staging/phx2/everyone else
|
||||||
|
copy: src=$item dest=/etc/pam_url.conf mode=0644
|
||||||
|
with_first_found:
|
||||||
|
- $files/2fa/pam_url.conf.${inventory_hostname}
|
||||||
|
- $files/2fa/pam_url.conf.${ansible_domain}
|
||||||
|
- $files/2fa/pam_url.conf
|
||||||
|
|
||||||
|
- name: /etc/pam.d/sudo
|
||||||
|
copy: src=$item dest=/etc/pam.d/sudo mode=0644
|
||||||
|
with_first_found:
|
||||||
|
- $files/2fa/sudo.pam.${inventory_hostname}
|
||||||
|
- $files/2fa/sudo.pam.${ansible_domain}
|
||||||
|
- $files/2fa/sudo.pam
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue