summaryrefslogtreecommitdiffstats
path: root/smartproxy/man/ipa-smartproxy.1
diff options
context:
space:
mode:
Diffstat (limited to 'smartproxy/man/ipa-smartproxy.1')
-rw-r--r--smartproxy/man/ipa-smartproxy.1105
1 files changed, 105 insertions, 0 deletions
diff --git a/smartproxy/man/ipa-smartproxy.1 b/smartproxy/man/ipa-smartproxy.1
new file mode 100644
index 000000000..1fb31bab4
--- /dev/null
+++ b/smartproxy/man/ipa-smartproxy.1
@@ -0,0 +1,105 @@
+.\" A man page for ipa-smartproxy
+.\" Copyright (C) 2014 Red Hat, Inc.
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation, either version 3 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+.\" General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\"
+.\" Author: Rob Crittenden <rcritten@redhat.com>
+.TH "ipa-smartproxy" "1" "Jan 8 2014" "FreeIPA" "FreeIPA Manual Pages"
+.SH "NAME"
+ipa\-smartproxy \- IPA Foreman Smartproxy server
+.SH "SYNOPSIS"
+ipa\-smartproxy [\fIOPTION\fR]...
+.SH "DESCRIPTION"
+A WSGI service that provides a RESTful API for a use as a Foreman smart proxy. It is run in the context of the Apache web server.
+
+The RESTful interface is not authenticated so it is expected that the server is not generally accessible. By default it listens only on the localhost interface.
+
+The server needs access to an principal that is granted permission to perform host and hostgroup operations on an IPA master.
+
+Smartproxy server\-specific privileges and roles can be created with this:
+
+.na
+ $ ipa privilege\-add 'Smart Proxy Host Management' \-\-desc='Smartproxy host management'
+ $ ipa privilege\-add\-permission 'Smart Proxy Host Management' \-\-permission='add hosts' \-\-permission='remove hosts'
+ $ ipa permission-add 'modify host password' --permissions='write' --type='host' --attrs='userpassword'
+ $ ipa permission-add 'write host certificate' --permissions='write' --type='host' --attrs='usercertificate'
+ $ ipa permission-add 'modify host userclass' --permissions='write' --type='host' --attrs='userclass'
+ $ ipa privilege-add-permission 'Smart Proxy Host Management' --permission='add hosts' --permission='remove hosts' --permission='modify host password' --permission='modify host userclass' --permission='modify hosts' --permission='revoke certificate' --permission='manage host keytab' --permission='write host certificate' --permissions='retrieve certificates from the ca' --permissions='modify services' --permissions='manage service keytab' --permission='read dns entries' --permission='add dns entries' --permissions='update dns entries' --permissions='remove dns entries'
+ $ ipa role\-add 'Smartproxy management' \-\-desc='Smartproxy management'
+ $ ipa role\-add\-privilege 'Smartproxy management' \-\-privilege='Smart Proxy Host Management' \-\-privilege='Host Group Administrators'
+
+Create a host or user whose credentials will be used by the server to make requests and add it to the role:
+
+ $ ipa user\-add smartproxy \-\-first=Smartproxy \-\-last=Server --shell=/sbin/nologin --homedir=/var/www
+ $ ipa role\-add\-member \-\-users=smartproxy 'Smartproxy management'
+
+On the smartproxy server create a keytab for this user:
+
+ # kinit admin
+ # ipa\-getkeytab \-s ipa.example.com \-p smartproxy@EXAMPLE.COM \-k /etc/ipa/ipa\-smartproxy.keytab
+ # chown root:root /etc/ipa/ipa\-smartproxy.keytab
+ # chmod 600 /etc/ipa/ipa\-smartproxy.keytab
+
+Configure the GSS\-Proxy to manage the credentials. Add this to the top of the gssproxy configuration file (by default /etc/gssproxy/gssproxy.conf), before any other services:
+
+ [service/smartproxy]
+ mechs = krb5
+ cred_store = client_keytab:/etc/ipa/ipa\-smartproxy.keytab
+ cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U
+ cred_usage = initiate
+ euid = <uid of the smartproxy user>
+
+Restart GSS\-Proxy
+
+ # systemctl restart gssproxy
+
+Configure Apache to enable GSS\-Proxy. Create the directory /etc/systemd/system/httpd.service.d/ and create the file smartproxy.conf in it:
+
+ # mkdir /etc/systemd/system/httpd.service.d/
+ # cat > /etc/systemd/system/httpd.service.d/smartproxy.conf <<EOF
+ [Service]
+ Environment=GSS_USE_PROXY=1
+ EOF
+ # systemctl daemon-reload
+
+Copy /usr/share/doc/freeipa-server-foreman-smartproxy/ipa-smartproxy-apache.conf to /etc/httpd/conf.d/ipa-smartproxy.conf . This will configure the smartproxy WSGI application.
+
+Add a SELinux rule so Apache can use the port
+
+ # semanage port -a -t http_port_t -p tcp 8090
+
+Restart Apache
+
+ # systemctl restart httpd
+
+.SH "TEST"
+
+To do simple verification that the proxy was installed properly and is working first confirm that it is providing the realm feature:
+
+ # curl http://localhost:8090/features
+ ["realm"]
+
+Retrieve information on the current host, using your Kerberos realm in place of EXAMPLE.COM:
+
+ # curl http://localhost:8090/realm/EXAMPLE.COM/`hostname`
+ {
+ "dn": "fqdn=..."
+ "fqdn": [
+ ...
+ ]
+ "has_keytab": true,
+ ...
+ }
+.SH "SEE ALSO"
+.BR ipa\-smartproxy.conf(5)