| 1 |
Server Hide Reference |
| 2 |
|
| 3 |
$Id$ |
| 4 |
|
| 5 |
Copyright (c) 2001-2020 ircd-hybrid development team |
| 6 |
|
| 7 |
---------------------------------------------------------------------- |
| 8 |
|
| 9 |
Due to pressures from abusers, the Hybrid developers have created a set of |
| 10 |
options to limit what users can and cannot do on the server. Each option |
| 11 |
can be enabled or disabled at runtime. |
| 12 |
|
| 13 |
This document describes the ircd-hybrid implementation of the server hiding |
| 14 |
ideas originated by (and credited to) numerous people. |
| 15 |
|
| 16 |
* LINKS as a file: This option is always enabled. It will generate a |
| 17 |
file at a certain interval, defined by the flatten_links_delay in |
| 18 |
ircd.conf, that contains the current LINKS data. This data is sent |
| 19 |
to users whenever a LINKS is requested. Opers will always see the |
| 20 |
current server structure. |
| 21 |
|
| 22 |
The file that the LINKS data is stored in is by default var/lib/links.txt. |
| 23 |
|
| 24 |
The benefits of this are that transient splits will not be seen by |
| 25 |
users issuing LINKS commands, and if a server is split, users can |
| 26 |
still see what other servers are normally available. |
| 27 |
|
| 28 |
* Flattened LINKS: This option forces every server to look as if it is |
| 29 |
connected to the local server. Users will see a flat LINKS tree. |
| 30 |
|
| 31 |
The benefit to using LINKS flattening is that users cannot get |
| 32 |
information on how servers are routed. |
| 33 |
|
| 34 |
The flatten_links in the serverhide {} block in the ircd.conf controls |
| 35 |
this feature. |
| 36 |
|
| 37 |
As a side effect, all netsplit quit messages will appear to originate |
| 38 |
from the local server. |
| 39 |
|
| 40 |
+--------------------------------------------------------------------+ |
| 41 |
| Flattened LINKS is needed for any network that uses the hidden hub | |
| 42 |
| option. See below for more details. | |
| 43 |
+--------------------------------------------------------------------+ |
| 44 |
|
| 45 |
* Hidden server option: This option will hide the server from a |
| 46 |
flattened LINKS list on other servers. Opers will of course see the |
| 47 |
true routing of the network. |
| 48 |
|
| 49 |
This is controlled by the hidden option in ircd.conf. |
| 50 |
|
| 51 |
+--------------------------------------------------------------------+ |
| 52 |
| Technically, this code is a hack. With this option enabled, the | |
| 53 |
| server will prepend '(H) ' to the server info field when | |
| 54 |
| connecting to other servers. Other servers must understand that | |
| 55 |
| the (H) means hidden. | |
| 56 |
+--------------------------------------------------------------------+ |
| 57 |
|
| 58 |
* The hide_servers option forces the server to not be shown when a user |
| 59 |
issues WHOIS and other commands which may show what server a user is |
| 60 |
on. |
| 61 |
|
| 62 |
Local user counts, as normally displayed in LUSERS, and the 255 |
| 63 |
numeric, will be shown with the same values as the global counts. |
| 64 |
Displaying it this way will help protect servers and avoid breaking |
| 65 |
scripts that depend on the 265 and 266 numerics on connect. |
| 66 |
|
| 67 |
To be effective, this option must be used network wide. |
| 68 |
|
| 69 |
* The disable_remote_commands option takes care of most of the remaining |
| 70 |
issues. These include, for example, "ADMIN some.hub.server", "VERSION |
| 71 |
someuser", and similar commands. A server with this option enabled will |
| 72 |
only prevent local users from issuing remote commands. Remote users |
| 73 |
will not be affected. |
| 74 |
|
| 75 |
Remote WHOIS is not blocked. It is, however, restricted to only |
| 76 |
querying WHOIS nick nick. The ircd will disregard the server parameter |
| 77 |
and always use queried nick. |
| 78 |
|
| 79 |
* All server modes appear to originate from the server you are using. |
| 80 |
This feature is not tunable; and opers also do not see the real server |
| 81 |
setting the mode. |
| 82 |
|
| 83 |
Each item is briefly described in the serverhide {} block in reference.conf. |
| 84 |
|
| 85 |
---------------------------------------------------------------------- |
| 86 |
|
| 87 |
Using Non-QS Compliant Hubs |
| 88 |
|
| 89 |
The flattened LINKS option will, as a side effect, display all user QUITs |
| 90 |
due to network splits in the following format: |
| 91 |
|
| 92 |
:user QUIT :*.net *.split |
| 93 |
|
| 94 |
This works extremely well as long as all servers on your network are |
| 95 |
compliant with the QS capability, which sends a single SQUIT to the |
| 96 |
network when a server (or tree of servers) splits. All quit messages are |
| 97 |
generated on the local server. Certain older servers do not have this |
| 98 |
ability, and as such will generate their own quit messages for users who |
| 99 |
left because of the split. This can cause leaks in the hub server names |
| 100 |
and the structure of the network. |
| 101 |
|
| 102 |
A quick example is the following network structure: |
| 103 |
|
| 104 |
servA(Hyb7) --- hubA(nonQS) --- servB(not-important) |
| 105 |
|
| 106 |
When servB splits from hubA, hubA will generate a QUIT command for every |
| 107 |
user on servB (and anything behind servB). Since the QUIT message was not |
| 108 |
created on your server, with server hiding enabled, the QUIT message will |
| 109 |
contain the real server names. |
| 110 |
|
| 111 |
The only way to prevent this leak on a network is to only use hubs |
| 112 |
supporting the QS capability. Hybrid 6 (and above) and csircd all are |
| 113 |
currently running daemons that support QS. Hybrid 5 and 2.8.21+CSr servers |
| 114 |
do not support QS, and will leak server names (and therefore routing |
| 115 |
information) on splits. |