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