Archivo

Posts Tagged ‘Administración’

SACK Panic – CVE-2019-11477 – Multiple TCP-based remote denial of service

junio 18, 2019 Deja un comentario

Se ha detectado una nueva vulnerabilidad en Linux

https://access.redhat.com/security/vulnerabilities/tcpsack

Red Hat ha liberado un script para ver si nuestors sistemas están afectados:

https://access.redhat.com/sites/default/files/cve-2019-11477–2019-06-17-1629.sh

Para mitigar la vulnerabilidad podemos aplicar alguno de los siguientes parches:


Option #1
Disable selective acknowledgments system wide for all newly established TCP connections.

# echo 0 > /proc/sys/net/ipv4/tcp_sack

or

# sysctl -w net.ipv4.tcp_sack=0

This option will disable selective acknowledgements but will likely increase the bandwidth required to correctly complete streams when errors occur.
To make this option persist across reboots, create a file in /etc/sysctl.d/ such as /etc/sysctl.d/99-tcpsack.conf - with content:

# CVE-2019-11477 & CVE-2019-11478
net.ipv4.tcp_sack=0

Option #2 Mitigates CVE-2019-11477, CVE-2019-11478 and CVE-2019-11479 by preventing new connections made with low MSS sizes.

The default firewall configuration on Red Hat Enterprise Linux 7 and 8 is firewalld. To prevent new connections with low MSS sizes using firewalld use the commands.

# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP
# firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP
# firewall-cmd --reload
# firewall-cmd --permanent --direct --get-all-rules

This firewall-cmd command will remain persistent through system reboots.
If using the traditional iptables firewalling method on any version of Red Hat Enterprise Linux, iptables equivalent command is:

# iptables -I INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP
# ip6tables -I INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP

# iptables -nL -v
# ip6tables -nL -v

Instalamos las dependencias del Playbook para poder configurar las reglas de IPTABLES permanentemente:


mkdir -p ~/.ansible/plugins/modules

wget -O ~/.ansible/plugins/modules/iptables_raw.py https://raw.githubusercontent.com
/Nordeus/ansible_iptables_raw/master/iptables_raw.py

Playbook de Ansible para mitigarlo:


--

- name: Configure CVE-2019-11477 rule
hosts: all
tasks:
- name: "IPTABLES_RAW | Secure CVE-2019-11477"
iptables_raw:
name: "CVE-2019-11477"
rules: '-A INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP'

Anuncios

Verificar compresión gzip web

marzo 23, 2018 Deja un comentario

Es posible verificar si un sitio web tiene habilitada la compresión “gzip”, para ello podemos hacerlo con el siguiente comando:

curl -vvvvv -I -sH 'Accept-encoding: gzip' www.google.es

La respuesta de esto, será algo similar a lo siguiente, en caso de contener la cabecera “Content-Encoding: gzip”, el servidor nos estará devolviendo el contenido comprimido.

* Rebuilt URL to: www.google.es/
*   Trying 172.217.16.227...
* TCP_NODELAY set
* Connected to www.google.es (172.217.16.227) port 80 (#0)
> HEAD / HTTP/1.1
> Host: www.google.es
> User-Agent: curl/7.52.1
> Accept: */*
> Accept-encoding: gzip
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Fri, 23 Mar 2018 10:31:44 GMT
Date: Fri, 23 Mar 2018 10:31:44 GMT
< Expires: -1
Expires: -1
< Cache-Control: private, max-age=0
Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
< Content-Encoding: gzip
Content-Encoding: gzip
< Server: gws
Server: gws
< Content-Length: 4923
Content-Length: 4923
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< Set-Cookie: 1P_JAR=2018-03-23-10; expires=Sun, 22-Apr-2018 10:31:44 GMT; path=/; domain=.google.es
Set-Cookie: 1P_JAR=2018-03-23-10; expires=Sun, 22-Apr-2018 10:31:44 GMT; path=/; domain=.google.es
< Set-Cookie: NID=126=p4t5o6qZv1P2VCYc75WPs434Am1rxviq11T6lKP5mTt0uidrRNxWEuP0RdypnpTu5qNqyOn_xf01VKOBauMEtXRlvpQLA1qh1kIYBfRGva9R1-4sfAlT2Ts5mEku5-cS; expires=Sat, 22-Sep-2018 10:31:44 GMT; path=/; domain=.google.es; HttpOnly
Set-Cookie: NID=126=p4t5o6qZv1P2VCYc75WPs434Am1rxviq11T6lKP5mTt0uidrRNxWEuP0RdypnpTu5qNqyOn_xf01VKOBauMEtXRlvpQLA1qh1kIYBfRGva9R1-4sfAlT2Ts5mEku5-cS; expires=Sat, 22-Sep-2018 10:31:44 GMT; path=/; domain=.google.es; HttpOnly

<
* Curl_http_done: called premature == 0
* Connection #0 to host www.google.es left intact
Categorías:Administración Etiquetas: ,

Compilar scripts python

marzo 15, 2018 2 comentarios

Es posible que en algún momento nos interese compilar un script de python para que no lo modifique nadie, eso es posible ejecutando el siguiente comando:

# python -m py_compile launcher.py elastic_api.py

Esto nos generará el directorio “__pycache__”

Para usar los scripts, lo haremos de la siguiente manera:

# cd __pycache__/

# mv elastic_api.cpython-35.pyc elastic_api.pyc

# mv launcher.cpython-35.pyc launcher.pyc

# python launcher.pyc

Instalar nginx en CentOS 7 armhfp

noviembre 14, 2016 Deja un comentario

Instalar nginx en CentOS 7 armhfp

sudo curl --location https://repos.fedorapeople.org/trustywolf/nginx/nginx.repo > /etc/yum.repos.d/nginx.repo && sudo yum install nginx

Copiar un fichero entre dos servidores, a través de un tercero en Linux

octubre 27, 2016 Deja un comentario

Hay veces, que necesitamos copiar dos ficheros que no tienen visibilidad entre ellos, ya que están detrás de un firewall ambos, en este caso, si disponemos de un tercer servidor público, podemos copiar los ficheros a través de ssh.
Para eso, utilizaremos algo que ya comentamos en un post anterior, realizar una conexión ssh inversa.

En este caso, el servidor de origen del fichero, y el de destino, tienen que realizar una conexión ssh inversa al servidor público.

– Desde el servidor de origen

/usr/bin/ssh -o ServerAliveInterval=30 -f -N -R 15005:localhost:22 user@public.server -p 22022

– Desde el servidor de destino

/usr/bin/ssh -o ServerAliveInterval=30 -f -N -R 15006:localhost:22 user@public.server -p 22022

Ahora, lo recomendable desde el servidor público, es exportar las claves ssh para podernos conectar a ambos sin password

ssh-copy-id root@localhost -p 15005
ssh-copy-id root@localhost -p 15006

– Por último, solo nos queda copiar el fichero que queramos entre ambos servidores, en este caso, haremos una prueba con el fichero binario “sudo”

ssh -p 15005 root@localhost "cat /bin/sudo"|ssh -p 15006 root@localhost "cat > /mnt/sudo"

– Como verificación, miramos la suma md5 en origen y destino para verificar que son iguales.

md5sum /bin/sudo
9deb7811dc77ebe199bb48b1e3e62ab1  /bin/sudo
md5sum /mnt/sudo
9deb7811dc77ebe199bb48b1e3e62ab1  sudo
Categorías:Administración Etiquetas: , , ,

Revocar Certificados OpenVPN

septiembre 26, 2016 Deja un comentario

Dentro del directorio “easy-rsa” hay un script “revoke-full”, cuando se ejecuta se pasa la key/nombre_certificado como parámetro.
Cuando se ejecuta, se actualiza el fichero “easy-rsa/keys/index.txt”, en el cual podemos ver todas las claves.
Vemos que las que están revocadas comienzan con una “R” (de revoked).

grep -v ^R index.txt|awk 'BEGIN{ FS="/" } ; { if ($6 ~ /CN/){	print $6   }else if($7 ~ /CN/){	print $7}}'

Para que funcione la revocación de certificados, tenemos que tener habilitada la siguiente línea en la configuración de OpenVPN:

crl-verify crl.pem

Y tener el fichero “crl.pem” accesible.

Por otro lado, podemos ver las fechas de expiración de todos los certificados con el siguiente comando.

for i in $(ls|grep crt);do
	echo $i
	echo "--------"
	openssl x509 -noout -text -in $i | grep -e "Not Before" -e "Not After"
	echo ""
	echo ""
done

Check_mk: ajustar threshold de un servicio monitorizado

septiembre 21, 2016 Deja un comentario

Hola,

Acabo de encontrar un enlace que es bastante útil para modificar umbrales en Check_mk / OMD, a continuación dejo el enlace:

http://talesinit.blogspot.com.es/2016/01/checkmk-adjust-alert-thresholdslevels.html

Saludos,
David