Centro de Ayuda

Comandos básicos en SSH

Comandos básicos en SSH

ADMINISTRACIÓN DE ARCHIVOS

Copiar archivo
cp -a archivo.zip archivocopia.zip
Crea un archivo 404.html
touch /home/usuario/public_html/404.html
Comprimir directorio
zip -r archivo.zip /home/usuario/public_html/directorio
Descomprimir archivo
unzip archivo.zip
Ver contenido de un zip
unzip -v archivo.zip
Comprimir archivos excluyendo algunas extensiones
zip -r /home/user/public_html/backup_php_ah.zip /home/user/public_html/uploads/ -x */\.* *.git* \.* *.JPG *.jpg *.PNG *.PDF *.pdf *.msg *.jpeg *.zip *.rar *.xlsx *.PDF *.png *.mp4 *.html *.docx *.pptx

ADMINISTRACIÓN DE DIRECTORIOS

Enlista archivos y carpetas
ls
Enlista archivos y carpetas y muestra su información
ls -al
Enlista archivos, carpetas y subdirectorios
ls -aR
Enlista archivos e información incluyendo todos los subdirectorios por pantallas
ls -aR | more
Lista archivos e información de subdirectorios y lo guarda en un archivo
ls -alR > resultado.txt
Lista todos los archivos acabados en .html
ls *.html
Cuenta la cantidad de folders en un directorio (excluye archivos)
echo */ | wc
Muestra el tamaño de una carpeta
du -h | grep \/.*\\/ -v
Busca en home un archivo con nombre lo_que_sea con un tamaño superior a 5MB.
find /home/ -name lo_que_sea -size +5M
Muestra el espacio que ocupa el directorio
du -sh
Muestra el espacio que ocupa cada archivo ordenado por tamaño
du -hs * | sort -h

SINCRONIZACIÓN DE ARCHIVOS Y DIRECTORIOS

Es importante tener cuidado con las diagonales al final de las carpetas, al NO colocarlas, se volverá a crear la última carpeta dentro del comando.

Sincroniza información dentro del mismo servidor
rsync -avhzo /home/usuario/carpeta_origen/ /home/usuario/carpeta_destino/
Sincroniza información desde un servidor externo, este comando se ejecuta desde el servidor destino. Esta instrucción usa el puerto 22, por lo que deberá tener habilitado el SSH el servidor origen.
rsync -avhzo root@servidor.origen.com:/home/usuario/carpeta_origen/ /home/usuario/carpeta_destino/
Sincroniza información desde un servidor externo, este comando se ejecuta desde el servidor destino. Esta instrucción usa el puerto 1157 y se sustituye por el puerto que el servidor origen tenga configurado para las conexiones SSH.
rsync -avhzo -e "ssh -p1157" root@servidor.origen.com:/home/usuario/carpeta_origen/ /home/usuario/carpeta_destino/

MONITOREO DE SERVIDORES

Revisar si Apache ha llegado al tope de workers y requiere incrementar su valor
grep -i maxclient /usr/local/apache/logs/error_log
Cuenta cantidad de procesos corriendo en el puerto 80
netstat -an | grep :80 | wc -l
Cuenta la cantidad de accesos al puerto 80 por una única IP
netstat -an | grep :80 | egrep '^tcp' | grep -v LISTEN | awk '{print $5}' | egrep '([0-9]{1,3}\.){3}[0-9]{1,3}' | sed 's/^\(.*:\)\?\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*$/\2/' | sort | uniq -c | sort -nr | sed 's/::ffff://' | head -20
Si el ataque es de múltiples IP. Podemos rastrear toda la subnet /24
netstat -ntu | awk '{print $5}' | cut -d: -f1 -s | cut -f1,2,3 -d'.' | sed 's/$/.0/' | sort | uniq -c | sort -nk1 -r
O bien, toda la subnet más amplia: /16
netstat -ntu | awk '{print $5}' | cut -d: -f1 -s | cut -f1,2 -d'.' | sed 's/$/.0.0/' | sort | uniq -c | sort -nk1 -r
Verificar el TOP de procesos ocupando capacidad de procesamiento (ejecutar línea por línea después de "#").
# resize;clear;echo;date;echo "Top 10 Processes by CPU %";echo ""; ps -eo user,%cpu,%mem,rsz,args,pid,lstart|sort -rnk2|\
# awk 'BEGIN {printf "%12s\t%s\t%s\t%s\t%s\n","USER","%CPU","%MEM","RSZ","COMMAND","PID","Started"} \ # {printf "%12s\t%g'\''%\t%g'\''%\t%d MB\t%s\n",$1,$2,$3,$4/1024,$5}' | head -n10;echo; \ # echo "== Last 90 mins ==";echo;sar | head -n6;sar -u | tail -n20;echo;sar -q | head -n6;sar -q | \ # tail -n20;echo;echo "== Current 5 Second Intervals ==";echo;sar -u 5 12;echo;sar -q 5 5
Este comando crea un archivo llamado proc-list que muestra exactamente lo que está haciendo un proceso específico (sustituir PID-Number).
ps awux | grep lsof
ls -l /proc/PID-Number/* > /root/proc-list
Revisar visitantes en Apache status que estén atacando el inicio de sesión de WordPress. Se puede sustituir por cualquier otro script atacado.
/usr/local/apache/bin/apachectl fullstatus | grep 'wp-login\|xmlrp'
Análisis de LOGS
cat /usr/local/apache/logs/access_log | awk '{print $1}' | sort | uniq -c | sort -n
Analiza el log de acceso de Apache y muestra la cantidad de veces que una IP se ha conectado a Apache.
Buscar toda la actividad de una IP en el log Apache y el error log.
grep -i [IP] /usr/local/apache/logs/access_log
grep -i [IP] /usr/local/apache/logs/error_log

COMBATE AL SPAM

Análisis de directorios desde los cuales está saliendo correo electrónico
grep cwd /var/log/exim_mainlog | grep -v /var/spool | awk -F"cwd=" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -n
Cantidad de email en el Queue Manager
/usr/sbin/exim -bpc
Una vez detectado un directorio sospechoso, se puede identificar el script sospechoso y buscar los accesos que ha tenido para bloquear las IPs resultantes
grep "mailer.php" /home/userna5/access-logs/example.com | awk '{print $1}' | sort -n | uniq -c | sort -n
Analizar posible ataque a EXIM
/usr/sbin/exigrep "unrecognized command" /var/log/exim_mainlog
Analizar si hay bloqueos en Hotmail
/usr/sbin/exigrep "Unfortunately, some messages from" /var/log/exim_mainlog
Analizar si hay bloqueos en Yahoo
/usr/sbin/exigrep "temporarily deferred due to user complaints" /var/log/exim_mainlog
Elimina los mensajes del Exim queue
Único remitente:
exiqgrep -if user@domain | xargs exim -Mrm
exiqgrep -ir user@domain | xargs exim -Mrm
Vaciar todo:
exim -bp | grep < | awk '{print $3}' | xargs exim -Mrm

INFORMACIÓN DE HARDWARE

Muestra la información del CPU
cat /proc/cpuinfo
Cuenta los procesadores físicos de un servidor
cat /proc/cpuinfo | grep proc | tail -n 1
Muestra las particiones y montaje de discos
lsblk
¡Vamos a hacerlo!

Comienza HOY por sólo $69.00/mes

Incluye constructor web, 30GB en la nube, +200 Apps y correo electrónico profesional.

Contratar Ahora