Nftables + ulogd2 + mysql

Bonjour

Après la mise a jour de mon serveur vers Buster, j’ai dû passer par NFTABLES.
Puis configurer ULOGD2 pour pousser les logs FW vers MYSQL.

Donc le fichier ulogd.conf :

[global]
loglevel=3
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_ULOG.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inpflow_NFCT.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2BIN.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2HBIN.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_HWHDR.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_PRINTFLOW.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_MARK.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_SYSLOG.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_MYSQL.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_raw2packet_BASE.so"

stack=log2:NFLOG,base1:BASE,ifi1:IFINDEX,ip2bin1:IP2BIN,mac2str1:HWHDR,mysql1:MYSQL


hash_enable=0

[mysql1]
db="ULOG"
host="localhost"
user="XXXXXX"
table="ulog"
pass="XXXXXX!"
procedure="INSERT_PACKET_FULL"

J’ai créé les tables via le SQL Schema de mysql-ulogd2.sql.

J’ai bien la base qui est alimentée mais pour lire les IP au format binaire dans la base SQL : SELECT INET_NTOA(CONV(ip_daddr, 2, 10)) FROM view_tcp; retourne 0.0.0.0
le format HEX: SELECT HEX( ip_saddr_bin ) FROM ulog;
00000000000000000000FFFF5C355AB6
00000000000000000000FFFFB869F7EE

C’est ici que commence les questions:
Peut on changer le format des IP address ?

| ip_saddr_bin   | binary(16)           | YES  |     | NULL    |       |
| ip_daddr_bin   | binary(16)           | YES  |     | NULL    |       |

Comment peut on verifier que les IP sont justes ?

En fait je crois que j’aimerais echanger avec quelqu’un ayant configurer nftabloes,ulogd2 et mysql

Je me reponds a moi même:

SELECT RIGHT(HEX(ip_saddr_bin),8) from ma_table

pour avoir les 8 dernier DIGIT, puis

select count(inet_ntoa(conv(SADDR, 16, 10))) 

pour avoir un format d’addresses VARCHAR lisibles par des humains

Quelqu’un auriat il quelques conseilles pour utiliser un analyser de log FW (NULOGS semblant abandonné)…analyser generant des rapport HTML ?

Bonjour,
tu peux utiliser webfwlog (http://www.webfwlog.net/), c’est le meilleur analyseur jusqu’a maintenant.
jai un probleme de configurer ulogd2 pour loger to mysql. est ce que tu peux mevoyer le fichier de configuration ulog.conf et le fichier de base de donnees sql ?
Merci

Merci de cette reponse
Finalement je vais m’orienter vers un Dev personnel car je ne trouve rien que me convienne vraiment.
Concernant les fichier de conf, voici ce que j’ai (le fichier de base SQL est dans le “/usr/share/doc/ulogd2”) :

#Les PLUGINS (il yb a certainement du tri a faire)

plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_ULOG.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_UNIXSOCK.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inpflow_NFCT.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2BIN.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2HBIN.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_HWHDR.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_PRINTFLOW.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_MARK.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_SYSLOG.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_XML.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_SQLITE3.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_GPRINT.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_NACCT.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_PCAP.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_PGSQL.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_MYSQL.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_DBI.so"
plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_raw2packet_BASE.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inpflow_NFACCT.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_GRAPHITE.so"
#plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_JSON.so"
#Mon STACK
# this is a stack for logging packet to MySQL
stack=log2:NFLOG,base1:BASE,ifi1:IFINDEX,ip2bin1:IP2BIN,mac2str1:HWHDR,mysql1:MYSQL
#Confguration de connexion à la base
[mysql1]
db="MA_DATABASE"
host="localhost"
user="MON_USER"
table="ulog"
pass="MON_PASSWORD"
procedure="INSERT_PACKET_FULL"
#procedure="INSERT_BYTES"
#procedure="INSERT_CT"
# backlog configuration:
# set backlog_memcap to the size of memory that will be
# allocated to store events in memory if data is temporary down
# and insert them when the database came back.
#backlog_memcap=1000000
# number of events to insert at once when backlog is not empty
#backlog_oneshot_requests=10
[log2]
# netlink multicast group (the same as the iptables --nflog-group param)
group=2 # Group has to be different from the one use in log1

Et la regle pour loguer le traffic droppé

log group 2

Merci infiniment, je viens de voir ta reponse.
J ai deja configurer Ulogd pour logger a Mysql.
webfwlog ne passe pas a ce que tu voulais ?

Bonjour

Non je ne vais pas utiliser de Web log car ça ne repond pas a mon besoin.
Si besoin je me ferais une interface web (php/mariadb) mais pour le moment je n’en ai pas encore l’utilité
Bonne continuation