#!/bin/bash #/** #@file security-config #@brief OpenGnsys Server security configuration. #@note Security configuration tipsx for UFW, FirewallD and SELinux. #@version 1.1.0 - Initial version. #@author Ramón M. Gómez, ETSII Univ. Sevilla #@date 2016-04-18 #*/ ## # Variables. PROG=$(basename "$0") OPENGNSYS=/opt/opengnsys # Errors control. if [ "$USER" != "root" ]; then echo "$PROG: Need to be root." >&2 exit 1 fi # UFW configuration. if which ufw &>/dev/null; then echo "Configuring UFW." # Adding active services. ufw allow "Apache Secure" ufw allow from 127.0.0.1/8 to any port mysql proto tcp # MySQL from the loopback ufw allow OpenSSH ufw allow Samba ufw allow rsync ufw allow tftp ufw allow 67,68/udp # DHCP ufw allow 2008,2009,2011/tcp # OpenGnsys services ufw allow 6881:6999/udp # BitTorrent ufw allow 9000/tcp # PHP-FPM ufw allow 9000:9099/udp # Multicast # Applying configuration. ufw enable # FirewallD configuration. elif which firewall-cmd &>/dev/null; then echo "Configuring FirewallD." # Defining services. python -c " import firewall.core.io.service as ios s=ios.Service() s.short = 'OpenGnsys Services' s.name = 'opengnsys' s.ports = [('2008', 'tcp'), ('2009', 'tcp'), ('2011', 'tcp')] ios.service_writer(s, '/etc/firewalld/services') s.name = 'php-fpm' s.ports = [('9000', 'tcp')] ios.service_writer(s, '/etc/firewalld/services')" # Adding active services. firewall-cmd --permanent --add-service=dhcp firewall-cmd --permanent --add-service=https firewall-cmd --permanent --add-service=mysql --zone internal firewall-cmd --permanent --add-service=opengnsys firewall-cmd --permanent --add-service=php-fpm # Ubuntu 14.04 does not define "rsyncd" service. firewall-cmd --permanent --add-service=rsyncd || \ firewall-cmd --permanent --add-port=873/tcp firewall-cmd --permanent --add-service=samba firewall-cmd --permanent --add-service=ssh firewall-cmd --permanent --add-service=tftp # Adding Multicast ports. firewall-cmd --permanent --add-port=9000-9051/udp # Adding BitTorent ports. firewall-cmd --permanent --add-port=6881-6999/udp # Applying configuration. firewall-cmd --reload else echo "$PROG: Warning: Firewall won't be configured (neither ufw or firewalld are installed)." fi # SELinux configuration. if which setsebool &>/dev/null; then if selinuxenabled; then echo "Configuring SELinux." # Configuring Apache. setsebool -P httpd_can_connect_ldap on semanage fcontext -at httpd_sys_content_t "$OPENGNSYS/www(/.*)?" # Configuring Samba. setsebool -P samba_export_all_ro=1 samba_export_all_rw=1 semanage fcontext -at samba_share_t "$OPENGNSYS/client(/.*)?" semanage fcontext -at samba_share_t "$OPENGNSYS/images(/.*)?" # Applying configuration. restorecon -R $OPENGNSYS else echo "$PROG: Warning: SELinux is disabled, it won't be configured." fi else echo "$PROG: Warning: SELinux won't be configured (policycoreutils is not installed)." fi