Reglas para fail2ban 2017

# /maillog
# /secure

# DOVECOT

(?: pop3-login|imap-login): .*(?:Disconnected|Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
pam.*dovecot.*(?:authentication failure).*rhost=(?:::f{4,6}:)?(?P<host>\S*)

# DOVECOT-(ignoreregex)

imap-login: Disconnected.*\(no auth attempts\).*



# POSTFIX

NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1\s*$
NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo=\s*$
NOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1\s*$
improper command pipelining after \S+ from [^[]*\[<HOST>\]:\s*$
NOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 454 4\.7\.1\.*
warning: \S+\[<HOST>\]: SASL ((?i)LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed
RCPT from \S+\[<HOST>\]: 454 4.7.1

# POSTFIX-(ignoreregex)

authentication failed: Connection lost to authentication server$

# SPAM
RCPT from \S+\[<HOST>\]: 550 5.7.1
RCPT from \S+\[<HOST>\]: 450 4.7.1
RCPT from \S+\[<HOST>\]: 554 5.7.1
RCPT from \S+\[<HOST>\]: 535.5.7.0
RCPT from \S+\[<HOST>\]: 535 5.7.0

# MAIL-QUOTA
NOQUEUE: milter-reject: RCPT from \S+\[<HOST>\]: 551 5.7.1

(3 email por minuto)

Limpiar sitios webs infectados por virus

Buscar archivos .php modificados recientemente, en este caso -7 en la última semana.

find . -type f -name ‘*.php’ -mtime -7

Buscar dentro de los archivos php código malicioso:

TIP: The blank space followed by a * means zero or more spaces.

find . -type f -name '*.php' | xargs grep -l "eval *(" --color
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "gzinflate *(" --color
find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color
find . -type f -name '*.php' | xargs egrep -i "(mail|fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *\("
find . -type f -name '*.php' | xargs egrep -i "preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *," --color

Checkear que archivos pueden haber cambiado, este truco se hace con dos versiones idénticas de WordPress, la tuya y una descargada, vamos a buscar diferencias en los archivos para ver cuales pueden estar comprometidos:

diff -r wordpress-clean/ wordpress-compromised/ -x wp-content

Tip: asegurase de usar la misma version de WordPress que la que tienes instalada.

Buscar en los directorios con permisos de escritura archivos infectados o que puedan estarlo

search_for_php_in_writable

chmod +x search_for_php_in_writable
find . -type f -name '*.php' > phpfiles.txt
~/search_for_php_in_writable &gt; php_in_writable.txt
find . -type d -perm 0777 &gt; writable_dirs.txt

find_non_php_in_writable

chmod +x find_non_php_in_writable;
~/find_non_php_in_writable;
./find_non_php_in_writable | less
./find_non_php_in_writable &gt; suspicious_files.txt

####Tip. Puedes usar grep -v para excluir de la busqueda resultados que contengan palabras de las búsquedas salvadas anteriormente.

grep -iv 'binary file' suspicious_files.txt | less

find_suspicious_php

chmod +x find_suspicious_php;
~/find_suspicious_php
find . -type d -perm 0770 &gt; writable_dirs.txt

si encuentras archivos maliciosos busca en los logs los accesos a estos archivos para encontrar la ip del hacker que ha hecho la intrusion.

grep -i &quot;ejfyebh\.php&quot; /var/log/apache/access.log | less

TIP: El truco está en encontrar la IP, una vez encuentras la ip, haces búsquedas en tus logs de la ip del hacker que te ha atacado y con ellos puedes llegar a encontrar el truco que ha usado para hackear tu sitio web.

Esto es todo amigos, si necesitáis algún tipo de ayuda no dejéis de escribir unos comentarios.