InicioLinuxpsad (gnu/linux) detectar y bloquear ataques
PSAD (GNU/Linux) detectar y bloquear ataques port scan en tiempo real
(Toda la información que contiene este post fue recopilado de varias páginas y mucha parte tuve que traducirlo yo mismo así que las disculpas del caso si alguna parte esta mal traducida)

Si quieres conocer mas sobre el proyecto entra AQUI

En la vida. Hoy usted esta tranquilo, mañana desesperado! Todo por causa de un port scanning, que lo llevo a abrir los puertos, que a su vez llevaron a algunas vulnerabilidades, las vulnerabilidades a ataques y por ultimo al control total del servidor. Mas todo el ataque comienza por obtener informaciones del objetivo y con PSAD usted puede detectar y bloquear ataques port scan en tiempo real.

Pregunta:

Como hago para detectar ataques de puertos, analizando en Debian (GNU/Linux) los archivos de log del firewall, verificando en tiempo real, para bloquear los puertos? como hago para detectar el trafico de red sospechosa en GNU/Linux?

Respuesta:

Un scanner de puertos (así como el nmap) es un software realizado para buscar un host en la red que estén con puertos abiertos. El Cracker puede usar el nmap para scannear nuestra red antes de iniciar el ataque. Usted siempre puede ver los padrones, analizando el archivo /var/log/messages. Mas, yo les recomendaría la herramienta automática llamada PSAD - un detector de scanning de puertos para GNU/Linux, que en la verdad es un conjunto de daemons del sistema, bien ligero y utiliza los iptables de las maquinas Linux y analiza los mensajes de log para detectar scanning de puertos y trafico sospechoso.

Psad hace uso de los mensajes de log de Netfilter para la detección, alerta y (opcional mente) scanning de puertos de trafico sospechoso. El psad usa flags de TCP scans y analisa el TCP para determinar el tipo de scan (syn, fin, xmas, etc) y opciones de linea de comando correspondiente que pueden ser suministradas para el Nmap para generar un barrido. Ademas psad hace uso de las firmas que figuran en el sistema de detección de intrusos, Snort.

psad (gnu/linux) detectar y bloquear ataques


Instalando psad en Debian/Ubuntu y derivados:

# apt-get update
# apt-get install psad

Configurar el psad.

Abra y edite el archivo /etc/syslog.conf com:

# vi /etc/syslog.conf

Despues adicione la linea:
[color=#000000]
kern.info | /var/lib/psad/psadfifo 
[/color]



Alternativamente, usted puede escribir el siguiente comando para actualizar el syslog.conf:

# echo -e "kern.info | /var/lib/psad/psadfifo" >> /etc/syslog.conf

El psad necesita ser configurado para grabar todos los mensajes kern.info en Syslog por un tubo en /var/lib/psad/psadfifo.

Cierre y guarde el archivo. Reinice el syslog:

# /etc/init.d/sysklogd restart
# /etc/init.d/klogd

El archivo predeterminado de esta localizado en /etc/psad/psad.conf:

# vi /etc/psad/psad.conf

Usted necesita definir un e-mail para recibir las notificaciones cuando haya un scanning de puertos y otras configuraciones:
[color=#000000]
EMAIL_ADDRESSES             [email protected]; 
[/color]

Definir hostname del host(FQDN):
[color=#000000]
HOME_NET                NOT_USED; 
[/color]


Usted también puede necesitar de ajustar los niveles de seguridad en su configuración. Usted también puede definir el conjunto de puertos para ignorar, por ejemplo el psad puede ignorar los puertos UDP 53 y 5000. Utilize entonces:
[color=#000000]
IGNORE_PORTS                udp/53, udp/5000;
[/color]

Usted también puede habilitar iptables para bloquear en tiempo real, definiendo dos variables:
[color=#000000]
ENABLE_AUTO_IDS             Y;
IPTABLES_BLOCK_METHOD       Y;
[/color]

El psad tiene muchas opciones. Para saber mas tendremos que leer la documentación (man pages). Guarde y cierre el archivo y reinicie el psad:

# /etc/init.d/psad restart

Actualizando las reglas del Iptables:

El psad necesitar tener dos reglas para tener el log habilitado:
[color=#000000]
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
[/color]


Un ejemplo en shell script para una computadora desktop o laptop:
[color=#000000]
#!/bin/bash
IPT="/sbin/iptables"

echo "Iniciando un Firewall en IPv4..."
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
modprobe ip_conntrack

BADIPS=$(egrep -v -E "^#|^$" /root/scripts/bloqueado.fw)
PUB_IF="eth0"

#sin limitacion
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# DROP todo tráfico entrante
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# bloquear todos los bad ips (Maus...rss)
for ip in $BADIPS
do
    $IPT -A INPUT -s $ip -j DROP
    $IPT -A OUTPUT -d $ip -j DROP
done

# sync
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Drop Syn"

$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -j DROP

# Fragmentos
$IPT -A INPUT -i ${PUB_IF} -f -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fragments Packets"
$IPT -A INPUT -i ${PUB_IF} -f -j DROP

# bloquear bad stuff
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL ALL -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "NULL Packets"
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -j DROP # NULL packets

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "XMAS Packets"
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP #XMAS

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fin Packets Scan"
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -j DROP # FIN packet scans

$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# Liberar toda conexión de salida, sin entrada stuff
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# liberar solo ssh
$IPT -A INPUT -p tcp --destination-port 22 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -j ACCEPT

# liberar entradas ICMP ping pong stuff
$IPT -A INPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# No compartir paquetes smb/windows
$IPT -A INPUT -p tcp -i eth0 --dport 137:139 -j REJECT
$IPT -A INPUT -p udp -i eth0 --dport 137:139 -j REJECT

# Loguear cualquier cosa, si tiene sospecha de invasores
# *** Requer o psad ****
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
$IPT -A INPUT -j DROP

# Inicia firewall ipv6
# echo "Iniciar firewall ipv6..."
/root/scripts/start6.fw

exit 0
[/color]


Como puede ver el scaneo y verificación de los puerto(s)?

Solo escribimos el siguiente comando:

# psad -S

Ejemplo de salida (algunos datos sensibles fueron removidos por cuestiones de seguridad del autor):
[color=#000000]
[+] psadwatchd (pid: 2540)  %CPU: 0.0  %MEM: 0.0
    Running since: Sun Jul 27 07:14:56 2008

[+] kmsgsd (pid: 2528)  %CPU: 0.0  %MEM: 0.0
    Running since: Sun Jul 27 07:14:55 2008

[+] psad (pid: 2524)  %CPU: 0.0  %MEM: 0.8
    Running since: Sun Jul 27 07:14:55 2008
    Command line arguments: -c /etc/psad/psad.conf
    Alert email address(es): [email protected]

    src:            dst:            chain:  intf:  tcp:  udp:  icmp:  dl:  alerts:  os_guess:
    117.32.xxx.149  xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    118.167.xxx.219 xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    118.167.xxx.250 xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    118.167.xxx.5   xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    122.167.xx.11   xx.22.zz.121    INPUT   eth0   4642  0     0      4    50       -
    122.167.xx.80   xx.22.zz.121    INPUT   eth0   0     11    0      1    2        -
    123.134.xx.34   xx.22.zz.121    INPUT   eth0   20    0     0      2    9        -
    125.161.xx.3    xx.22.zz.121    INPUT   eth0   0     9     0      1    4        -
    125.67.xx.7     xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    190.159.xxx.220 xx.22.zz.121    INPUT   eth0   0     9     0      1    3        -
    193.140.xxx.210 xx.22.zz.121    INPUT   eth0   0     10    0      1    2        -
    202.xx.23x.196  xx.22.zz.121    INPUT   eth0   0     13    0      1    10       -
    202.xx.2x8.197  xx.22.zz.121    INPUT   eth0   0     20    0      2    17       -
    202.97.xxx.198  xx.22.zz.121    INPUT   eth0   0     17    0      2    12       -
    202.97.xxx.199  xx.22.zz.121    INPUT   eth0   0     18    0      2    15       -
    202.97.xxx.200  xx.22.zz.121    INPUT   eth0   0     17    0      2    14       -
    202.97.xxx.201  xx.22.zz.121    INPUT   eth0   0     15    0      2    12       -
    202.97.xxx.202  xx.22.zz.121    INPUT   eth0   0     21    0      2    16       -
    203.xxx.128.65  xx.22.zz.121    INPUT   eth0   12    0     0      2    6        Windows XP/2000
    211.90.xx.14    xx.22.zz.121    INPUT   eth0   1     0     0      2    2        -
    213.163.xxx.9   xx.22.zz.121    INPUT   eth0   0     0     1      2    2        -
    221.130.xxx.124 xx.22.zz.121    INPUT   eth0   0     35    0      2    31       -
    221.206.xxx.10  xx.22.zz.121    INPUT   eth0   0     33    0      2    21       -
    221.206.xxx.53  xx.22.zz.121    INPUT   eth0   0     33    0      2    27       -
    221.206.xxx.54  xx.22.zz.121    INPUT   eth0   0     39    0      2    26       -
    221.206.xxx.57  xx.22.zz.121    INPUT   eth0   0     33    0      2    19       -
    60.222.xxx.146  xx.22.zz.121    INPUT   eth0   0     40    0      2    33       -
    60.222.xxx.153  xx.22.zz.121    INPUT   eth0   0     14    0      1    11       -
    60.222.xxx.154  xx.22.zz.121    INPUT   eth0   0     18    0      2    15       -

    Netfilter prefix counters:
        "SPAM DROP Block": 161519
        "Drop Syn Attacks": 136

    Total scan sources: 95
    Total scan destinations: 1

    Total packet counters:
        tcp:  5868
        udp:  164012
        icmp: 2
[/color]


Como hago para remover automaticamente las ips bloqueadas?

Simplemente escribimos el siguiente comando para remover cualquier ip bloqueado en el firewall:

# psad -F

Como hago para visualizar el log detallado para cada dirección de IP?

Vamos hasta el archivo en /var/log/psad/ip.direccion/ Vá até o arquivo em /var/log/psad/ip.endereco/ pegar. Por ejemplo, para exibir el log de la direccion IP 11.22.22.33.

Por ejemplo, para ver los registros para la dirección IP 11.22.22.33, escribimos:

# cd /var/log/psad/11.22.22.33
# ls -l

Ejemplo de salida (aparece la fecha en la cual fue realizada):
[color=#000000]
-rw------- 1 root root 2623 2008-07-30 13:02 xx.22.zz.121_email_alert
-rw------- 1 root root   32 2008-07-30 13:02 xx.22.zz.121_packet_ctr
-rw------- 1 root root    0 2008-07-29 00:27 xx.22.zz.121_signatures
-rw------- 1 root root   11 2008-07-30 13:02 xx.22.zz.121_start_time
-rw------- 1 root root    2 2008-07-30 13:02 danger_level
-rw------- 1 root root    2 2008-07-30 13:02 email_count
-rw------- 1 root root 1798 2008-07-29 00:27 whois
[/color]


Use el comando:

# cat /var/log/psad/11.22.22.33/xx.22.zz.121_email_alert | more
o
# cat /var/log/psad/11.22.22.33/xx.22.zz.121_email_alert|less
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cagl86🇦🇷
Usuario
Puntos0
Posts54
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.