Suricata v4.1.6_1 - Package update Release Notes
-
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Prior to 4.1.6 i'm using the 4.1.5 version and all Geoip rules working fine to me.
Thanks. I'm looking into what the problem could be. Creating a debug build now so I can trace the actual code execution in the binary as it attempts a geoip lookup.
Sorry, I've edited my last post, see above, i think, it's a DB file problem.
Geoip rules working good with Pfblokerng DB file from december DB.Okay, I've got this sorted out and will submit a fix for it soon.
The root cause is the new database gzip archive has an extra sub-directory path in it where the actual database is stored. My PHP code was not allowing for that and thus wound up copying a corrupted database over to the shared area where Suricata was looking.
I also shot myself in the foot when investigating the database because I initially was using my own custom rule with a known IP address from Japan for testing. However, later during my testing, I switched over to using your custom rule in my test setup, but I did not notice until MUCH later that your rule does not contain the JP country code for Japan. Thus my tests using the JP IP address were all still failing, even with a "good" database in place. That false result sent me down the path of suspecting the binary ... . When you said copying over the pfBlockerNG database fixed it for you, I went back and carefully checked my testing methodology and discovered the issue with the IP address I was using not actually being covered in your GeoIP rule! Feel really stupid now...
-
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Prior to 4.1.6 i'm using the 4.1.5 version and all Geoip rules working fine to me.
Thanks. I'm looking into what the problem could be. Creating a debug build now so I can trace the actual code execution in the binary as it attempts a geoip lookup.
Sorry, I've edited my last post, see above, i think, it's a DB file problem.
Geoip rules working good with Pfblokerng DB file from december DB.Okay, I've got this sorted out and will submit a fix for it soon.
The root cause is the new database gzip archive has an extra sub-directory path in it where the actual database is stored. My PHP code was not allowing for that and thus wound up copying a corrupted database over to the shared area where Suricata was looking.
I also shot myself in the foot when investigating the database because I initially was using my own custom rule with a known IP address from Japan for testing. However, later during my testing, I switched over to using your custom rule in my test setup, but I did not notice until MUCH later that your rule does not contain the JP country code for Japan. Thus my tests using the JP IP address were all still failing, even with a "good" database in place. That false result sent me down the path of suspecting the binary ... . When you said copying over the pfBlockerNG database fixed it for you, I went back and carefully checked my testing methodology and discovered the issue with the IP address I was using not actually being covered in your GeoIP rule! Feel really stupid now...
That's a good news !
Thank you very much bmeeks !Oh my god !
you're going around in circles just for my missing country code in my rule.
Sorry for this mistake.I'm waiting the update, thank's for all bmeeks !
Best regards. -
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Prior to 4.1.6 i'm using the 4.1.5 version and all Geoip rules working fine to me.
Thanks. I'm looking into what the problem could be. Creating a debug build now so I can trace the actual code execution in the binary as it attempts a geoip lookup.
Sorry, I've edited my last post, see above, i think, it's a DB file problem.
Geoip rules working good with Pfblokerng DB file from december DB.Okay, I've got this sorted out and will submit a fix for it soon.
The root cause is the new database gzip archive has an extra sub-directory path in it where the actual database is stored. My PHP code was not allowing for that and thus wound up copying a corrupted database over to the shared area where Suricata was looking.
I also shot myself in the foot when investigating the database because I initially was using my own custom rule with a known IP address from Japan for testing. However, later during my testing, I switched over to using your custom rule in my test setup, but I did not notice until MUCH later that your rule does not contain the JP country code for Japan. Thus my tests using the JP IP address were all still failing, even with a "good" database in place. That false result sent me down the path of suspecting the binary ... . When you said copying over the pfBlockerNG database fixed it for you, I went back and carefully checked my testing methodology and discovered the issue with the IP address I was using not actually being covered in your GeoIP rule! Feel really stupid now...
That's a good news !
Thank you very much bmeeks !Oh my god !
you're going around in circles just for my missing country code in my rule.
Sorry for this mistake.I'm waiting the update, thank's for all bmeeks !
Best regards.It was my fault for not double-checking the IP. It just did not cross my mind. I chose the IP initially anyway, and then did not verify that your rule covered the IP I had arbitrarily chosen. My fault all the way ... .
There is a happy ending, though. It gives me a chance to make the GeoIP database download script more robust. Also have it checking the posted MD5 hash on the MaxMind site against what is already present on the firewall so that it only downloads a new database when there is a mismatch. I'm going to change the check for a new database version back to once per day since it will only be downloading and checking the 32 byte MD5 file. If the MD5 on the firewall differs from the posted MD5 on the MaxMind site, then it will download the entire database (approximately 4 MB).
-
The problems with GeoIP database downloads and loss of GeoIP functionality in the Suricata 4.1.6 package have been identified and corrected. Look for an update to 4.1.6_2 to show up in the near future. Here is a link to the pull request containing the fix: https://github.com/pfsense/FreeBSD-ports/pull/749.
-
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
The problems with GeoIP database downloads and loss of GeoIP functionality in the Suricata 4.1.6 package have been identified and corrected. Look for an update to 4.1.6_2 to show up in the near future. Here is a link to the pull request containing the fix: https://github.com/pfsense/FreeBSD-ports/pull/749.
Thank's bmeeks for the pull request !
-
Updated 4.1.6_1 to 4.1.6_2 today (Removed and reinstalled package) and database was corrupted after extraction :
System log :[Suricata] A new GeoLite2-Country IP database is available. [Suricata] Downloading new GeoLite2-Country IP database... [Suricata] New GeoLite2-Country IP database gzip archive successfully downloaded. [Suricata] Extracting new GeoLite2-Country database from the archive... [Suricata] Moving new database to /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb... [Suricata] GeoLite2-Country database update completed. [Suricata] Cleaning up temp files after GeoLite2-Country database update.
Suricata log :
Failed to open GeoIP2 database: /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb. Error was: The MaxMind DB file contains invalid metadata. GeoIP rule matching is disabled.
Temp fix :
Create a link from PfblockerNG Maxmind DB to the suricata Geolite directory :cd /usr/local/share/suricata/GeoLite2/ rm GeoLite2* cd /usr/local/share/GeoIP ln GeoLite2-Country.mmdb /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb ls -l GeoLite2-Country.mmdb -rw-r--r-- 2 root wheel 4035535 Jan 7 00:45 GeoLite2-Country.mmdb
-
@jm1384 For me it works...no errors:
Also checked the log here /var/log/suricata/suricata_[interface]/suricata.log, and found no errors.
-
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Temp fix :
If you are implementing a symlink to that file in another directory, that may be causing issues with Suricata unpacking and copying the database. Remove your symlink completely, clean out the Suricata GeoLite2 DB directory and then run this command from a shell prompt:
php /usr/local/pkg/suricata/suricata_geoipupdate.php
Then check the system log and the
suricata.log
file for the interface. You should see a successful download. Restart Suricata on the interface and it should be good. The 4.1.6_2 version of the Suricata package fixes the GeoLite2 database corruption issue. I tested it several times to be sure. -
@bmeeks said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Temp fix :
If you are implementing a symlink to that file in another directory, that may be causing issues with Suricata unpacking and copying the database. Remove your symlink completely, clean out the Suricata GeoLite2 DB directory and then run this command from a shell prompt:
php /usr/local/pkg/suricata/suricata_geoipupdate.php
Then check the system log and the
suricata.log
file for the interface. You should see a successful download. Restart Suricata on the interface and it should be good. The 4.1.6_2 version of the Suricata package fixes the GeoLite2 database corruption issue. I tested it several times to be sure.Hi bmeeks, thank you !
ok, let's go !
After removed all db files in suricata DB directory :php /usr/local/pkg/suricata/suricata_geoipupdate.php
Suricata log :
Failed to open GeoIP2 database: /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb. Error was: The MaxMind DB file contains invalid metadata. GeoIP rule matching is disabled.
suricata package removed :
>>> Removing pfSense-pkg-suricata... Checking integrity... done (0 conflicting) Deinstallation has been requested for the following 1 packages (of 0 packages in the universe): Installed packages to be REMOVED: pfSense-pkg-suricata-4.1.6_2 Number of packages to be removed: 1 [1/1] Deinstalling pfSense-pkg-suricata-4.1.6_2... Removing suricata components... Menu items... done. Services... done. Loading package instructions... [1/1] Deleting files for pfSense-pkg-suricata-4.1.6_2: .......... done Removing suricata components... Configuration... done. >>> Removing stale packages... done. Success
directory /suricata/GeoLite2/ :
ls /suricata/GeoLite2: No such file or directory ls /suricata: No such file or directory
No directory, no files, no links.
After reinstall suricata /usr/local/share/suricata/GeoLite2 :
ls -lrT GeoLite2/ total 2084 -rw-r--r-- 1 root wheel 32 Jan 19 20:56:35 2020 GeoLite2-Country.mmdb.tar.gz.md5 -rw-r--r-- 1 root wheel 2076656 Jan 19 20:56:37 2020 GeoLite2-Country.mmdb
Just one link "1" for suricata GeoLite2-Country.mmdb after unzipped :
DB time and day : Jan 19 20:56:37 2020Now i check the pfBlokerNG DB file :
ls -l GeoLite2-Country.mmdb -rw-r--r-- 1 root wheel 4035535 Jan 7 00:45 GeoLite2-Country.mmdb
Just one link "1".
DB time and day : Jan 7 00:45:59 2020They are no symlink for this pfblockerNG DB file,
this DB file is different to suricata DB in days and times.Suricata log after install :
Failed to open GeoIP2 database: /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb. Error was: The MaxMind DB file contains invalid metadata. GeoIP rule matching is disabled.
Ok, no problem, let's do the trick.
After removing all suricata DB files in /usr/local/share/suricata/GeoLite2/ :rm GeoLite2* ls
I create a physical link from pfblockerNG DB file to suricata DB directory :
cd /usr/local/share/GeoIP ln GeoLite2-Country.mmdb /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb
Now, the pfBlokerNG DB has two links (2):
ls -l GeoLite2-Country.mmdb -rw-r--r-- 2 root wheel 4035535 Jan 7 00:45 GeoLite2-Country.mmdb
Suricata log after restart :
0 rules failed engine started.
GeoIP rules working fine.
-
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
-rw-r--r-- 1 root wheel 2076656 Jan 19 20:56:37 2020 GeoLite2-Country.mmdb
From the size I guessed that the mmdb is still in a tar format :
tar -tvf /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb drwxr-xr-x 0 0 0 0 Jan 15 09:22 GeoLite2-Country_20200114/ -rw-r--r-- 0 0 0 398 Jan 15 09:22 GeoLite2-Country_20200114/LICENSE.txt -rw-r--r-- 0 0 0 55 Jan 15 09:22 GeoLite2-Country_20200114/COPYRIGHT.txt -rw-r--r-- 0 0 0 4083997 Jan 15 09:22 GeoLite2-Country_20200114/GeoLite2-Country.mmdb
-
@RonpfS said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
-rw-r--r-- 1 root wheel 2076656 Jan 19 20:56:37 2020 GeoLite2-Country.mmdb
From the size I guessed that the mmdb is still in a tar format :
tar -tvf /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb drwxr-xr-x 0 0 0 0 Jan 15 09:22 GeoLite2-Country_20200114/ -rw-r--r-- 0 0 0 398 Jan 15 09:22 GeoLite2-Country_20200114/LICENSE.txt -rw-r--r-- 0 0 0 55 Jan 15 09:22 GeoLite2-Country_20200114/COPYRIGHT.txt -rw-r--r-- 0 0 0 4083997 Jan 15 09:22 GeoLite2-Country_20200114/GeoLite2-Country.mmdb
This is your suricata V4.1.6_2 db file size ?
-
Yes
ls -al /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb -rw-r--r-- 1 root wheel 2076656 Jan 18 18:51 /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb
-
@RonpfS
ok, i will try to remove Suricata completely, package and backup config and reinstall it.Thank's RonpfS
-
@RonpfS said in Suricata v4.1.6_1 - Package update Release Notes:
Yes
ls -al /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb -rw-r--r-- 1 root wheel 2076656 Jan 18 18:51 /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb
Your suricata db file zise is the same as mine after downloading,
do you have the same error log in suricata log for Geoip db ? -
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Your suricata db file zise is the same as mine after downloading,
Yes it comes from the same server. So GeoLite2-Country_.mmdb is in fact GeoLite2-Country_20200114.mmdb.tar.gz
-
@RonpfS said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
Your suricata db file zise is the same as mine after downloading,
Yes it comes from the same server. So GeoLite2-Country.mmdb is in fact GeoLite2-Country.mmdb.tar.gz
you have the same problem as me with this db file ?
-
Yes it look the same. So until @bmeeks find what's wrong, disable GeoIP update in Suricata use the pfblockerNG one
mv /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb.tar.gz ln -s /usr/local/share/GeoIP/GeoLite2-Country.mmdb /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb
-
@RonpfS said in Suricata v4.1.6_1 - Package update Release Notes:
@jm1384 said in Suricata v4.1.6_1 - Package update Release Notes:
-rw-r--r-- 1 root wheel 2076656 Jan 19 20:56:37 2020 GeoLite2-Country.mmdb
From the size I guessed that the mmdb is still in a tar format :
tar -tvf /usr/local/share/suricata/GeoLite2/GeoLite2-Country.mmdb drwxr-xr-x 0 0 0 0 Jan 15 09:22 GeoLite2-Country_20200114/ -rw-r--r-- 0 0 0 398 Jan 15 09:22 GeoLite2-Country_20200114/LICENSE.txt -rw-r--r-- 0 0 0 55 Jan 15 09:22 GeoLite2-Country_20200114/COPYRIGHT.txt -rw-r--r-- 0 0 0 4083997 Jan 15 09:22 GeoLite2-Country_20200114/GeoLite2-Country.mmdb
ok
your are right about untar archive, wait and see if @bmeeks can resolve this issue. -
I promise this was working correctly when I tested prior to submitting the pull request. Let me do a fresh install in a test VM to see what's happening.
-
@bmeeks I upgraded on Jan 18.
To be on the safe side, I uninstalled and installed 1 hour ago. same results.total 1994 drwxr-xr-x 2 root wheel 4 Jan 19 18:25 . drwxr-xr-x 4 root wheel 4 Jan 19 18:25 .. -rw-r--r-- 1 root wheel 2076656 Jan 19 18:25 GeoLite2-Country.mmdb -rw-r--r-- 1 root wheel 32 Jan 19 18:25 GeoLite2-Country.mmdb.tar.gz.md5