Administrar Servidores Linux, con CentOs y Panel Plesk
Recopilatorio de los comandos que más hemos utilizado a lo largo de los últimos 15 años administrando servidores Centos con Plesk.
Espero que os sirvan de ayuda. Algunos de ellos no funcionan con las nuevas versiones de Plesk 12+ / Onix.
Sobre todo MUCHISIMO CUIDADO al usar el comando rm -r bajo SSH ya que si pones mal la ruta podrías borrar todo. Asegúrate de escribir antes de usarlo el comando PWD para saber que estas en la ruta correcta y no en root.
En las nuevas versiones de Plesk 12 / Onix prácticamente no hace falta entrar en SSH ya que se hace todo desde el Panel de administración. Es muy recomendable añadir varias extensiones para un correcto manejo del panel. Son imprescindibles las extensiones de WordPress Toolkit, ImunifyAV, Letsencrypt, Webserver Configurations Troubleshooter o Repair Kit.
Antes de hacer cualquier cambio haz un backup de todo, estos son consejos que nos han servido a nosotros pero en otras configuraciones podrían desestabilizar el servidor.
Reiniciar Servicios Centos Apache, Mysql, SSH, Plesk 11
Reiniciar httpd:
service httpd restart
………………………………….
Reinicar Mysql:
/etc/init.d/mysqld restart
………………………………….
Reiniciar Qmail:
/etc/init.d/qmail restart
………………………………….
Reiniciar Postfix:
/etc/init.d/postfix restart
………………………………….
Reiniciar servicios:
/etc/init.d/psa restart
………………………………….
Reiniciar Apache:
/etc/init.d/httpd restart
………………………………….
Reiniciar Dr Web y ver luego los emails en los que esta activado:
service drwebd restart
………………………………….
Reiniciar SSH:
service sshd restart
………………………………….
Reiniciar Fail2ban:
/etc/init.d/fail2ban restart
Lista de comandos más utilizados
Listado de comandos utilizados más frecuentemente:
Reiniciar servicios Plesk:
/etc/init.d/psa restart
………………………………….
Hacer copia de un archivo
cp .httpd.conf .httpdconf.OLD
………………………………….
Ver todos los procesos:
top
………………………………….
Parar un proceso (que se vea que consume mucho en el top):
/etc/init.d/nombredelproceso stop
………………………………….
Ver errores log del server:
vi /var/log/httpd/error_log
:q! salir sin guardar
Si quieres editar algo con vi tienes que pinchar la tecla i y luego modificar lo que quieras, finalmente pinchas Escape y luego :wq para salir guardando o bien :q! para salir sin guardar.
………………………………….
Busca una palabra dentro de los documentos (muy útil)
grep -lR PALABRA httpdocs
………………………………….
Ver logs de problemas Rkhunter más ampliados.
vi /var/log/rkhunter.log
………………………………….
Ver logs Apache:
/var/logs/httpd/
………………………………….
Cambiar de nombre un fichero:
mv nombre1 nombre2
………………………………….
Reparar tabla Mysql: (cuando haces un reinicio del servidor por corte eléctrico es posible que alguna tabla se rompa y de errores en la Web. Ejecutando este comando tienes un 95% de que te vuelva a funcionar como antes.
Esta opción repara TODAS las bases de datos: mysqlcheck -uadmin -p –auto-repair –check –optimize –all-databases
Esta opción repara una sola base de datos: repair table laquesea;
………………………………….
Saber cuánto espacio ocupa cada carpeta tmp, car etc.
du -hx –max-depth=1 /
………………………………….
Buscar archivos grandes:
find -size +1000M
………………………………….
Ejecuta Chkrootkit para buscar virus
./chkrootkit
………………………………….
Borrar directorio con todas sus subcategorias y archivos, o bien un archivo suelto
rm -rf directorio
………………………………….
Borrar todos los archivos de una extensión: (En el ejemplo borraría todos los archivos .jpg del servidor – Usar con cuidado)
rm -r *.jpg
………………………………….
Carpeta temporales:
cd /tmp/
………………………………….
Borra temporales de la carpeta /tmp/ (si se te cuela un virus y no sabes donde esta, ejecuta este comando y seguramente lo podrás parar en parte, ya que hay muchos virus que se almacenan en /tmp/ y si lo borras ya se inutilizan aunque seguirán recibiendo peticiones seguramente desde archivos .htaccess)
/usr/bin/find /tmp/ -mtime +1 -exec rm -f {} \;
………………………………….
Enviar archivo desde SSH a email (Muy útil para tener una copia de my.cnf, php.ini .httpd.conf..):
uuencode archivo.ext archivo.ext | mailx -s «Asunto» correo@dominio.com
………………………………….
Ficheros arranque Apache
cd /etc/httpd/conf
………………………………….
Muestra todos los demonios o cron-jobs que están activados:
cd /var/spool/cron
crontab -e
………………………………….
Si ves que locate no te funciona pon lo siguiente:
updatedb
………………………………….
Mostrar todos los procesos Mysql (desde Phpmyadmin, pinchar en SQL), sirve para parar procesos mysql y recuperar estabilidad, aunque recomiendo el reinicio de mysql desde ssh ya que lo pone totalmente a cero:
show processlist;
¿Cómo localizar spam en Plesk rápidamente?
Otra forma de localizar rápidamente al que está enviando cientos o miles de spam es desde SSH con el comando grep:
El uso es sencillo, primero vamos a la cola de correo de Plesk y vemos el ID de cualquiera de los mensajes de spam, luego con ese ID entramos en SSH y ponemos:
grep 10152 /etc/passwd
donde 10152 es el id, automáticamente te saldrá el dominio que está enviando más Emails.
/var/www/vhosts/dominiodelspamer.com:/bin/false
y si pausas ese dominio desde Plesk verás que deja de enviar spam y la cola del servidor se estabiliza.
- En las nuevas versiones de Plesk simplemente desde la cola de los emails ves al culpable XD, por lo general si no tienen formularios o tienen un Captcha fuerte en ellos se arregla la incidencia cambiando la contraseña del email y avisándole de que tiene un virus en su ordenador. (Lo más probable).
Centos yum locate – vs find
Si os pasa como a mi y no os gusta nada el comando find, es muy sencillo instalar el fantástico locate en vuestro servidor Centos, tan solo tenéis que hacer lo siguiente:
yum -y install mlocate
y luego
updatedb
ahora ya podrás hacer búsquedas directas de cualquier archivo casi instantáneas con el comando:
locate y el archivo a buscar ejemplo
locate bcnserveis.com
¿Puedo optimizar todas las tablas Mysql a la vez?
Para reparar todas las tablas Mysql de tu servidor Plesk 11 debes de entrar por SSH y poner lo siguiente:
mysqlcheck -r -uadmin -p`cat /etc/psa/.psa.shadow` -A
Para optimizar todas las tablas Mysql de tu servidor Plesk 11 a la vez sería el siguiente comando:
mysqlcheck -o -uadmin -p`cat /etc/psa/.psa.shadow` -A
Aumentar tiempo de Fast cgi
Edita el archivo /etc/httpd/conf.d/fcgid.conf
y cambia la línea:
FcgidIOTimeout 40
poniendo el tiempo (en segundos) que quieres que dure la ejecución de los procesos fast-cgi
No olvides de reiniciar apache:
/etc/init.d/httpd restart
Solucionar problema Plesk 500 – Internal Server Error
Si no puedes entrar en Plesk porque tienes un error 500, es posible a que sea debido a alguna operación que ha llenado por completo la carpeta temporal del servidor /tmp.
***OJO, hay que tener muchísimo cuidado al entrar en un servidor y usar el siguiente comando ya que si no pones bien la ruta puedes borrar todo.
Para solucionarlo simplemente entra por SSH como administrador y teclea lo siguiente:
cd /tmp
rm -rf *
Backup Plesk no guarda las bases de datos [Solucionado]
Si tenéis el problema de que el Backup Plesk no guarda las bases de datos correctamente pero el resto de datos si, aquí os dejo la solución que es realmente sencilla.
Esto es debido a que vuestra contraseña contiene el símbolo #
Eso es todo
Podéis entrar en Plesk y abajo a la izquierda te da la opción de cambiar la contraseña del Plesk por otra que si puede contener símbolos como ()$% pero con el símbolo # da problemas..
Como solución alternativa (y que se rompe cada dos por trés con los microupdates), probar esto:
Entrar por SSH y editar el siguiente archivo:
/usr/local/psa/PMM/agents/shared/Db/MysqlShellBackend.pm
y cambiar la línea:
print OPTSFILE «[mysqldump]\npassword=» . $self->{password};
por:
print OPTSFILE «[mysqldump]\npassword=\»» . $self->{password} .»\»»;
Eliminar monitorización negocio Plesk
Si no utilizas los nuevos paneles de monitorización de negocio de Plesk, y quieres eliminarlos de tu Cent-os, tienes que hacer lo siguiente, es muy sencillo y rápido.
1. Entras por SSH como root.
……………………………………………….
2. Deshabilitas la monitorización negocio Plesk: /usr/local/psa/bin/sso –disable
(Para usuarios de Ubuntu sería): /opt/psa/bin/sso –disable
……………………………………………….
3. en la Consola pones lo siguiente: rpm -e sw-sso plesk-billing plesk-billing-plugins
(Para usuarios de Ubuntu sería): dpkg -r sw-sso plesk-billing plesk-billing-plugins
……………………………………………….
4. Reinicias servicios: /etc/init.d/psa restart
ya está!, ahora puedes entrar nuevamente en el panel Plesk, y lo tendrás mucho más limpio y fácil de administrar.
Centos Mysql se dispara
Si el servidor Plesk 11 – Centos se te está cayendo y tienes el consumo de Mysql disparado tienes que hacer lo siguiente:
1. Entras en el panel de control Plesk (si no te deja, espera un poco a que baje el consumo y puedas entrar). Si aún y todo no puedes haz un hard-reset, ten en cuenta que los hard-reset son reseteos directos en el servidor y pueden dañar datos, solo hay que usarlo en casos extremos.
2. Vas a la opción: Herramientas y Configuración / Servidores de Bases de datos.
Abajo a la derecha verás el número de bases de datos en total y a su derecha un icono de un destornillador y llave inglesa, haz clic en él.
3. Veras que se te abre la pantalla de Phpmyadmin. Tienes que hacer click en la pestaña «SQL» (está en la parte superior izquierda del menu).
4. Dentro de la consola que aparece escribe: SHOW PROCESSLIST
5. Aqui están los procesos que están tumbando el servidor, si ves uno repetido muchas veces ese seguro que es el culpable.
6. Entra en el panel Plesk en Suscripciones y desactiva a la web que está consumiendo tantos recursos, y envíale un email para decirle que lo solucione.
Al desactivar la web verás que en el top el consumo baja de 1.500% o lo que sea a 15 o 20%, eso es porque tiene un fallo de programación o un antiguo Oscommerce etc.
Espero que os haya servido de ayuda, cualquier duda comentarme.
¿Puedo cambiar de qmail a postfix en Plesk?
En Plesk Onix o 12 puedes hacer este cambio directamente desde el panel de control, pero en versiones anteriores se realiza de la siguiente forma:
Desde la consola SSH.
/usr/local/psa/admin/sbin/autoinstaller –select-release-current –install-component postfix
Si deseas que el correo vuelva a funcionar con Qmail hay que poner lo siguiente:
/usr/local/psa/admin/sbin/autoinstaller –select-release-current –install-component qmail
Plesk cron no recibir emails
Si has activado un cron en tu Plesk panel y estas cansado de recibir emails de alerta cada 5,15,30 minutos etc. la solución es sencilla siempre y cuando tengas acceso SSH.
Tienes que poner lo siguiente:
cd /var/spool/cron
y editar el dominio del que recibes los emails, ej.
vi todoenlaces.com
y añadimos /dev/null en la línea que pone MAILTO:
MAILTO=>/dev/null
Luego reiniciamos:
/etc/init.d/crond restart
o
/etc/init.d/cron restart
Chkrootkit – Detectar binarios en vuestro sistema Linux
Para comprobar que tu sistema sea seguro, puedes probar a instalar esta potente herramienta que te permite realizar comprobaciones en los binarios que han podido ser modificados.
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvzf chkrootkit.tar.gz
cd chkrootkit-0.49
make sense
Para iniciar el test de vuestro sistema con chkrootkit:
/root/chkrootkit-0.49/chkrootkit
Bloquear IP en Centos y Ubuntu
Para bloquear una IP en Centos entramos por SSH y ponemos lo siguiente:
iptables -I INPUT -s aqui_la_ip -j DROP
Si queremos quitar el baneo y que la IP pueda funcionar de nuevo habría que quitar la -A y poner la -D de la siguiente manera:
iptables -D INPUT -s aqui_la_ip -j DROP
Si estaís en Ubuntu sería muy parecido:
$ sudo iptables -A INPUT -s aqui_la_ip -j DROP
¿Cómo puedo saber qué Web envía más emails en Plesk?
Con el siguiente comando y desde SSH, podemos saber que dominios de Plesk son los que envían más correos, y así detectar a los que hacen spam.
cat /usr/local/psa/var/log/maillog | grep -o ‘to=.*@.*’ | sed ‘s/to=.*@//’ | sort | uniq -c | sort -rn | head
Lo que hace es mirar los logs de correo y nos muestra los correos más enviados según el dominio.
Para bloquear a las webs que envíen más emails simplemente entramos en el Plesk, Herramientas y configuración / Configuración del servidor de correo / Lista negra, y hacemos clic en «Añadir dominio», si la web ha bloquear por ejemplo es yahoo.com.ru la ponemos tal cual y bloqueamos así los envíos masivos de spam.
Evitar spam en un dominio que conozco
Si conocemos el dominio desde el que están enviando spam, lo primero que tenemos que hacer es avisar al cliente para que actualice a la última versión de WordPress, Joomla etc.
También hay que cambiar las contraseñas de FTP, Emails y quizás Mysql, aunque esto último poco probable.
Y para bloquear el ataque de spam podemos crear un archivo .htaccess en la raíz del dominio aumentando mucho su seguridad (aunque es probable que dejen de funcionar algunos elementos de la Web):
php_flag safe_mode on
php_flag register_globals off
php_flag allow_url_fopen off
php_flag file_uploads off
php_flag magic_quotes_gpc on
php_flag disable_functions show_source
php_flag disable_functions system
php_flag disable_functions shell_exec
php_flag disable_functions passthru
php_flag disable_functions exec
php_flag disable_functions phpinfo
php_flag disable_functions proc_open
php_flag disable_functions popen
También podeis ver quién envía más emails con este comando:
cat /usr/local/psa/var/log/maillog | grep -o ‘to=.*@.*’ | sed ‘s/to=.*@//’ | sort | uniq -c | sort -rn | head
Aumentar seguridad en Servidor Plesk Centos Ubuntu Apache
Aumentar seguridad del servidor fácilmente:
1. Si tienes el Plesk 10 asegúrate de que todos los planes de hosting tienen activado PHP SAFE MODE ON. No dejes utilizar a nadie el PHP SAFE MODE OFF ya que si le atacan lo transmitirá al resto de las Webs si esta en ON esta aislado en esa Web.
2. Cambiar el puerto SSH de 22 a otro número por ejemplo 2345.
- Iniciar sesión en el servidor como administrador.
- Abrir el archivo de configuración SSH sshd_config con el editor de texto vi:vi /etc/ssh/sshd_config.
- Buscar la entrada Puerto 22.
- Cambiar el puerto 22 por un puerto entre 1024 y 65536.
3. Entra en php.ini y asegúrate de que tienes los siguientes parámetros:
safe_mode = on
file_uploads = off (Aumenta seguridad pero desaparece la opción de adjuntar archivos en Webmail).
register_globals = Off
4. Si te están enviando mucho spam, entra en el panel Plesk y activa la opción «Grey list» (lista gris), de esta forma los emails se reciben al principio unos 30 minutos más tarde pero luego ya es al instante y quita el 95% del spam, es increíble.
5. Si te están enviando spam con virus desde Qmail, lo puedes cambiar a Post-fix desde Plesk 10. Lo único que te va a cambiar es que la cola de correo se borra y se crea de nuevo, pero los emails antiguos permanecen intactos. Yo lo he probado y funciona perfectamente.
6. Utilizar desde SSH el comando «yum update» para tener todos los paquetes actualizados a la última versión, incluido Mysql, httpd, mailman etc. puede tardar rato en terminar.
7. Entrar en Configuración / Firewall y en SSH pon que solamente tu IP pueda acceder al servidor.
También puedes desactivar la entrada a todo lo que no uses. Yo normalmente desactivo:
– Parallels Customer & Business Manager payment gateways,
– Parallels Single Sign-On
– Parallels Products Installer
– Servidor PostgreSQL
– Interfaz administrativo de Tomcat
– Samba (redes de compartición de archivos en Windows)
– VPN Plesk
– Directiva de sistema para el tráfico entrante
– Directiva de sistema para el redireccionamiento del tráfico
8. Instala «fail2ban», es un pequeño programa que se encarga de monitorizar archivos log y banear IPs que cometan demasiados errores de autentificación. Es muy útil, y sirve para el email, web, ftp etc. Imprescindible. Para instalarlo tienes que entrar en SSH y poner:
yum install fail2ban
Tienes más información de Fails2ban en las siguientes URLs:
Fail2ban
9. Desactivar Perl ya que es muy raro que lo use algún cliente y sin embargo casi todos los hackers lo utilizan para infectarte el servidor. Para desactivarlo tienes que buscar el archivo /etc/httpd/conf.d/perl.conf y renombrarlo por /etc/httpd/conf.d/perl.OLD de la siguiente manera:
mv /etc/httpd/conf.d/perl.conf /etc/httpd/conf.d/perl.OLD
y luego reiniciar servicios con el comando: /etc/init.d/psa restart
Me sorprende que este método no lo haya puesto casi nadie en internet.
10. Por último algo lógico, verificar siempre la existencia de posibles actualizaciones de seguridad (SSH):
Actualizar SSH:
yum -y install openssh openssh-server openssh-clients
y finalmente reiniciamos SSH con:
service sshd restart
* También se pueden actualizar todos los paquetes a las últimas versiones con:
yum update
……………………………………..
Actualizar Apache:
(Guarda una copia de seguridad del archivo httpd.conf que se encuentra en: /etc/httpd/conf y luego compáralo con el nuevo ya que es posible que con la nueva versión de Apache se cambien algunas opciones.)
yum update httpd
Me ha entrado un virus en servidor Plesk Cent-os
Si te ha entrado un virus en el servidor, lo mejor es que entres en:
Navegación segura de Google
para poder saber cuál es.
Si en algunas de las webs del servidor al entrar en ellas salta un pop-up con un virus prueba lo primero a vaciar los temporales del servidor con este comando:
/usr/bin/find /tmp/ -mtime +1 -exec rm -f {} \;
Con esto al menos borras probablemente los virus que se hayan alojado en /tmp/, aunque tienes el problema de que siguen llamando a esos archivos. Para evitar eso seguramente te han modificado el fichero .httpd.conf o httpd.config
Debes de hacer lo siguiente:
vi /etc/httpd/conf/httpd.conf
y buscas las líneas donde pone:
</VirtualHost>
# php_admin_value error_reporting 0
# php_admin_value auto_append_file /usr/local/lib/php/sys.php
###</IfDefine>
y tienes que borrar todas las que empiecen por:
php_admin_value
quedaría de la siguiente forma:
</VirtualHost>
###</IfDefine>
luego guardas el archivo con :wq
y reinicias los servicios.
También tienes que bajarte todas las webs y examinarlas con un antivirus para borrar cualquier virus, y volverlas a subir. También sería necesario cambiar la contraseña FTP, y quizás contraseñas de bases de datos e incluso emails, toda precaución es poca.
………………………………….
Hasta aquí este tutorial de los comandos que más he utilizado para gestionar mis servidores.
Cualquier duda comentarme.
Iñaki Barahona Ormazabal (Gerente de Bcnserveis)