Tabla de contenido
Configuración de reporte y otras configuraciones opcionales
Todas lo que sigue no es ni imprescindible ni realmente importante para el funcionamiento de su firewall, pero añadirá características importantes
Reporte de uso de internet
Configuraremos al ya instalado sarg para que los reportes tengan sentido para nosotros
sed -i -r -f - /etc/sarg/sarg.conf << MAFI
s/Squid User Access Reports/Reporte de Uso de Internet/
s%^output_dir.+%output_dir /var/www/html/sarg%
s/^resolve_ip.+/resolve_ip no/
s/^date_format.+/date_format e/
s/^charset.+/charset UTF-8/
s/lastlog 0/lastlog 20/g
s/^show_successful_message.+/show_successful_message yes/
s/^\#?show_sarg_info.+/show_sarg_info no/g
s/^\#?show_sarg_logo.+/show_sarg_logo no/g
MAFI
sed -i -f - /etc/sarg/sarg-reports.conf <<MAFI
s%HTMLOUT\=.*%HTMLOUT\=/var/www/html/sarg/%
s/PAGETITLE\=.*/PAGETITLE="Reporte de Uso de Internet"/
MAFI
grep -q 'TAG_NONE/400' /etc/sarg/exclude_codes || echo 'TAG_NONE/400' >> /etc/sarg/exclude_codes
Securizamos el acceso a /reportes por medio del servidor web
cat << "MAFI" > /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin fws@salud.gob.sv
DocumentRoot /var/www/html
<Directory /var/www/html/>
Options -Indexes -FollowSymLinks -MultiViews -ExecCGI
Order allow,deny
Allow from all
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
MAFI
Creamos el fichero /var/www/html/sarg/.htpassword
al que se hace referencia en el fichero anterior. El último archivos le pide una contraseña a usar en conjunto con el usuarios “administrador” para entrar a ver los reportes
touch /var/www/html/sarg/.htpassword
chmod 600 /var/www/html/sarg/.htpassword
chown -R www-data:www-data /var/www/html/sarg/.htpassword
htpasswd -B /var/www/html/sarg/.htpassword administrador
Reiniciamos apache para que toda la configuración tenga efecto:
systemctl restart apache2.service
Reporte de sistema
Este reporte es toda una serie de complicados script que tienen por objetivo último el enviar a su correo un par de gráficas muy bonitas. Esta en una fase bastante avanzada de desarrollo, y hasta ahora parecen que funcionan bien.
Activamos el registro de datos, aumentamos el número de registros a guardar y reiniciamos a sysstat
para que los cambios tomen efecto
sed -i -r 's/^ENABLED.+/ENABLED="true"/' /etc/default/sysstat
sed -i -r 's/^HISTORY.+/HISTORY=28/' /etc/sysstat/sysstat
sed -i -r 's/^SADC_OPTIONS.+/SADC_OPTIONS="-S XDISK"/' /etc/sysstat/sysstat
systemctl restart sysstat.service
Cambiamos la configuración de cron para sysstat, cambiando el intervalo de recolección de datos a 5 minutos y configurando otras tareas relacionadas. Creamos el directorio donde se han de almacenar los ficheros:
cat << MAFI > /etc/cron.d/sysstat
# The first element of the path is a directory where the debian-sa1
# script is located
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
# Activity reports every 10 minutes everyday
0-55/5 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Antes de que se rote al archivo de estadística de este día, disponemos de las estadísticas que en realidad nos interesan
56 23 * * * root command -v sadf > /dev/null && sadf -d -s 00:00:00 -e 23:59:59 -- -r > /var/spool/actividad/memoria.data
57 23 * * * root command -v sadf > /dev/null && sadf -d -s 00:00:00 -e 23:59:59 -- -F MOUNT > /var/spool/actividad/disco.data
58 23 * * * root command -v sadf > /dev/null && sadf -d -s 00:00:00 -e 23:59:59 -- -n DEV > /var/spool/actividad/trafico.data
# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
MAFI
systemctl restart cron.service
mkdir /var/spool/actividad/
touch /var/spool/actividad/disco.prom
Creamos el fichero de configuración para los script de reporte de la siguiente forma. Sobre todo, deberá configurar un usuario/contraseña válido y el servidor contra el cual sirva. Luego, su memoria RAM en kilobytes
cat << MAFI >> ~/.configuracion_reporte.ini
[correo]
servidor = mail.salud.gob.sv
usuario = envio@organizacion.org
password = pass_enviante
[envio]
receptor = receptor@organizacion.org
[general]
ruta_datos = '/var/spool/actividad'
tipo_fuente = '/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf'
MAFI
Y ya por último, configuramos los reportes a ejecutarse como tarea por parte de crontab
crontab -l > horario.cron
grep reporte.pl horario.cron || echo " 14 7 * * * /root/reporte/reporte.pl" >> horario.cron
grep diferencias.pl horario.cron || echo " 15 7 * * * /root/reporte/diferencias.pl" >> horario.cron
crontab horario.cron
rm horario.cron
NTP
Es posible que su servidor tenga ya la hora correctamente configurada, pero si aún con eso quiere evitar los molestos mensajes en syslog, basta con ejecutar
sed -i -r 's/^#?NTP=/NTP=10.10.20.20/' /etc/systemd/timesyncd.conf
sed -i -r 's/^#?FallbackNTP=.+/FallbackNTP=10.10.20.20/' /etc/systemd/timesyncd.conf
timedatectl set-ntp true
systemctl restart systemd-timesyncd
DHCP
La institución que usa esta configuración de firewall cree fervientemente en que la asignación dinámica de IP en los clientes puede ser decisión administrativa eficiente en muchos sentidos. Sin embargo, cierto dispositivo requiere de esta configuración y debido a los problemas que se presentan en Debian Stretch me pareció una buena idea recopilar la configuración mínima necesaria
source /root/fws/infraestructura.sh
sed -i -r "s/^INTERFACESv4.+/INTERFACESv4=\"$INP\"/" /etc/default/isc-dhcp-server
sed -i -r 's/^INTERFACESv6(.+)/#INTERFACESv6\1/' /etc/default/isc-dhcp-server
El siguiente es más bien un ejemplo de como podría ir el fichero de configuración.
source /root/fws/infraestructura.sh
cat << MAFI > /etc/dhcp/dhcpd.conf
# Server will not attempt to do a DNS update when a lease is confirmed.
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "$DOMINIO";
option domain-name-servers 10.10.20.20, 10.10.20.21;
default-lease-time 600;
max-lease-time 7200;
# This DHCP server is the official DHCP server
authoritative;
# Use this to send dhcp log messages to a different log file
log-facility local7;
# Servicio
subnet 10.168.28.128 netmask 255.255.255.192 {
range 10.168.28.130 10.168.28.134;
option domain-name-servers 10.10.20.20, 10.10.20.21;
option domain-name "$DOMINIO";
option routers 10.168.28.129;
option broadcast-address 10.168.28.191;
default-lease-time 600;
max-lease-time 7200;
}
MAFI
Si después de una configuración satisfactoria aún tiene problemas para arrancar el servicio, con un mensaje en los logs como los siguientes:
Jul 20 13:26:47 fw-establecimiento isc-dhcp-server[24369]: Launching IPv4 server only.
Jul 20 13:26:47 fw-establecimiento dhcpd[24378]: Internet Systems Consortium DHCP Server 4.3.5
Jul 20 13:26:47 fw-establecimiento dhcpd[24378]: Copyright 2004-2016 Internet Systems Consortium.
Jul 20 13:26:47 fw-establecimiento dhcpd[24378]: All rights reserved.
Jul 20 13:26:47 fw-establecimiento dhcpd[24378]: For info, please visit https://www.isc.org/software/dhcp/
Jul 20 13:26:47 fw-establecimiento isc-dhcp-server[24369]: Starting ISC DHCPv4 server: dhcpddhcpd service already running (pid file /var/run/dhcpd.pid currenty exists) ... failed!
Jul 20 13:26:47 fw-establecimiento systemd[1]: isc-dhcp-server.service: Control process exited, code=exited status=1
Jul 20 13:26:47 fw-establecimiento systemd[1]: Failed to start LSB: DHCP server.
Jul 20 13:26:47 fw-establecimiento systemd[1]: isc-dhcp-server.service: Unit entered failed state.
Jul 20 13:26:47 fw-establecimiento systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
Bastará con apagar el servicio, borrar a dhcpd.pid
e iniciar el servicio
systemctl stop isc-dhcp-server.service
rm /var/run/dhcpd.pid
systemctl start isc-dhcp-server.service