Configuración sobre el sistema

Tomando en cuenta que ahora tiene una red totalmente funcional, le será posible seguir con las siguientes instrucciones que incluyen la instalación de paquetes, actividad que hace uso de la red.

sources.list. Instalación de paquetes

rm /etc/apt/sources.list

cat << MAFI > /etc/apt/sources.list 
#Inicio del archivo /etc/apt/sources.list para servidores
deb http://debian.salud.gob.sv/debian/ stretch main contrib non-free
deb-src http://debian.salud.gob.sv/debian/ stretch main contrib non-free

deb http://debian.salud.gob.sv/debian/ stretch-updates main contrib non-free
deb-src http://debian.salud.gob.sv/debian/ stretch-updates main contrib non-free

deb http://debian.salud.gob.sv/debian-security/ stretch/updates main contrib non-free
deb-src http://debian.salud.gob.sv/debian-security/ stretch/updates main contrib non-free
#Fin del archivo /etc/apt/sources.list

MAFI

Actualice el sistema:

apt update
apt upgrade 

Los siguientes paquetes son necesarios para las funciones críticas de su firewall.

apt install -y squid squidguard{,-doc} ipset apache2 libapache2-mod-php7.0 php7.0 vim

El siguiente paquete va para DHCP

apt install -y isc-dhcp-server

Instale los siguientes paquetes para obtener herramientas de monitoreo y administración

echo -e "wireshark-common\twireshark-common/install-setuid\tboolean\tfalse" | debconf-set-selections
apt -y install nmap tree pv sudo lshw iptraf tcpdump tmux tshark bwm-ng iptstate 

Los siguientes paquetes son necesarios para los scripts auxiliares, y como estos, son opcionales. Aunque también se verifican en el script de instalación de los mismos, es probable que quiera instalarlos de una vez.

apt install -y libtext-diff-perl libconfig-simple-perl libemail-sender-perl libemail-sender-transport-smtps-perl libemail-sender-transport-smtps-perl libemail-mime-perl libio-all-perl

Inicio de iptables

La configuración de iptables se realiza como si fuera un servicio en el sistema.

Primero, creamos el script que se encarga de la ejecución de los ficheros en /etc/fws/ donde configuramos los permisos para la red.

A continuación, creamos el fichero con la unidad iptables y activamos para que se ejecute al inicio del sistema:

tee /usr/local/bin/firewall.sh  < MAFI
#!/bin/bash

function error_exit {
    echo "$1" 
    exit "${2:-1}"  ## Return a code specified by $2 or 1 by default.
}

# Define quién hace la llamada
tipo=${1:-"usuario"}

# Configuración de los grupos IPSET a usar en IPTABLES
/etc/fws/grupos_ipset.sh 2> /dev/null

# El grupo ipset debe existir. 
# TODO: No valida que el grupo tenga miembros, ni que haya alguno útil
ipset -q -L admins >/dev/null 2>&1 || error_exit "El grupo admins no existe"

# Configuración de la tabla FILTER de IPTABLES. Recuerde que al menos root debe tener permisos de ejecución
/etc/fws/firewall.sh 2> /dev/null

# Configuración de tabla NAT en IPTABLES, y configuración de rutas
/etc/fws/rutas.sh 2> /dev/null

# Configura una dmz en caso de tenerla
dmz=$(egrep -c '^(IND|SRD|DMZ)' /etc/fws/infraestructura.sh)
if [ 3 -eq $dmz ]; then
    /etc/fws/dmz.sh 2> /dev/null
fi

# Configuración personalizada de reglas especificas para el establecimiento dado.
/etc/fws/establecimiento.sh 2> /dev/null

case $tipo in
    "usuario")
        echo "Verificando cambios en los ficheros de configuración"
        # Enviamos los cambios para (escarnio) conocimiento de todos
        nohup sudo /usr/local/bin/diferencias.pl >/dev/null 2>&1 &
        exit
esac

MAFI


cat <MAFI >> /etc/systemd/system/iptables.service
[Unit]
Description="Inicio de las reglas de Iptables"
After=network.target

[Service]
ExecStart=/usr/local/bin/firewall.sh sistema
Type=forking

[Install]
WantedBy=default.target

MAFI

systemctl enable iptables.service

Módulos para FTP Pasivo

Configurar el reenvío de paquetes a través de interfaces, y activarla en caliente:

sed -i '$a ip_conntrack_ftp\nnf_nat_ftp ' /etc/modules
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

Si no va reiniciar el sistema antes de hacer pruebas, será necesario cargar los módulos anteriores en el sistema con los siguientes comandos:

modprobe nf_nat_ftp
modprobe ip_conntrack_ftp

VIM

Configuración opcional: Resaltado de sintaxis, identado a 4 espacios, patrón de colores para terminal obscuro y numerado de líneas.
Por último, configure el comportamiento más clásico para mouse

sed -i '/syntax on/ a set tabstop=4\nset shiftwidth=4\nset expandtab' /etc/vim/vimrc
sed -i '/\"set background=dark/c\set background=dark' /etc/vim/vimrc
sed -i -r 's/(set\smouse=)\w/\1r/' /usr/share/vim/vim80/defaults.vim
sed -i '/^syntax /a set number' /etc/vim/vimrc

Alternatives editor

Configuración opcional: nano puede llegar a considerarse engorroso a la hora de modificar ciertos ficheros que así lo requieran

update-alternatives --set editor /usr/bin/vim.basic

Autenticación contra el árbol LDAP

En el servidor de dominio (10.10.20.49) existe un certificado digital llamado CA-sv.crt, desde un cliente cualquiera, y usando las credenciales del usuario soporte, es posible obtenerlo con el siguiente comando:

smbclient //10.10.20.49/soporte/ -U soporte -c 'get CA-sv.crt'

Luego puede enviarse al firewall de la siguiente forma:

scp CA-sv.crt fwadmin@<ip-firewall>:~/

Luego, en el firewall configuramos de la siguiente forma:

aptitude install sssd{,-tools} sudo
mv /home/fwadmin/CA-sv.crt /etc/ssl/certs/

cat <<MAFI>/etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss,pam
domains = salud.gob.sv

[nss]

[pam]  

[domain/salud.gob.sv]
ldap_uri = ldap://directorio.salud.gob.sv
ldap_search_base = dc=salud,dc=gob,dc=sv
ldap_schema = rfc2307
id_provider = ldap
ldap_user_uuid = entryuuid
ldap_group_uuid = entryuuid
ldap_id_use_start_tls = True
enumerate = False
cache_credentials = True
ldap_user_search_base = ou=Users,dc=salud,dc=gob,dc=sv
ldap_group_search_base = ou=Groups,dc=salud,dc=gob,dc=sv
chpass_provider = ldap
auth_provider = ldap
ldap_tls_cacertdir = /etc/ssl/certs
ldap_tls_cacert = /etc/ssl/certs/CA-sv.crt
MAFI

systemctl restart sssd.service

chmod 700 /etc/sssd/sssd.conf
systemctl restart sssd.service 

sed -E -i 's/^#\s*(account\s*required\s*pam_access.so)/\1/g' /etc/pam.d/sshd

grep -q '+ : root : 192.168.2.20/27' /etc/security/access.conf || sed '$a + : root : 192.168.2.20/27' /etc/security/access.conf  -i
grep -q '+ : MinsalAdminFirewall : ALL' /etc/security/access.conf || sed '$a + : MinsalAdminFirewall : ALL' /etc/security/access.conf  -i
grep -q -- '- : ALL: ALL' /etc/security/access.conf || sed '$a - : ALL: ALL' /etc/security/access.conf  -i

grep -q 'pam_mkhomedir.so' /etc/pam.d/common-session || sed -i '/"Additional" block/ a session\trequired\tpam_mkhomedir.so umask=0022 skel=/etc/skel' /etc/pam.d/common-session
grep -q 'pam_mkhomedir.so' /etc/pam.d/common-session-noninteractive || sed -i '/"Additional" block/ a session\trequired\tpam_mkhomedir.so umask=0022 skel=/etc/skel' /etc/pam.d/common-session-noninteractive

cat <<MAFI>/etc/sudoers.d/ruth 
%MinsalAdminFirewall ALL=(ALL) NOPASSWD:/bin/su
MAFI