Comandos SSH básicos

Administración de archivos y directorios

Administrador de archivos 

cp -a archivo.zip archivocopia.zip

Copiar archivo

touch /home/usuario/public_html/404.html

Crea un archivo 404.html

zip -r archivo.zip /home/usuario/public_html/directorio

Comprimir directorio

unzip archivo.zip

Descomprimir archivo

unzip -v archivo.zip

Ver contenido de un zip

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

Comprimir archivos excluyendo algunas extensiones

Administración de directorios

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

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.

rsync -avhzo /home/usuario/carpeta_origen/ /home/usuario/carpeta_destino/ Sincroniza información dentro del mismo servidor
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 22, por lo que deberá tener habilitado el SSH el servidor origen
rsync -avhzo -e "ssh -p1157" 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

Monitoreo de Servidores

grep -i maxclient /usr/local/apache/logs/error_log Revisar si apache ha llegado al tope de workers y requiere incrementar su valor
netstat -an | grep :80|wc -l Cuenta cantidad de procesos corriendo en el puerto 80
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 Cuenta la cantidad de accesos al puerto 80 por una única IP
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2,3 -d'.'|sed 's/$/.0/'|sort|uniq -c|sort -nk1 -r 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 -d'.'|sed 's/$/.0.0/'|sort|uniq -c|sort -nk1 -r O bien, toda la subnet más amplia: /16
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
Verificar el TOP de procesos ocupando capacidad de procesamiento (ejecutar linea por linea después de ">".
ps awux | grep lsof
ls -l /proc/PID-Number/* > /root/proc-list
Este comanto crea un archivo llamado proc-list que muestra exactamente lo que está haciendo un proceso específico (sustituir PID-Number)
/usr/local/apache/bin/apachectl fullstatus | grep 'wp-login\|xmlrp'

 

Revisar visitantes en apache status que estén atacando el inicio de sesión de Wordpress. Se puede sustituir por cualquier otro script atacado.
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

grep -i [IP] /usr/local/apache/logs/access_log

grep -i [IP] /usr/local/apache/logs/error_log

Buscar toda la actividad de una IP en el log apache y el error log

Combate al SPAM

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

Único remitente:

exiqgrep -if user@domain | xargs exim -Mrm

Vaciar todo:

exim -bp | grep \< | awk '{print $3}' | xargs exim -Mrm

Elimina los mensajes del Exim queue (todos y sender único)

Comandos para obtener información del hardware

cat /proc/cpuinfo Muestra la información del CPU
cat /proc/cpuinfo | grep proc | tail -n 1 Cuenta los procesadores físicos de un servidor
lsblk Muestra las particiones y montaje de discos
¿Fue útil la respuesta? 2 Los Usuarios han Encontrado Esto Útil (2 Votos)