Page 1 sur 1
[ulogd] Log iptables impossible (résolu)
Publié : jeu. 25 juil. 2024, 10:03
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.
Re: [ulogd] Log iptables impossible
Publié : jeu. 25 juil. 2024, 11:32
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
Re: [ulogd] Log iptables impossible
Publié : jeu. 25 juil. 2024, 11:39
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à ?
Re: [ulogd] Log iptables impossible
Publié : ven. 26 juil. 2024, 01:43
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 :/
Re: [ulogd] Log iptables impossible
Publié : ven. 26 juil. 2024, 06:47
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 ?
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 11:42
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)
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 14:42
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/
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 15:55
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
.
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 21:18
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.
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 21:36
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 ?
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 23:00
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.
Re: [ulogd] Log iptables impossible
Publié : mar. 30 juil. 2024, 23:28
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é
Re: [ulogd] Log iptables impossible
Publié : mer. 31 juil. 2024, 15:33
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é.
Re: [ulogd] Log iptables impossible
Publié : mer. 31 juil. 2024, 19:14
par benjarobin
Pour moi ceci est faux et ne devrait pas fonctionner : ulogd_inppkt_NFLOG ne gère qu'un groupe que je sache.
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
Re: [ulogd] Log iptables impossible
Publié : mer. 31 juil. 2024, 19:27
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).
Re: [ulogd] Log iptables impossible
Publié : mer. 31 juil. 2024, 19:51
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].
Re: [ulogd] Log iptables impossible
Publié : mer. 31 juil. 2024, 20:18
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
Re: [ulogd] Log iptables impossible
Publié : jeu. 01 août 2024, 19:46
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
