En éste artículo veremos una pequeña guía (básica) de configuración para uno de los Firewall más populares (CSF).
Me refiero al ConfigServer Security & Firewall (CSF). Este es uno de los proyectos de configserver.com. el CSF es una pequeña suite de seguridad, sin embargo nos concentraremos en su cortafuego.
La instalación de este site lo realizaremos en Centos 7, pero si usas Ubuntu u otra distro distinta, seguramente no tendrás problemas al seguir esta guía.
1.- Deshabilitar el firewalld de Centos, ejecutando los siguientes comandos en su terminal.
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
2.- Instalar y configurar iptables.
yum install iptables-services
Para iptables y ip6tables ejecutamos lo siguiente:
touch /etc/sysconfig/iptables
touch /etc/sysconfig/ip6tables
Iniciar servicio iptables.
systemctl start iptables
systemctl start ip6tables
Habilitar servicio iptables
systemctl enable iptables
systemctl enable ip6tables
3.- Descargar e Instalar dependencias para CSF.
yum install perl perl-libwww-perl wget perl-GDGraph perl-Time-HiRes perl-LWP-Protocol-https
cd /usr/local/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
Si usas cPanel:
sh install.sh
Si no usas cPanel:
sh install.generic.sh
Ahora debe comprobar que CSF realmente funciona en este servidor. Vaya al directorio "/usr/local/csf/bin/" y ejecute
"csftest.pl". Debería mostrar algo como esto:
[root@server bin]# perl csftest.pl
Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK
CSF, por defecto ya te configura los puertos que detecta abiertos, pero atentos porque está en modo prueba, es decir que se detendrá su funcionamiento 5 minutos después de cada ejecución. Luego de que hayas configurado el firewall debidamente, tendrás que deshabilitar este modo testing editando el archivo /etc/csf/csf.conf y cambiando:
"TESTING = "1"
por
TESTING = "0"
De forma predeterminada, CSF permite el tráfico entrante y saliente para el puerto estándar SSH 22, si utiliza un puerto SSH distinto, agregue su puerto a la configuración en la línea 139 "TCP_IN" (/etc/csf/csf.conf).
4.- Ahora iniciamos el firewall (CSF).
systemctl start csf
systemctl start lfd
También puede usar el comando csf -r
systemctl enable csf
systemctl enable lfd
Las reglas predeterminadas de la lista de CSF las puedes visualizar con el comando:
csf -l
También puedes usar ipatbles -L
5.- Comandos Básicos:
Iniciar el Firewall (habilitar reglas del firewall)
csf -s
Flush/Stop reglas del firewall
csf -f
Reiniciar reglas del firewall
csf -r
Permitir una IP y agregarla csf.allow
csf -a 192.168.10.101
Resultado:
Removing rule...
ACCEPT all opt -- in !lo out * 192.168.10.101 -> 0.0.0.0/0
ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.10.101
Denegar una IP y agregarla a csf.deny
csf -d 192.168.10.101
Resultado:
Adding 192.168.10.101 to csf.deny and iptables DROP...
DROP all opt -- in !lo out * 192.168.10.101 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.10.101
Remover y borrar una IP desde csf.deny
csf -dr 192.168.10.101
Resultado:
Removing rule...
DROP all opt -- in !lo out * 192.168.10.101 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.10.101
Remover y desbloquear todas las entradas desde csf.deny
csf -df
Resultado:
DROP all opt -- in !lo out * 192.168.10.101 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.10.101
DROP all opt -- in !lo out * 192.168.10.101 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.10.101
csf: all entries removed from csf.deny
csf: all entries removed from csf.deny
Buscar una coincidencia de patrones en iptables, por ejemplo: IP, CIDR, Número de puerto
csf -g 192.168.10.101
6.- Configuraciones avanzadas:
Aquí hay algunos ajustes sobre CSF, por lo que puede configurar lo que necesita.
Vuelva al directorio de configuración csf y edite el archivo de configuración csf.conf:
cd /etc/csf
vim csf.conf
6.1. No bloquee las direcciones IP que se encuentran en el archivo csf.allow.
Por defecto, lfd también bloqueará una IP que esté en el archivo csf.allow, así que si desea que una IP en el archivo csf.allow nunca se bloquee por lfd, entonces vaya a la línea 272 y cambie "IGNORE_ALLOW" a "1". Esto es útil cuando tienes una IP estática en casa o en la oficina y quieres asegurarte de que tu IP nunca sea bloqueado por el firewall
en tu servidor de Internet.
6.2.- Permitir el protocolo ICMP Entrante/Saliente.
Vaya a la linea 152 for incoming ping/ICMP:
ICMP_IN = "1"
y en la linea 159 for outgoing ping ping/ICMP:
ICMP_OUT = "1"
6.3. Bloquear ciertos países
CSF proporcionan una opción para permitir y denegar el acceso por país utilizando el CIDR (Country Code). Vaya a la línea 836 y agregue los códigos de país que se permitirán y denegarán:
CC_DENY = "CN,UK,US"
CC_ALLOW = "ID,MY,DE"
6.4. Enviar log de login, a traves de SU y SSH por e-mail:
Puede establecer una dirección de correo electrónico que LFD utilice para enviar un correo electrónico sobre los sucesos "SSH Login" y los usuarios que ejecuten el comando "su", vaya a la línea 1069 y cambie el valor a "1".
LF_SSH_EMAIL_ALERT = "1"
...
LF_SU_EMAIL_ALERT = "1"
y defina la cuenta de correo que desea usar en la linea 588:
LF_ALERT_TO = "[email protected]"
Si desea más ajustes, lea las opciones en el archivo de configuración "/etc/csf/csf.conf".
Fuentes:
- https://www.configserver.com/cp/csf.html
- http://hostingdiario.com/csf-firewall-una-solida-opcion-de-cortafuegos-sistemas-linux/
- https://www.techtransit.org/linux-firewall-set-up-csf-firewall-on-centos-7-rhel-7/#
- http://blog.softlayer.com/2013/iptables-tips-and-tricks-csf-configuration
- http://blog.softlayer.com/2013/setting-up-your-new-server
- https://www.howtoforge.com/tutorial/install-and-configure-csf-config-server-firewall-on-centos-7/
- https://www.liquidweb.com/kb/csf-config-server-firewall-installation/