Archivo
Medir velocidades web con curl
Es posible medir la velocidad de respuesta de una web con el comando curl:
curl -w "dns_resolution: %{time_namelookup}\ntcp_established: %{time_connect}\nssl_handshake_done: %{time_appconnect}\nTime Pretransfer: %{time_pretransfer}\nTTFB: %{time_starttransfer}\nSize Download: %{size_download} Bytes\nTime Total: %{time_total}\n" -o /dev/null -s https://www.google.com
Resultado:
dns_resolution: 0,013510 tcp_established: 0,027280 ssl_handshake_done: 0,081748 Time Pretransfer: 0,081810 TTFB: 0,151578 Size Download: 13986 Bytes Time Total: 0,153390
Configure PHP-FPM Parameters
Small script to configure php-fpm parameters acording to our resources.
PERCENTAGE_MEM_TO_PHP=60
CORES=$(( $(lscpu | awk '/^Socket/{ print $2 }') * $(lscpu | awk '/^Core/{ print $4 }') ))
MEM=$(free | head -2 | tail -1 | awk '{ mem=$2 } { printf ("%d\n", mem/NR/1000/1000) } ')
MEM_PHP=$(ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d\n", sum/NR/1024) }')
MEM_TO_USE_IN_PHP=$( expr $MEM * ${PERCENTAGE_MEM_TO_PHP} / 100 )
max_children=$(expr $MEM_TO_USE_IN_PHP * 1000 / $MEM_PHP)
start_servers=$(expr $CORES * 4)
min_spare_servers=$(expr $CORES * 2)
max_spare_servers=$(expr $CORES * 4)
echo "pm.max_children = ${max_children}"
echo "pm.start_servers = ${start_servers}"
echo "pm.min_spare_servers = ${min_spare_servers}"
echo "pm.max_spare_servers = ${max_spare_servers}"
Build Slim Docker Images
It’s possible to build slim Docker images using Multi-Stage Build.
https://docs.docker.com/develop/develop-images/multistage-build/
https://pythonspeed.com/articles/multi-stage-docker-python
https://medium.com/capital-one-tech/multi-stage-builds-and-dockerfile-b5866d9e2f84
SACK Panic – CVE-2019-11477 – Multiple TCP-based remote denial of service
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'
Saber versión Oracle WebLogic
Para saber la versión de Oracle Weblogic, debemos ejecutar el siguiente comando
java -cp /u01/app/oracle/fmw/wlserver_12.2/wlserver/server/lib/weblogic.jar weblogic.version
Información extraida de:
https://onlineappsdba.com/index.php/2011/04/28/how-to-find-oracle-weblogic-server-version/
Compilar scripts python
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
Limpiar errores idmap samba
Es posible que si hacemos un remaping de UID/GIDs en Samba cuando obtenemos los usuarios de un AD, nos quede la BBDD tdb con algunas entradas erroneas.
# net idmap check check database: /var/lib/samba/winbindd_idmap.tdb Invalid record: "store test" Invalid record: "transaction test" [...] Invalid mapping: "GID 1641\00" -> "S-1-5-21-329436275-369539378-859735618-4554\00" ("GID 2141\00" <- "S-1-5-21-329436275-369539378-859735618-4554\00") Invalid mapping: "UID 1599\00" -> "S-1-5-21-329436275-369539378-859735618-2410\00" ("UID 2163\00" <- "S-1-5-21-329436275-369539378-859735618-2410\00") uid hwm: 54298 gid hwm: 47533 mappings: 897 other: 3 invalid records: 2 missing links: 0 invalid links: 770 0 changes:
Si intentamos conectarnos a la bbdd y limpiar las entradas, nos dará un error y no podremos.
Para solucionar el problema, lo podemos hacer de la siguiente forma.
SAVEIFS=$IFS IFS=$(echo -en "\n\b") for id in $(net idmap check|grep -i ^"invalid mapping" | cut -d"\"" -f 2);do tdbtool /var/lib/samba/winbindd_idmap.tdb delete "${id}" done IFS=$SAVEIFS
Una vez eliminadas las entradas invalidas, podremos lanzar el comando, y veremos que está todo correcto.
# net idmap check check database: /var/lib/samba/winbindd_idmap.tdb Invalid record: "store test" Invalid record: "transaction test" uid hwm: 54298 gid hwm: 47533 mappings: 897 other: 3 invalid records: 2 missing links: 0 invalid links: 0 0 changes:
Para consultar más información al respecto sobre las BBDD TDB:
https://www.ibm.com/developerworks/library/l-lpic3-310-3/index.html
Solucionar problema de bloqueo de ficheros en OwnCloud
Configuramos OwnCloud en modo mantenimiento agregando la siguiente línea al fichero de configuración.
# vim config/config.php 'maintenance' => true,
Borramos los locks de la table “oc_file_locks”
# mysql -u root -p owncloud DELETE FROM oc_file_locks WHERE 1;
Deshabilitamos el modo mantenimiento de OwnCloud dehaciendo el primer paso.
Solucionar error “errno 111” al iniciar NFS
Es posible que nos encontremos el siguiente error al iniciar el servicio NFS.
# systemctl status nfs-server nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled) Active: failed (Result: exit-code) since Tue 2017-05-02 17:42:54 CEST; 5s ago Process: 4005 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=1/FAILURE) Process: 4004 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 4005 (code=exited, status=1/FAILURE) May 02 17:42:54 server systemd[1]: Starting NFS server and services... May 02 17:42:54 server rpc.nfsd[4005]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) May 02 17:42:54 server rpc.nfsd[4005]: rpc.nfsd: unable to set any sockets for nfsd May 02 17:42:54 server systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE May 02 17:42:54 server systemd[1]: Failed to start NFS server and services. May 02 17:42:54 server systemd[1]: Unit nfs-server.service entered failed state.
Para solucionar el error, deshabilitamos la versión NFS v2 y v3, de esta manera podemos solucionar el error al realizar el export.
# rpc.nfsd -d -N 2 -N 3 rpc.nfsd: Checking netconfig for visible protocols. rpc.nfsd: Enabling inet udp. rpc.nfsd: Enabling inet tcp. rpc.nfsd: Enabling inet6 udp. rpc.nfsd: Enabling inet6 tcp. rpc.nfsd: knfsd is currently down rpc.nfsd: Writing version string to kernel: -2 -3 +4 rpc.nfsd: Creating inet TCP socket. rpc.nfsd: Creating inet UDP socket. rpc.nfsd: Creating inet6 TCP socket. rpc.nfsd: Creating inet6 UDP socket.
Una vez iniciado, podemos verificar que versiones de NFS estamos exportando.
# cat /proc/fs/nfsd/versions -2 -3 +4 +4.1 -4.2
Instalar VirtualBox con driver red NDIS5
Es posible que en algunos equipos no funcione el nuevo driver NDIS6 que viene por defecto en Virtual Box, no está todo perdido. Podemos instalar Virtual Box forzando el uso del antiguo driver NDIS5
VirtualBox-5.1.14-112924-Win.exe -msiparams NETWORKTYPE=NDIS5