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 |