Restablecer los permisos predeterminados en el directorio del virtualhost en Plesk

Síntomas

Algunos archivos y directorios del dominio han perdido sus permisos. Varios de ellos son propiedad del usuario “apache” o “root” de Apache.

Por ejemplo:

# ls -l /var/www/vhosts/blogofsysadmins.com/
total 48
drwx------ 5 apache     apache 4096 Mar 16 20:07 anon_ftp
drwx------ 2 root       psaserv 4096 Mar 16 20:07 bin
drwx------ 3 apache     apache 4096 Mar 16 20:07 cgi-bin
drwx------ 2 root       psaserv 4096 Aug  4 12:56 conf
drwx------ 2 root       psaserv 4096 Mar 16 20:07 error_docs
drwx------ 7 apache     apache 4096 Mar 16 20:07 httpdocs
drwx------ 7 apache     apache 4096 Mar 16 20:07 httpsdocs
drwx------ 2 root       psaserv 4096 Aug  4 12:56 pd
drwx------ 2 root       root    4096 Mar 16 20:07 private
dr-x------ 7 root       psaserv 4096 Mar 16 20:07 statistics
drwx------ 2 root       psaserv 4096 Mar 16 20:07 subdomains
drwx------ 2 root       psaserv 4096 Mar 16 20:07 web_users
~#

Cuando intento cargar archivos a través del Administrador de Archivos o de un cliente FTP, obtengo los errores «Permiso denegado» o «Acceso denegado«.

Resolución

Use la utilidad «vhostmng» para restablecer los permisos. El comando a ejecutar es el siguiente:

~# /usr/local/psa/admin/sbin/vhostmng --install-vhost --vhost-name=<domain name> --user-name=<username> --set-content-permissions

Donde <domain name> es el dominio donde deben restaurarse los permisos y <username> es el usuario FTP del dominio configurado en Parallels Plesk Panel en la página Dominios -> <domain name> -> Opciones de Alojamiento Web (versión 9.x) o Dominios -> <domain name> -> Configuración (versión 8.x).

El comando restaurará los permisos predeterminados en el directorio del virtualhost:

drwxr-x--- 5 ftp_user   psaserv 4096 Mar 16 20:07 anon_ftp
drwxr-xr-x 2 root       psaserv 4096 Mar 16 20:07 bin
drwxr-x--- 3 ftp_user   psaserv 4096 Mar 16 20:07 cgi-bin
drwxr-x--- 2 root       psaserv 4096 Aug  4 12:56 conf
drwxr-xr-x 2 root       psaserv 4096 Mar 16 20:07 error_docs
drwxr-x--- 7 ftp_user   psaserv 4096 Mar 16 20:07 httpdocs
drwxr-x--- 7 ftp_user   psaserv 4096 Mar 16 20:07 httpsdocs
drwxr-x--- 2 root       psaserv 4096 Aug  4 12:56 pd
drwx------ 2 ftp_user   root    4096 Mar 16 20:07 private
dr-xr-x--- 7 root       psaserv 4096 Mar 16 20:07 statistics
drwxr-xr-x 2 root       psaserv 4096 Mar 16 20:07 subdomains
drwxr-xr-x 2 root       psaserv 4096 Mar 16 20:07 web_users

Sustituir palabras en un archivo desde consola

Nada de editores de texto, ni de html ni nada por el estilo. Si quieres sustituir palabras que aparecen recurrentemente en un fichero de texto o archivo y necesitas hacerlo rápido, puedes hacerlo con el comando sed.
Por ejemplo, para sustituir un color en una hoja de estilos CSS:

sed ’s/#FF0000/#0000FF/g’ main.css

Bloquear una IP atacante con null route

En alguna ocasion podemos encontrarnos con algun tipo de ataque de una determinada IP o red (rezando para que no sean multiples) hacia nuestra red/sistema.

En Linux (y BSD/Solaris/Unix Flavours) podemos mandar los paquetes de una determinada IP o red a ninguna parte (blackhole route o null route) añadiendo una entrada en nuestra tabla de rutas.

USANDO EL COMANDO ROUTE PARA NULL ROUTE

route add 192.168.1.5 gw 127.0.0.1 lo

En este comando especificariamos que la IP atacante es 192.168.1.5 y queremos enviar los paquetes que nos envie a la interfaz de loopback.

Verificar que se ha “null routeado” la IP en nuestra tabla de rutas

route -n

O bien usando Netstat

netstat -nr

Tambien podemos hacer un reject:

route add -host 192.168.1.5 reject

Mandar a Null route una red entera

Imaginaros que queremos filtrar el sistema autónomo completo de McColo (si algún ISP anunciara sus prefijos, claro).

route add -net 208.66.192.0/24 gw 127.0.0.1 lo

Borrar entradas de la tabla de rutas

Probablemente haya un tiempo en el que ya no nos interese bloquear a determinada IP o bloque. Para borrar una entrada haremos lo siguiente:

route delete 192.168.1.5

Cómo instalar CentOS remotamente

Es posible instalar centos remotamente, siempre y cuando exista previamente en el servidor grub. No importa el linux que haya.

Supongamos el siguiente escenario:

Requisitos locales:
La laptop mía será la IP 1.2.3.4 y estará con el vncviewer instalado (paquete vnc). Ésta laptop tendrá abierto el puerto 5500 o redirigido ese puerto hacia ella (en caso de que esté detrás de un firewall). La laptop por supuesto tiene linux, CentOS.

Requisitos remotos:
Sé la IP del servidor (1.1.1.2 en el ejemplo), conozco la máscara (255.255.255.248 en caso del ejemplo), y sé de su gateway (1.1.1.1 en el ejemplo). También conozco los DNS que usa ese servidor (1.1.1.1 en el ejemplo).

Por favor, alerta! si se te daña la máquina no me intentes culpar, no es mi culpa que tu hardware se te explote, dañe, queme, destroya, vaporice o lo que sea por el amor de dios si no te funciona es tu culpa, no la mía.

Paso a paso todo:

Sistema LOCAL:

  1. instalar el paquete vnc en tu máquina local: yum install vnc
  2. ponerlo a escuchar: vncviewer –listen
  3. abrir el puerto 5500 en caso de que tengas firewall o redirigir el puerto 5500 hacia tu maquina local.

Sistema REMOTO:

  1. Entrar al servidor remoto por ssh
  2. cambiarte a /boot (cd /boot)
  3. bajar vmlinuz e initrd.img del directorio images/pxeboot (aqui por ejemplo: http://mirror.centos.org/centos-5/5/os/i386/images/pxeboot/

Si tu maquina es de 64 bits, buscar el pxeboot adecuado, si instalaras otro centos (3 o 4) buscar el pxeboot adecuado.

puedes bajarlo con: wget URLDELARCHIVO

7- verifica que en el directorio /boot esté un archivo llamado vmlinuz y otro llamado initrd.img (quizá haya otros de los kernels anteriores, eso no es de importancia para el proceso).

8- Edita tu grub.conf, la idea es que tu grub.conf arranque con el siguiente kernel:

title pxe
root (hd0,0)
kernel /vmlinuz vnc vncconnect=1.2.3.4 headless ip=1.1.1.2 netmask=255.255.255.248 gateway=1.1.1.1 dns=1.1.1.1 ksdevice=eth0 method=http://mirror.centos.org/centos/5/os/i386/ lang=en_US keymap=us
initrd /initrd.img

Como curiosidad: sí, sólo uso teclado en inglés, porque el teclado en español tiene el «/» muy difícil de alcanzar.

vncconnect es la IP de tu máquina local, hacia donde se abrirá la sesión vnc

ip, netmask, gateway y dns son las IPs de tu máquina remota, mascara, gateway y dns.

ksdevice= para indicarle que saldrá por este dispositivo (solo util si tienes más de una eth).
method= de dónde bajará las cosas (de centos directamente, centos 5 en este caso).

9-Santiguarse  y reiniciar la máquina.

Este ultimo paso es muy importante.. es importante que lo tengas claro. TIENES QUE PROBAR LOCALMENTE.

Lo que yo hago siempre, SIEMPRE, es arrancar con pxe alguna máquina de aqui de mi casa, y hacer que abra una sesión de vnc contra mi laptop.. si funciona, entonces ya sé que tengo correctamnete la línea del GRUB y que puedo copiarla al servidor remoto y solamente cambiar las claves.

Lo típico es que te confundas en la IP o algún dato del servidor remoto.

Por favor, si algo te pasa coméntalo aqui para que los otros aprendan.. por mi parte también trataré de aprender con lo que te pase.