Activar rc.local en CentOS 7

En las distribuciones de linux es muy habitual arrancar servicios al inicio directamente desde el archivo rc.local.
Desde la versión CentOS 7 ya no funciona de manera predefinida y tenemos que habilitar el servicio rc-local con los siguientes pasos.

Habilitamos permisos de ejecución al fichero.

chmod +x /etc/rc.d/rc.local

Activamos el servicio.

systemctl enable rc-local

Arrancamos el servicio.

systemctl start rc-local

Con estos pasos ya se arrancaran los scripts al inicio.

Corregir error yum en centos 6: YumRepo Error: All mirror URLs are not using ftp, http[s] or file

El otro dia me propuse a instalar software con yum en mi viejo centos 6 y me di cuenta que no era posible, ya que me salia este error: YumRepo Error: All mirror URLs are not using ftp, http[s] or file

Investigando di con la noticia de que el ciclo de vida de centos 6 termino el 30 de noviembre de 2020, total que me vi con la necesidad de actualizar los repositorios de yum, para poder seguir instalando software.

Para corregir el erorr basta con seguir estos pasos:

Editamos el fichero /etc/yum.repos.d/CentOS-Base.repo y sustituimos los bloques:

vi /etc/yum.repos.d/CentOS-Base.repo

[base]
[updates]
[extras]

Por los bloques:

vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=https://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Realizamos un yum clean all y ya tendemos disponible el yum para instalar todo lo que necesitemos.

Editar y reinicar crontab vmware esxi

El otro dia estube cambiando el crontab en un esxi y me volvi loco porque no se ejecutaban las tareas, al final descubri que era debido a que despues de editar el crontab hay que reiniciar el servicio y no lo estaba haciendo.

Siendo tan sencillo como realizar los siguientes pasos:

Editamos el crontab:

vi /var/spool/cron/crontabs/root

Comprobamos el id del demonio / servicio crontab:

cat /var/run/crond.pid

Matamos el proceso:

/bin/kill $(cat /var/run/crond.pid)

Reiniciamos el servicio crontab (esxi 5.0 o menor)

/bin/busybox crond

Reiniciamos el servicio crontab (esxi 5.1en adelante)

/usr/lib/vmware/busybox/bin/busybox crond 

Comprobamos que el id del servicio crontab ha cambiado:

cat /var/run/crond.pid

Con estos sencillo pasos , podemos editar el crontab y actualizar el servicio asociado.

Configuración de un proxy inverso en Apache

Últimamente esas apareciendo numerosos servicios web que se ejecutan en puertos diferentes de los standar 80/443, grafana por el 3000, rpimonitor 8888, o el conocido del tomcat 8080.

Pues con esta entrada voy a explicar cómo hacer una redirección de puertos de una manera muy sencilla con el apache y los módulos proxy_module y proxy_http_module.

Editamos el fichero de configuración del apache y habilitamos los módulos, para sistemas centos / red-hat.

vi /etc/apache/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Para sistemas debian / ubuntu habilitamos con los comandos.

a2enmod proxy
a2enmod proxy_http

Y a continuación editamos el fichero del apache donde tengamos los host y configuramos el proxy para que apunta al puerto donde publiquemos la web (ej, grafana).

vi /etc/apache/conf/httpd.conf (centos / red-hat)
vi /etc/apache2/sites-enabled/000-default.conf (debian / ubuntu)

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

Reiniciamos el servidor apache y el grafana como en el ejemplo ya se publicara por el puerto 80.

Raspberry PI no arranca después de editar el fstab

Es sabido por todos que editar el fichero fstab conlleva su peligro ya que podemos dejar el sistema operativo inconsistente y no poder arrancarlo debidamente.

Y eso es lo que me paso intentando montar un recurso compartido en la raspberry PI obteniendo el siguiente error al arrancar el sistema operativo.

Cannot open access to console, the root account is locked.

Por suerte la raspberry PI ya viene preparada para estas posibles muñonadas y os voy a explicar cómo solucionarlo.

Montamos la tarjeta SD en otro equipo.

En el directorio boot editamos el fichero cmdline.txt añadiendo al final el arranque por línea de comandos.

init = /bin/bash

Volvemos a poner la SD en la raspberry PI y arrancamos obteniendo el control por línea de comandos.

Si Intentamos editar directamente el fichero /etc/fstab obtendremos el siguiente error:

mount: can't find PARTUUID=f2d3cb4f-02.

Y si intentamos montar la partición raíz “mount -o remount,rw /” no dará error de partición de solo lectura.

Lo que tendremos que hacer es montar parcialmente la partición que contiene el fichero /etc/fstab.

mount -o remount,rw /dev/mmcblk0p2 /

Ahora ya podremos editar el fichero /etc/fstab y devolverlo al estado anterior.

Ya solo nos faltara volver montar la SD para editar el fichero cmdline.txt y quitar el arranque por terminal.

Con estos sencillos pasos hemos recuperado la raspberry PI después de dejar un fstab inconsistente.

Deshabilitar el visual mode en vim

Los que llevéis tiempo usando linux, estamos familiarizados con el editor vim y sus magníficos atajos de teclado.

Seguramente habréis notado que en nuevas versiones de centos/debian cuando quieres pegar con el botón derecho del ratón no os lo permite y sale un horrendo mensaje que pone “visual mode”

El visual mode es una de las “mejoras” que se le puso al vim, pero para que los que seáis de la vieja escuela y no os gusten las moderneces, os voy a explicar cómo deshabilitarlo.

Creamos el fichero ~/.vimrc para el usuario en uso (si no existe) y añadimos set mouse-=a

Con el siguiente comando:

echo "set mouse-=a" >> ~/.vimrc

Con este sencillo comando desactivaremos el horrendo “visual mode” del vim, pudiendo realizarlo en cada uno de los usuarios que así lo deseemos.

Solucionar error: corrección de oráculo de cifrado credssp en escritorio remoto RDP

Seguimos con los errores extraños y en este caso se trata de los enredos de los windows.

Voy a explicar como resolver el error “corrección de oráculo de cifrado credssp” al intentar concectar por remoto (RDP) a un equipo windows.

Porque por mucho que lo parezca ni el oraculo ni creed tienen que ver con Rocky y Matrix.

Para solucionar pulsamos window + R y ejecutamos el gpedit.msc

A continuación clicamos en Directiva Equipo Local > Configuración del equipo > Plantillas Administrativas > Sistema > Delegación de credenciales. y editamos la directiva de grupo local llamada Corrección del oráculo de cifrado.

Y aplicamos y aceptamos la opción habilitado y mitigado.

Con esto ya podemos acceder por remoto (RDP) sin problemas.

Borrar kernels antiguos en centos 7

Es muy recurrente que despues de diversan actualizaciones del sistema operativo, se vaya quedando sin espacion el la partición raiz y no sabes de donde rascar para encontrar espacio, pues una de las maneras mas sencillas es borrando kernels antiguos.

Lo primero que haremos es instalar las yum-utils para hacer uso del package-cleanup.

yum install yum-utils

A continuación listamos las versiones sin uso del kernel.

[root@barrabinbarrabash]# rpm -qa|grep kernel
kernel-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-957.1.3.el7.x86_64
kernel-tools-3.10.0-1127.18.2.el7.x86_64
kernel-tools-libs-3.10.0-1127.18.2.el7.x86_64
kernel-3.10.0-1127.18.2.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
kernel-headers-3.10.0-1127.19.1.el7.x86_64
kernel-3.10.0-1062.4.3.el7.x86_64

Y lanzaremos el package-cleanup indicando el numero de versiones que deseamos mantener (en el ejemplo una).

package-cleanup --oldkernels --count=1

Con este habremos eliminado versiones del kernel sin uso y recuperado unos megas bien preciados.

¿Como solucionar el error FIPS mode initialized?

Volvemos con los errores extraños, este me aparecio copiando ficheros entre esxi con scp, como he realizado siempre y consiste en que al copiar entre maquinas me salta el siguiente error.

[root@mi-esxi:/vmfs/volumes/midisco] scp -r mi-mv/ root@192.168.0.2:/vmfs/volumes/midisco
FIPS mode initialized

Investigando un poco descubri, que lo bloquea el firewall por defecto de los esxi, que se soluciona deshabilitandolo con el siguiente comando.

esxcli network firewall set -e false

Enjualar usuario SFTP en un directorio en modo lectura en centos.

Escribo esta entrada que me surge por la necesidad de tener un usuario SFTP enjaulado en un directorio y que solo pueda acceder a los ficheros en modo lectura.

He encotrado muchos tutoriales en internet de como enjaular usuarios SFTP y como gestionar directorios en modo lectura, pero ninguno que fusioanara ambas opciones, con lo que paso a explicarlo en esta entrada.

Para realizar el tutorial es necesario tener instalado el openssh-server, que viene en casi todas las distribuciones linux, de no estar instalado se puede instalar con este comando.

yum –y install openssh-server
  1. Creamos el grupo SFTP que gestionara los accesos
groupadd sftp

2. Creamos el directorio SFTP y el directorio del usuario y los permisos adecuados.

##directorio sftp
mkdir /var/sftp
chgrp sftp /var/sftp
chmod 750 /var/sftp/

##directorio usuario sftp
mkdir /var/sftp/prueba
chmod 770 /var/sftp/prueba
chgrp sftp /var/sftp/prueba

3. Creamos el usuario prueba, añadiendolo al grupo sftp, sin accesos shell y con el home del directorio creado.

useradd -g sftp -s /bin/false -d /var/sftp/prueba prueba ; echo "Password" | passwd --stdin prueba 

4. Editamos la configuracion del ssh ( /etc/ssh/sshd_config ), donde cambiamos el modo SFTP sftp-server por internal-sftp ( Subsystem sftp internal-sftp ), añadimos el grupo sftp ( Subsystem sftp internal-sftp ), asignamos el directorio del SFTP ( ChrootDirectory /var/sftp ) y configuramos el SFTP en modo solo lectura ( ForceCommand internal-sftp -R ).

vim /etc/ssh/sshd_config

# Comentamos original
### Subsystem       sftp    /usr/libexec/openssh/sftp-server

# Add sftp group. directory. only read
    Subsystem sftp internal-sftp
    Match group sftp
    ChrootDirectory /var/sftp
    ForceCommand internal-sftp -R

5. Reiniciamos el servicio ssh.

service sshd restart

6. Comprobamos a conectarnos con cualquier sofware SFTP (como winscp) y vemos como funciona correctamente.

Acceso SFTP solo lenctura