Tabla de contenido
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