abefroman wrote:Nice graphic! That definately makes more sense now.
Since I am using
$InputTCPServerStreamDriverAuthMode anon
Do I want to setup and ACL for which hosts can send TCP traffic on port 10514 to my server?
Well... the real solution is to drop anon mode. It is in the howto because it was the first mode rsyslog supported (3.19.0). At that time, it was obviously the best (because only) option. But that changed soon. We now have full-fledged authentication and anon should not be used in regular cases. You should go for x509/name and check the names on both the client and server. For the sample with the graphic, this is something along these lines (but beware, this is not coming from lab and may fail for one reason or the other, I can not test it right now, no lab at hand at this time):
Server:
$InputTCPServerStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer *.example.net
This allows any host from the example.net domain, if (and only if) it's certificate was signed by the CA.
Client:
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer contral.example.net
This makes sure that the client can talk to the central server only. A man in the middle, for example, is detected and the client will refuse to send it data.
With these two directives, you have a fairly secure setup. It is the one described in the paper.
Note that there are different authentication modes, most notably certificate fingerprints. In addition to this, you can also use $AllowedSender to permit only some IPs and/or firewall rules. If you use certificates, I'd not use $AllowedSender but rather use firewall rules.
HTH
Rainer