In order to support more secure configuration, we propose a Proxy/Reverse Proxy for R66 protocol.
This software does not need any database (less risk). Its configuration stores no password or information on what is proxified, except their addresses and the log is minimalist.
This module will be with the folowing constraints:
Known limitations:
By installing a Proxy R66 server, it will forward in both ways requests directly to external or internal R66 servers.
The interest is to have a minimalist R66 server in DMZ, with no configuration that could be a source of attack. The drawback is that no control is made within this Proxy R66 server, meaning that the packet are just transmistted as is to the internal or external R66 partner. However, if some attacks as deny of service are made, this will be probably the first level of catch, then enhancing the security level of the R66 solution.
The configuration is made by pair, meaning that each listening interface (address, port, ssl mode) is linked to one and only one proxified interface (address, port, ssl mode). Therefore, let say that on internal side we have a R66 server named A, on external side a R66 server named B, the configuration will be as follow:
Therefore, in A, the configuration to access to B is made through address/port/SSL mode defined in B', while the remote partner B will access to A through address/port/SSL mode defined in A'.
So if you want that all outside clients will be able to reach one particular server of yours inside, you need to setup only one path (knowing clients could do either SEND or RECV transfers). Reversely if you want to be able to reach from inside multiples partner servers (say n), then you will have to define one route for each, so n routes.
Proxy server is started and stopped as a R66 server (command line is java ... classpath ... java options .... config-proxy.xml).
It contains a specific administrator and a specific configuration file, close to R66 standard ones, but will less functionalities.
In the configuration file, the following are specific to proxy configuration, in <network> module:
<serverproxy>
<serverlistenaddr>aaa</serverlistenaddr>
this specified the local address used by the proxy to listen to incoming connections that will be proxified to the remote address
<serverlistenport>port1</serverlistenport>
this specified the local port in conjunction to the local address
<serverlistenssl>bool1</serverlistenssl>
this specified if this connector is using SSL or not
<serverremoteaddr>bbb</serverremoteaddr>
this specified the remote address on which the proxy will forward the incoming connections
<serverremoteport>port2</serverremoteport>
this specified the remote port in conjunction to the remote address
<serverremotessl>bool2</serverremotessl>
this specified if the remote address is using SSL or not
</serverproxy>
Note the admin2 web site (in src/main/admin2) is a slightly modified version of the native R66 server.