Installation ============ MAH can be installed via packages or manually from source. Installation Requirements ------------------------- The Mutual Authentication for Humans (MAH) requires numerous supporting software packages and services. * The Python interpreter 'python' - installed by default. (MAH has been tested with both Python versions 2.6 and 2.7) * A web server (e.g. Apache using WSGI) * A database (e.g. MySQL) * The `Flask `_ micro-framework, which in turn relies on `Werkzeug `_ and `Jinja 2 `_ (*Important:* Jinja2 version must be 2.6 or higher). * The `SQL Alchemy `_ SQL tool kit and Object Relational Mapper. * SeaSurf, a CSRF protection wrapper for Flask. * The Python Radius API, pyrad and Radius server which is configured to allow the system running MAH to be a NAS (Network Access Server). * The Python LDAP API, ldap and (read-only) access to an LDAP directory. Installation instructions ------------------------- Manual Installation ``````````````````` Pre-requisite package installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Apache and MySQL (if needed) and allow connectivity to port 80/443. :: # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm -P /rootwget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm # sudo rpm -ivh mysql-community-release-el7-5.noarch.rpmsudo rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install httpd mod_wsgi mysql-server MySQL-python 2. Install Flask, SQL Alchemy, pyrad, and ldap (and dependancies). Additional python packages will be installed by pip :: # yum install python-pip python-sqlalchemy 3. Install packages (not available as an rpm) via pip :: # pip install pyrad flask flask-sqlalchemy flask-seasurf six pip3 Download and setup MAH `````````````````````` 4. Download and extract the source tree from the git repository. :: # wget https://.tar.gz # tar xzf .tar.gz # cd mah-* 5. Copy the mah code into the webserver directory. :: # mkdir /var/www/wsgi/ # cp -r {mah,mah.wsgi} /var/www/wsgi Configuring the web server `````````````````````````` 6. Install apache config :: # cp mah.conf /etc/httpd/conf.d/ 7. Add the following line to /etc/httpd/conf.d/wsgi.conf to prevent SElinux alerts, if required. :: WSGISocketPrefix /var/run/wsgi Setting up MySQL ```````````````` 8. Running the following MySQL commands as root (or similar DBA account) will set up the required tables. :: mysql> create database authdb; mysql> create user 'auth'@'localhost' identified by 'password'; mysql> grant all on authdb.* to 'auth'@'localhost'; mysql> flush privileges; #useful commands: systemctl start mysqld.service; mysql_secure_installation; select * from authentication; and this dictates the following configuration: :: [database] connect = mysql://auth:password1@localhost/authdb SELinux configuration ````````````````````` The folloing SE Linux policy modules are required for the application to initiate LDAP and SMTP connections. :: module httpd_wsgi_socket 1.0; require { type httpd_log_t; type httpd_t; class sock_file create; } #============= httpd_t ============== allow httpd_t httpd_log_t:sock_file create; module httpd_ldap_connect 1.0; require { type ldap_port_t; type httpd_t; class tcp_socket name_connect; } #============= httpd_t ============== allow httpd_t ldap_port_t:tcp_socket name_connect; module httpd_smtp_connect 1.0; require { type httpd_t; type smtp_port_t; class tcp_socket name_connect; } allow httpd_t smtp_port_t:tcp_socket name_connect; Further configuration ````````````````````` Additional configuration of the applciation is recommended, particular the use of HTTPS, before Radius authentication is enabled. For a complete list of configuration options, please see the :doc:`configuration` page. Troubleshooting --------------- Apache errors will be report, by default, in /var/log/http/error_log. Application errors will be reported in the MAH log file or via syslog (see :doc:`configuration` page for details on the logging options). Running the application manually may provide additional debugging information: :: /var/www/wsgi/mah/mah.py This, by default, will start the application using the builtin Werkzeug http server, on localhost and port 5000 by default (editable in mah.conf)