Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Captive Portal Sessions - Technical Data Storage - GDPR compliance #8304

Open
2 tasks done
K-razy opened this issue Feb 10, 2025 · 5 comments
Open
2 tasks done

Captive Portal Sessions - Technical Data Storage - GDPR compliance #8304

K-razy opened this issue Feb 10, 2025 · 5 comments
Labels
support Community support

Comments

@K-razy
Copy link

K-razy commented Feb 10, 2025

Important notices

Our forum is located at https://forum.opnsense.org , please consider joining discussions there in stead of using GitHub for these matters.

Before you ask a new question, we ask you kindly to acknowledge the following:

Hi,
Hope you are fine.

OPNsense has such a good captive portal we wanted to use, to provide public Internet access to our guests.
To be GDPR compliant, we supposed to keep for 1 year technical information such as client IP addresss, mac adress, etc...

In the WEB UI, https://OPNsenseIPaddress/ui/captiveportal/session we have the perfect data we would like to keep.

After few analysis we found that these data are kept only during the session in a sqlite database.
But once the session is deleted, all the data is gone.

Is there any way to keep the data ? or give us a choice to store them in a file or in a remote database (like mysql) ?

Thanks in advance for your lights regarding this request :)

Best Regards

@K-razy K-razy added the support Community support label Feb 10, 2025
@Monviech
Copy link
Member

You could check: "System: Settings: Logging"

And set a remote syslog target for the Application "portalauth (captive portal)"

See if that contains the data you need.

@K-razy
Copy link
Author

K-razy commented Feb 10, 2025

@Monviech Thanks for your answer,

We already tried and it's like the local file : there is no enough data to keep
The database sqlite way more useful

@Monviech
Copy link
Member

Maybe the simplest way would be to periodically create an sqlite backup file and then rsync it someplace else. This could be done with sqlite3, rsync and cron.

@Sibul2k
Copy link

Sibul2k commented Feb 11, 2025

The suggested solution with a rolling regular backup won't work, as you would need a backup every minute or so and a process to merge the changes in previous databases to an daily one. Kinda complicated.

For an workaround: You may change the database to an radius and log those logs.

But: Depending on regular state/country laws, you do not have to log this at all or way shorter than one year, like a month. If you already verified with your local regulations, please just ignore this. But generally speaking, this is false in most cases.

@K-razy
Copy link
Author

K-razy commented Feb 12, 2025

@Monviech Thanks again for your reply :)

The thing I was wondering : how often should I sync the sqlite file ?
It should be very often like every 30 seconds and then transfer and immediately update in the other database

We tried to look the behaviour with two kind of sessions :

  • The first one, was a long session so the data are available enough to periodically backup the file (like every 5 minutes)
  • The second one, was a short session : the data was also available in the same base, but once the session has been disconnected, all data is deleted.

So in this case, if the periodicity of the backup is not long enough, we won't even be aware about this second session.
And we are in France so the GDPR is mandatory for us saying that if we like to provide a public Wi-Fi we must collect and store for a year these technical data :( ...

@Sibul2k Thanks for your answer too :)
We already tried Radius logging and Accounting, but some fields are missing like :

  • Calling-Station-Id (which represent client MAC address)
  • OPNsense is unfortunately not using Gigawords to collect the amount of data used by a visitor (Acct-Input-Octets and Acct-Output-Octets are limited to 4Go. These fields reset to zero automatically when the value hit more than 4 Gb )

The sqlite database has exactly all the data we need, unfortunately, all data is deleted without historical purpose.

Thanks again for your time in this case.

Best Regards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
support Community support
Development

No branches or pull requests

3 participants