Up to Main Index                              Up to Journal for June, 2018

                     JOURNAL FOR THURSDAY 21ST JUNE, 2018
______________________________________________________________________________

SUBJECT: WolfMUD and GDPR compliance updates
   DATE: Thu 21 Jun 22:04:13 BST 2018

Since my last entry I’ve been busy working on WolfMUD and GDPR compliance.

It is my personal understanding that it is permitted to log the connecting IP
address of clients, without consent, as long as the IP address is only used to
detect and prevent unauthorized access and to ensure the security of the
server. The GDPR basically states that ensuring security constitutes a
legitimate interest and that processing is lawful when pursuing a legitimate
interest. I am not a lawyer, this is only my interpretation — which also seems
to coincide with that of may other people’s interpretation[1].

However, I also realise that people may be uncomfortable logging IP addresses.
Hence the recent work I’ve been doing on WolfMUD.

What have I achieved so far?

A new Server.LogClient configuration option has been added. If set to true a
client’s IP address and port number will be logged:


  2018/06/20 19:01:55 [123] connection from 127.0.0.1:35574


If set to false these connections will not be logged. The configuration
defaults to false.

There is a new log package for connection specific logging. For example:


  2018/06/20 19:01:55 [123] connection from 127.0.0.1:35574
  2018/06/20 19:02:06 [123] Account login: 90d998………1e5643.wrj
  2018/06/20 19:02:15 [123] connection error: frontend closed
  2018/06/20 19:02:15 [123] connection closed


Here the connection specific sequence number is [123]. This allows us to
determine what happened during a client session, even if the IP address and
port number is not logged. The comms and frontend packages are using the new
per-connection logging. I still need to wrangle per-connection logging into
the cmd package, specifically into the state type, so that commands like SAVE
can use per-connection logging.

I hope to move existing code that deals with logging, such as setup code, into
the log package. For now it’s just connection specific logging to deal with
the GDPR.

I though I was nearly done, then testing dumped a fly into the ointment. Error
messages generated by the standard library can leak IP addresses and port
numbers. For example:


  connection error: write tcp 127.0.0.1:4001->127.0.0.1:4580: write: broken…


For messages such as these the IP address and port number are replaced with
the string ‘???’ when Server.LogClient is set to false. For example the above
becomes:


  connection error: write tcp 127.0.0.1:4001->???: write: broken pipe


I’ve only tested this using IPv4 as that is all I run. If anyone can confirm
with IPv6 addresses that would be very helpful: diddymus@wolfmud.org

Easiest way to test is: set a short Server.IdleTimeout, set Server.LogClient
to false, TELNET into the server, wait:


  connection error: read tcp 127.0.0.1:4001->???: i/o timeout


All of these changes are now on the public dev branch for people interested.

I want to get the cmd package using per-connection logging. I also want to do
some more testing and make really sure I’m happy with all these changes. Then
I guess I’ll do a v0.0.10 release :)

--
Diddymus

  [1] I’m not providing links or references to backup my interpretation. If
      you are at all concerned about the GDPR and compliance then please, do
      your own research.


  Up to Main Index                              Up to Journal for June, 2018