[ulogd] Log iptables impossible (résolu)

Applications, problèmes de configuration réseau
Répondre
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

[ulogd] Log iptables impossible (résolu)

Message par @rché0 »

Bonjour,

J'ai crée des règles iptables qui me permettent en théorie de logger certains paquets (INVALID et NEW) avec ulogd.

Code : Tout sélectionner

# Generated by iptables-save v1.8.10 on Thu Jul 25 08:38:30 2024
*security
:INPUT ACCEPT [83388:80286434]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55639:8524163]
COMMIT
# Completed on Thu Jul 25 08:38:30 2024
# Generated by iptables-save v1.8.10 on Thu Jul 25 08:38:30 2024
*raw
:PREROUTING ACCEPT [83388:80286434]
:OUTPUT ACCEPT [55639:8524163]
COMMIT
# Completed on Thu Jul 25 08:38:30 2024
# Generated by iptables-save v1.8.10 on Thu Jul 25 08:38:30 2024
*mangle
:PREROUTING ACCEPT [83388:80286434]
:INPUT ACCEPT [83388:80286434]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55639:8524163]
:POSTROUTING ACCEPT [55639:8524163]
COMMIT
# Completed on Thu Jul 25 08:38:30 2024
# Generated by iptables-save v1.8.10 on Thu Jul 25 08:38:30 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1383:154762]
:POSTROUTING ACCEPT [1383:154762]
COMMIT
# Completed on Thu Jul 25 08:38:30 2024
# Generated by iptables-save v1.8.10 on Thu Jul 25 08:38:30 2024
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -m recent --update --seconds 300 --hitcount 3 --name DEFAULT --mask 255.255.255.255 --rsource -j NFLOG --nflog-prefix "[INVALID_IN] : " --nflog-group 1
-A INPUT -m conntrack --ctstate NEW -m recent --update --seconds 300 --hitcount 3 --name DEFAULT --mask 255.255.255.255 --rsource -j NFLOG --nflog-prefix "[NEW] : " --nflog-group 1
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
COMMIT
# Completed on Thu Jul 25 08:38:30 2024
J'ai voulu testé la configuration en loggant tous les paquets avec la règle :
iptables -I INPUT 3 -m conntrack --ctstate ESTABLISHED,NEW,INVALID -m recent --update --seconds 300 --hitcount 1 --name DEFAULT --mask 255.255.255.255 --rsource -j NFLOG --nflog-prefix "[ALL] : " --nflog-group 1

Mais je n'ai rien dans le fichier /var/log/ulogd.syslogemu

/etc/ulogd.conf :

Code : Tout sélectionner

[global]
logfile="/var/log/ulogd.log"
loglevel=5
rmem=131071
bufsize=150000

plugin="/usr/lib/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/ulogd/ulogd_raw2packet_BASE.so"
plugin="/usr/lib/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib/ulogd/ulogd_filter_IFINDEX.so"

stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU

[log1]
group=1

[emu1]
file=/var/log/ulogd.syslogemu


-rw-r--r-- 1 root root 0 16 mai 06:46 /var/log/ulogd.syslogemu


Ça fait un moment que j'y suis dessus mais rien à faire, Ça ne veut pas :/
Une aide serait la bienvenue.

Merci.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Bonjour,

Quel est le contenu de /var/log/ulogd.log ?
Est ce que ulogd a été lancé et est-ce que celui-ci est bien en cours de fonctionnement ?
Il y a un bon article en français ici : https://connect.ed-diamond.com/GNU-Linu ... -netfilter
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Bonjour ben,

ulogd.log

Code : Tout sélectionner

Thu Jul 25 10:24:20 2024 <5> ulogd.c:1378 Terminal signal received, exiting
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `NFLOG'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `BASE'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `IP2STR'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `PRINTPKT'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `LOGEMU'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:408 registering plugin `IFINDEX'
Thu Jul 25 10:24:20 2024 <5> ulogd.c:978 building new pluginstance stack: 'log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU'

Code : Tout sélectionner

● ulogd.service - Netfilter Ulogd daemon
     Loaded: loaded (/usr/lib/systemd/system/ulogd.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-07-25 10:24:20 CEST; 1h 14min ago
 Invocation: 75532488065d4cfdb82920a32dd5be26
   Main PID: 242912 (ulogd)
      Tasks: 1 (limit: 18800)
     Memory: 344K (peak: 1.7M)
        CPU: 7ms
     CGroup: /system.slice/ulogd.service
             └─242912 /usr/bin/ulogd

juil. 25 10:24:20 laptop systemd[1]: Started Netfilter Ulogd daemon.
J'ai modifié /etc/sysctl.d, peut-être une piste…

Code : Tout sélectionner

## Touches_magiques
kernel.sysrq=1

## Kernel_panic
kernel.panic=5

## Mode_laptop
vm.laptop_mode=5

## Sécurité_du_noyau
fs.suid_dumpable=0
fs.protected_symlinks=1
fs.protected_hardlinks=1
kernel.randomize_va_space=2
kernel.dmesg_restrict=1
kernel.kptr_restrict=2
#kernel.yama.ptrace_scope=3
kernel.kexec_load_disabled=1
kernel.perf_event_max_sample_rate=1
kernel.perf_cpu_time_max_percent=1
kernel.perf_event_paranoid=2
#kernel.unprivileged_userns_clone=0

## Améliorations_réseau
net.core.netdev_max_backlog=75536
net.core.optmem_max=26777216
net.core.somaxconn=75536
net.core.rmem_default=26777216
net.core.rmem_max=48214400
net.core.wmem_default=26777216
net.core.wmem_max=48214400
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_synack_retries=2
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_tw_buckets=2000000
net.ipv4.tcp_rmem=75536 1648576 16997152
net.ipv4.tcp_wmem=75536 1648576 16997152
net.ipv4.tcp_mem=75536 1648576 16997152
net.ipv4.udp_mem=75536 1648576 16997152
net.ipv4.udp_rmem_min=5316384
net.ipv4.udp_wmem_min=5316384
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv6.conf.all.accept_source_route=0
net.ipv6.conf.default.accept_source_route=0
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.default.log_martians=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.ip_forward=0
net.ipv4.ip_local_port_range=30000 65535
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_broadcasts=1

## Performances_système
vm.vfs_cache_pressure=50
#kernel.sched_migration_cost_ns=5000000
fs.file-max=524288
dev.i915.perf_stream_paranoid=0
vm.swappiness=5
vm.drop_caches=3%
Sinon, j'ai vu dans le lien fourni que ipv4 et ipv6 doivent avoir des logs et groups différents.
Pense-tu que ça peut venir de là ?
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Bonjour,

j'ai ajouté un deuxième group/log pour ipv6:

Code : Tout sélectionner

[global]
logfile="/var/log/ulogd.log"
loglevel=5
rmem=131071
bufsize=150000

plugin="/usr/lib/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/ulogd/ulogd_raw2packet_BASE.so"
plugin="/usr/lib/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib/ulogd/ulogd_filter_IFINDEX.so"

stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU
stack=log2:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU

# IPv4
[log1]
group=1

# IPv6
[log2]
group=2

[emu1]
file=/var/log/ulogd.syslogemu



Voici mes règles ipv6 modifiées:

Code : Tout sélectionner

# Generated by ip6tables-save v1.8.10 on Fri Jul 26 01:07:58 2024
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -d ::1/128 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -m recent --update --seconds 300 --hitcount 3 --name DEFAULT --mask ff02::1 --rsource -j NFLOG --nflog-prefix "[INVALID/v6] : " --nflog-group 2
-A INPUT -m conntrack --ctstate NEW -m recent --update --seconds 300 --hitcount 3 --name DEFAULT --mask ff02::1 --rsource -j NFLOG --nflog-prefix "[NEW/v6] : " --nflog-group 2
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
COMMIT
# Completed on Fri Jul 26 01:07:58 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 01:07:58 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [2:160]
:POSTROUTING ACCEPT [2:160]
COMMIT
# Completed on Fri Jul 26 01:07:58 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 01:07:58 2024
*mangle
:PREROUTING ACCEPT [4:280]
:INPUT ACCEPT [4:280]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:280]
:POSTROUTING ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 01:07:58 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 01:07:58 2024
*raw
:PREROUTING ACCEPT [4:280]
:OUTPUT ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 01:07:58 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 01:07:58 2024
*security
:INPUT ACCEPT [4:280]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 01:07:58 2024


J'ai réessayé de logger les paquets entrants/sortants NEW,ESTABLISHED en ipv4 mais le problème persiste :/
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

J'ai trouvé :)

le module 'nf_log_syslog' n'était pas activé. Je l'ai ajouté dans /etc/modules-load.d/ulogd.conf
Je ne sais pas si c'est indispensable ?

J'ai modifié les règles de logs pour les mettre en premier en les réécrivant :

Code : Tout sélectionner

# Generated by iptables-save v1.8.10 on Fri Jul 26 05:13:05 2024
*security
:INPUT ACCEPT [64256:61090340]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [43052:7361043]
COMMIT
# Completed on Fri Jul 26 05:13:05 2024
# Generated by iptables-save v1.8.10 on Fri Jul 26 05:13:05 2024
*raw
:PREROUTING ACCEPT [64302:61095090]
:OUTPUT ACCEPT [43053:7361172]
COMMIT
# Completed on Fri Jul 26 05:13:05 2024
# Generated by iptables-save v1.8.10 on Fri Jul 26 05:13:05 2024
*mangle
:PREROUTING ACCEPT [64302:61095090]
:INPUT ACCEPT [64302:61095090]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [43053:7361172]
:POSTROUTING ACCEPT [43052:7361043]
COMMIT
# Completed on Fri Jul 26 05:13:05 2024
# Generated by iptables-save v1.8.10 on Fri Jul 26 05:13:05 2024
*nat
:PREROUTING ACCEPT [16:1882]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [839:96385]
:POSTROUTING ACCEPT [839:96385]
COMMIT
# Completed on Fri Jul 26 05:13:05 2024
# Generated by iptables-save v1.8.10 on Fri Jul 26 05:13:05 2024
*filter
:INPUT DROP [46:4750]
:FORWARD DROP [0:0]
:OUTPUT DROP [1:129]
-A INPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -m conntrack --ctstate NEW -j NFLOG --nflog-prefix "[NEW/IN] : " --nflog-group 1 --nflog-threshold 30
-A INPUT -m conntrack --ctstate INVALID -j NFLOG --nflog-prefix "[INVALID/IN] : " --nflog-group 1 --nflog-threshold 30
-A INPUT -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack --ctstate INVALID -j NFLOG --nflog-prefix "[INVALID/OUT] : " --nflog-group 1 --nflog-threshold 30
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
COMMIT
# Completed on Fri Jul 26 05:13:05 2024



Code : Tout sélectionner

# Generated by ip6tables-save v1.8.10 on Fri Jul 26 06:06:10 2024
*security
:INPUT ACCEPT [4:280]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 06:06:10 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 06:06:10 2024
*raw
:PREROUTING ACCEPT [4:280]
:OUTPUT ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 06:06:10 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 06:06:10 2024
*mangle
:PREROUTING ACCEPT [4:280]
:INPUT ACCEPT [4:280]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:280]
:POSTROUTING ACCEPT [4:280]
COMMIT
# Completed on Fri Jul 26 06:06:10 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 06:06:10 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [2:160]
:POSTROUTING ACCEPT [2:160]
COMMIT
# Completed on Fri Jul 26 06:06:10 2024
# Generated by ip6tables-save v1.8.10 on Fri Jul 26 06:06:10 2024
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT ! -s ::1/128 ! -d ::1/128 -m conntrack --ctstate NEW -j NFLOG --nflog-prefix "[NEW/IN_v6] : " --nflog-group 2 --nflog-threshold 30
-A INPUT -m conntrack --ctstate INVALID -j NFLOG --nflog-prefix "[INVALID/IN_v6] : " --nflog-group 2 --nflog-threshold 30
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -d ::1/128 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack --ctstate INVALID -j NFLOG --nflog-prefix "[INVALID/OUT_v6] : " --nflog-group 2 --nflog-threshold 30
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
COMMIT
# Completed on Fri Jul 26 06:06:10 2024

Merci @benjarobin pour le lien fourni, j'étais passé à coté :)

Maintenant, que pensez-vous des règles ? Sont-elles suffisamment sécurisées pour un pc personnel ?
--nflog-threshold 30 est-ce un bon compromis, ou dois-je l'augmenter/diminuer ?
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

En attendant une réponse de votre part, j'ai fais un script qui vérifie le log d'ulogd toutes les dix minutes et qui ajoute une séparation entre les nouvelles entrées :

Code : Tout sélectionner

#!/usr/bin/env zsh

del="            ==================================================================================================================\n"
log="/var/log/ulogd.syslogemu"
dif="/tmp/log_dif"
tmp="/tmp/log"

while :; do
    sleep 600

wcl=0

if [[ ! -f ${tmp} || ! -f ${dif} ]]; then
    touch "$tmp"
    touch "$dif"
fi

rep=$(diff -u "$tmp" "$log"|grep '^+'|tail -n+2)
wcl=$(echo "$rep"|wc -l)

if [[ ${wcl} -gt 1 ]]; then

    echo "$rep"|tee "$dif"
    cat  "$dif"|tr -d '+'|tee -a "$tmp"
    echo "$del"|tee -a "$tmp"
    notify-send -u critical "ALERTE DE SÉCURITÉ"\
    $((${wcl} - 1))" entrées ont été répertoriées dans le fichier ${tmp}"

else
    continue

fi
    done


Puis un .service, pour le lancer au démarrage :

Code : Tout sélectionner


[Unit]
Description=Service de Surveillance du Réseau
After=ulogd.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/ulog
Restart=on-failure

[Install]
WantedBy=default.target


Un autre service pour effacer le contenu du log à l'extinction du système :

Code : Tout sélectionner

[Unit]
Description=Suppression du Log Iptables à l'Extinction du Système
Before=shutdown.target halt.target reboot.target

[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c 'echo|tee /var/log/ulogd.syslogemu'

[Install]
WantedBy=default.target


Les règles ip(6)tables :

Code : Tout sélectionner

*filter
:INPUT DROP [31:6002]
:FORWARD DROP [0:0]
:OUTPUT DROP [1:129]
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -m conntrack ! --ctstate ESTABLISHED -j NFLOG --nflog-prefix "[ACCÈS_NON_AUTORISÉ/IN] : " --nflog-group 1 --nflog-threshold 20
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT

Code : Tout sélectionner

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -s ::1/128 -d ::1/128 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT ! -s ::1/128 ! -d ::1/128 -m conntrack ! --ctstate ESTABLISHED -j NFLOG --nflog-prefix "[ACCÈS_NON_AUTORISÉ/IN_v6] : " --nflog-group 2 --nflog-threshold 20
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT

J'aurais une dernière question avant de mettre le sujet en 'résolu'.

Avec la règles INPUT 3, je suis sensé loggé uniquement les paquets qui contournent les règles du pare-feu ?
Si je déplace la règle INPUT 3 vers INPUT 1, ça serait tous les paquets qui ne sont pas 'établis' en excluant localhost. C'est bien ça ?

EDIT: le module nf_log_syslog ne sert pas dans mon cas. Je l'ai déchargé. (voir post précédent)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Bonjour, je n'avais pas répondu, car je ne comprenais pas comment rajouter nf_log_syslog avait fait fonctionné la chose.
Je n'ai pas compris ce que tu avais du changer pour faire fonctionner la chose, car de "loin" cela me semblait ok.

Sinon je ne suis pas sûr d'être d'accord avec ta règle de logging. Si tu veux log tout ce qui est dropped, tu peux t'inspirer de https://www.thegeekstuff.com/2012/08/ip ... g-packets/
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Bonjour,

c'était ma règle NFLOG qui n'était pas bonne. J'ai suivi ton lien, voici les nouvelles règles :

Code : Tout sélectionner

*filter
:INPUT DROP [12:902]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOGGING - [0:0]
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -j LOGGING
-A INPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -m limit --limit 2/min -j NFLOG --nflog-prefix "[ACCÈS_NON_AUTORISÉ/IN] : " --nflog-group 1
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
-A LOGGING -j DROP

Code : Tout sélectionner

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOGGING - [0:0]
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -s ::1/128 -d ::1/128 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -j LOGGING
-A INPUT ! -s ::1/128 ! -d ::1/128 -m limit --limit 2/min -j NFLOG --nflog-prefix "[ACCÈS_NON_AUTORISÉ/IN_v6] : " --nflog-group 2
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
-A LOGGING -j DROP

Il ne me reste plus qu'a attendre pour voir si c'est bon :).
Si le log est trop fourni, j'augmenterais --limit ou j'ajouterais --limit-burst.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Les règles que tu utilises ne sont toujours pas bonne. Maintenant cela ne loggue plus rien (si je ne me trompe pas).
La target LOGGING ne fait actuellement rien. Le but étant de logguer. Tu redirigies tout ce qui doit être dropped vers LOGGING, qui in-fine redirige vers DROP, mais il faut logguer ce qui passe par LOGGING.
Tu peux aussi si tu veux log la sortie.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Oui c'est ce que je me suis aperçu.

Code : Tout sélectionner

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [674:49736]
:LOGGING - [0:0]
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -m recent --update --seconds 60 --hitcount 30 --name DEFAULT --mask 255.255.255.255 --rsource -j NFLOG --nflog-prefix "[NON_AUTORISÉ/IN] : " --nflog-group 1
-A INPUT -m conntrack ! --ctstate ESTABLISHED -j LOGGING
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
-A LOGGING -j DROP
Ça devrait être mieux, j'ai repris l'idée du début avec -m recent --update --seconds 60 --hitcount 30.
J'avais aussi pensé de loggé la sortie INVALID, pour la règle OUTPUT est-ce suffisant de bloquer uniquement les paquets invalides ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Ce n'est toujours pas bon (la plupart de tes règles n'ont aucun sens). Comme je ne sais pas ce que tu veux faire exactement difficile de te donner les bonnes règles.
Les règles sont exécutées dans l'ordre, si une règle match, les autres ne sont pas exécutées.
Mais en gros tu dois :
- Par défaut DROP (ce qui ton cas).
- Ajouter des règles d'autorisations (qui vont vers ACCEPT)
- Ne pas avoir des règles compliqués de négations, ... (qui font du LOGGING...) <= Ne pas faire cela
- Tu dois par contre rajouter une règles pour que TOUT le reste du traffic INPUT soit redirigé vers LOGGING (ceci permet de factoriser le logging après tu peux faire autrement)
- Puis tu rediriges le traffic de LOGGING vers NFLOG et enfin vers DROP.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

En gros, en INPUT :

- autoriser localhost NEW,ESTABLISHED, c'est pour Unbound entre autres
- logger le traffic qui ne passe pas par localhost et qui n'est pas ESTABLISHED avec un tampon du nombre de paquets loggés/min (pour que je n'ai pas d'alerte en permanence. S'il y a plus de 30 paquets/min par example, je logge
- accepter les paquets légitimes ESTABLISHED

en OUTPUT :
- autoriser le traffic légitime et bloquer ce qui peut poser problème
- logger le traffic bloqué
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Bonjour,

Code : Tout sélectionner

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOGIN - [0:0]
:LOGOUT - [0:0]
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -j LOGIN
-A OUTPUT -m conntrack ! --ctstate INVALID -j ACCEPT
-A OUTPUT -m conntrack --ctstate INVALID -j LOGOUT
-A LOGIN -j NFLOG --nflog-prefix "[NON_AUTORISÉ/IN] : " --nflog-group 1
-A LOGIN -j DROP
-A LOGOUT -j NFLOG --nflog-prefix "[INVALID/OUT] : " --nflog-group 1
-A LOGOUT -j DROP


J'ai fais une erreur dans le fichier /etc/ulogd.conf. Le log était vide :

Code : Tout sélectionner

[global]
logfile="/var/log/ulogd.log"
loglevel=5
rmem=131071
bufsize=150000

plugin="/usr/lib/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/ulogd/ulogd_raw2packet_BASE.so"
plugin="/usr/lib/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib/ulogd/ulogd_filter_IFINDEX.so"

stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU
stack=log2:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU

# IPv4
[log1]
group=1

# IPv6
[log2]
group=2

[emu1]
file=/var/log/ulogd.syslogemu


Le correctif :

Code : Tout sélectionner

[global]
logfile="/var/log/ulogd.log"
loglevel=5
rmem=131071
bufsize=150000

plugin="/usr/lib/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/ulogd/ulogd_raw2packet_BASE.so"
plugin="/usr/lib/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib/ulogd/ulogd_filter_IFINDEX.so"

stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU

# IPv4
[log1]
group=1

# IPv6
[log1]
group=2

[emu1]
file=/var/log/ulogd.syslogemu

J'ai modifié aussi le script mis plus haut, car pour la règle NFLOG j'ai fait au plus simple. Il affiche une notification chaque fois qu le fichier de log à plus de 25 entrées :

Code : Tout sélectionner

#!/usr/bin/env zsh

sep="            ==================================================================================================================\n"
log="/var/log/ulogd.syslogemu"
dif="/tmp/log_dif"
tmp="/tmp/log"

    touch "$tmp"

while :; do

    sleep 600

if [[ ! -f ${tmp} || ! -f ${dif} ]]; then

    touch "$tmp"
    touch "$dif"
fi

rep=$(diff -u "$tmp" "$log"|grep '^+'|tail -n+2)
wcl=$(echo "$rep"|wc -l)

if [[ ${wcl} -gt 25 ]]; then

    echo "$rep"|tee "$dif"
    cat  "$dif"|tr -d '+'|tee -a "$tmp"
    echo "$sep"|tee -a "$tmp"
    notify-send -u critical "ALERTE DE SÉCURITÉ" "Vérifier le fichier ${tmp}"
else

    continue
fi
    done
a
@benjarobin : c'est bon pour toi ?
J'ai essayé d'éditer le post ou j'ai mis le script mais je ne suis pas arrivé.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Pour moi ceci est faux et ne devrait pas fonctionner : ulogd_inppkt_NFLOG ne gère qu'un groupe que je sache.

Code : Tout sélectionner

# IPv4
[log1]
group=1

# IPv6
[log1]
group=2
Pourquoi d’ailleurs créer 2 groupes alors que tu veux tout mettre dans un même fichier ? Pourquoi filtrer avec des groupes, pourquoi ne pas tout prendre ?
De plus je ne pense pas que 2 stack puissent pointer vers le même fichier
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

C'est par rapport au premier lien que tu m'as donné. Le group=1 pour IPv4 et le deuxième pour sa version 6, je n'ai peut-être rien compris :)

Si le group 2 ne sert à rien, je vais le supprimer.

Pour les règles OUTPUT, je n'ai rien qui se logge. C'est correct pour toi ou dois-je mettre la seconde règle en première position (c'est ce que je suis en train de tester).
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17373
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [ulogd] Log iptables impossible

Message par benjarobin »

Pourquoi tu aurais quelques chose qui se loggue pour OUTPUT ? Il faudrait un état invalide, ce qui n'arrive jamais (ou presque) !
Le lien que j'ai donné n'indique pas qu'il faut avoir 2 groupes différents (IPv4 et IPv6) : Il indique bien que le groupe DOIT être différent pour une autre section [logX].
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Pour le log d'OUTPUT si, j'ai deux ou trois paquets qui passe dans l'état INVALID. Mais c'est aléatoire et l'attente peut être longue. Si la position de la règle est bonne, c'est que je n'ai pas attendu assez.

Ok pour ulogd.config, je supprime

Code : Tout sélectionner

# IPv6
[log1]
group=2

@rché0
archer
Messages : 111
Inscription : jeu. 09 sept. 2021, 20:57

Re: [ulogd] Log iptables impossible

Message par @rché0 »

Bonjour,

je n'arrive pas à éditer mon premier message. Pour moi, c'est considéré comme résolu malgré une bizarrerie avec la commande iptables -vL qui m'indique zéro paquets DROP dans LOGOUT alors que j'ai reçu une notification dû à la connection à un serveur VPN.

Code : Tout sélectionner

Chain INPUT (policy DROP 2 packets, 190 bytes)
 pkts bytes target     prot opt in     out     source               destination         
3759K 5842M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate ESTABLISHED
 1894  121K ACCEPT     all  --  any    any     localhost            localhost            ctstate NEW,ESTABLISHED
   19  4252 LOGIN      all  --  any    any    !localhost           !localhost           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
1547K  150M ACCEPT     all  --  any    any     anywhere             anywhere             ! ctstate INVALID
    0     0 LOGOUT     all  --  any    any     anywhere             anywhere             ctstate INVALID

Chain LOGIN (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   19  4252 NFLOG      all  --  any    any     anywhere             anywhere             nflog-prefix "[NON_AUTORISÉ/IN] : " nflog-group 1
   19  4252 DROP       all  --  any    any     anywhere             anywhere            

Chain LOGOUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 NFLOG      all  --  any    any     anywhere             anywhere             nflog-prefix "[INVALID/OUT] : " nflog-group 1
    0     0 DROP       all  --  any    any     anywhere             anywhere            

Code : Tout sélectionner

…
Aug  1 05:43:27 laptop [INVALID/OUT] :  IN= OUT=nordlynx MAC= SRC=10.5.0.2 DST=185.67.36.169 LEN=52 TOS=00 PREC=0x00 TTL=64 ID=63058 DF PROTO=TCP SPT=46466 DPT=8843 SEQ=1284363987 ACK=599157827 WINDOW=1602 ACK PSH FIN URGP=0 MARK=0x0 
Aug  1 05:43:27 laptop [INVALID/OUT] :  IN= OUT=nordlynx MAC= SRC=10.5.0.2 DST=185.67.36.168 LEN=52 TOS=00 PREC=0x00 TTL=64 ID=8002 DF PROTO=TCP SPT=60408 DPT=8843 SEQ=415868155 ACK=3259855536 WINDOW=1603 ACK PSH FIN URGP=0 MARK=0x0 
Aug  1 05:43:27 laptop [INVALID/OUT] :  IN= OUT=nordlynx MAC= SRC=10.5.0.2 DST=185.67.36.168 LEN=52 TOS=00 PREC=0x00 TTL=64 ID=41357 DF PROTO=TCP SPT=60424 DPT=8843 SEQ=2579950872 ACK=2308701251 WINDOW=1602 ACK PSH FIN URGP=0 MARK=0x0 
            ==================================================================================================================


J'aurais aussi bien aimé que le log d'Ulogd puisse dire l'état du paquet, ça aurait un plus pour LOGIN.
Merci bien :)
Répondre