| Title: Using a dedicated administration workstation for my | |
| infrastructure | |
| Author: Solène | |
| Date: 19 October 2024 | |
| Tags: security network | |
| Description: In this guide, I will explain how and why I started using | |
| a dedicated computer to administrate my infrastructure | |
| # Introduction | |
| As I moved my infrastructure to a whole new architecture, I decided to | |
| only expose critical accesses to dedicated administration systems (I | |
| have just one). That workstation is dedicated to my infrastructure | |
| administration, it can only connect to my servers over a VPN and can | |
| not reach the Internet. | |
| This blog post explains why I am doing this, and gives a high level | |
| overview of the setup. Implementation details are not fascinating as | |
| it only requires basics firewall, HTTP proxy and VPN configuration. | |
| # The need | |
| I wanted to have my regular computer not being able to handle any | |
| administration task, so I have a computer "like a regular person" | |
| without SSH keys, VPN and a password manager that does not mix personal | |
| credentials with administration credentials ... To prevent credentials | |
| leaks or malware risks, it makes sense to uncouple the admin role from | |
| the "everything else" role. So far, I have been using Qubes OS which | |
| helped me to do so at the software level, but I wanted to go further. | |
| # Setup | |
| This is a rather quick and simple explanation of what you have to do in | |
| order to set up a dedicated system for administration tasks. | |
| ## Workstation | |
| The admin workstation I use is an old laptop, it only needs a web | |
| browser (except if you have no internal web services), a SSH client, | |
| and being able to connect to a VPN. Almost any OS can do it, just pick | |
| the one you are the most conformable with, especially with regard to | |
| the firewall configuration. | |
| The workstation has its own SSH key that is deployed on the servers. | |
| It also has its own VPN to the infrastructure core. And its own | |
| password manager. | |
| Its firewall is configured to block all in and out traffic except the | |
| following: | |
| * UDP traffic to allow WireGuard | |
| * HTTP proxy address:port through WireGuard interface | |
| * SSH through WireGuard | |
| The HTTP proxy exposed on the infrastructure has a whitelist to allow | |
| some fqdn. I actually want to use the admin workstation for some | |
| tasks, like managing my domains through my registrar web console. | |
| Keeping the list as small as possible is important, you do not want to | |
| start using this workstation for browsing the web or reading emails. | |
| On this machine, make sure to configure the system to use the HTTP | |
| proxy for updates and installing packages. The difficulty of doing so | |
| will vary from an operating system to another. While Debian required a | |
| single file in `/etc/apt/apt.conf.d/` to configure apt to use the HTTP | |
| proxy, OpenBSD needed both `http_proxy` and `https_proxy` environment | |
| variables, but some scripts needed to be patched as they do not use the | |
| variables, I had to check fw_update, pkg_add, sysupgrade and syspatch | |
| were all working. | |
| Ideally, if you can afford it, configure a remote logging of this | |
| workstation logs to a central log server. When available, `auditd` | |
| monitoring important files access/changes in `/etc` could give precious | |
| information. | |
| ## Servers | |
| My SSH servers are only reachable through a VPN, I do not expose it | |
| publicly anymore. And I do IP filtering over the VPN, so only the VPN | |
| clients that have a use to connect over SSH will be allowed to connect. | |
| When I have some web interfaces for services like Minio, Pi-Hole and | |
| the monitoring dashboard, all of that is restricted to the admin | |
| workstations only. Sometimes, you have the opportunity to separate the | |
| admin part by adding a HTTP filter on a `/admin/` URI, or if the | |
| service uses a different port for the admin and the service (like | |
| Minio). When enabling a new service, you need to think about all the | |
| things you can restrict to the admin workstations only. | |
| Depending on your infrastructure size and locations, you may want to | |
| use dedicated systems for SSH/VPN/HTTP proxy entry points, it is better | |
| if it is not shared with important services. | |
| ## File exchange | |
| You will need to exchange data to the admin workstation (rarely the | |
| other way), I found nncp to be a good tool for that. You can imagine a | |
| lot of different setup, but I recommend picking one that: | |
| * does not require a daemon on the admin workstation: this does not | |
| increase the workstation attack surface | |
| * allows encryption at rest: so you can easily use any deposit system | |
| for the data exchange | |
| * is asynchronous: as a synchronous connection could be potentially | |
| dangerous because it establishes a link directly between the sender and | |
| the receiver | |
| Previous blog post: Secure file transfer with NNCP | |
| # Conclusion | |
| I learned about this method while reading ANSSI (French cybersecurity | |
| national agency) papers. While it may sound extreme, it is a good | |
| practice I endorse. This gives a use to old second hand hardware I | |
| own, and it improves my infrastructure security while giving me peace | |
| of mind. | |
| ANSSI website (in French) | |
| In addition, if you want to allow some people to work on your | |
| infrastructure (maybe you want to set up some infra for an | |
| association?), you already have the framework to restrict their scope | |
| and trace what they do. | |
| Of course, the amount of complexity and resources you can throw at this | |
| is up to you, you could totally have a single server and lock most of | |
| its services behind a VPN and call it a day, or have multiple servers | |
| worldwide and use dedicated servers to enter their software defined | |
| network. | |
| Last thing, make sure that you can bootstrap into your infrastructure | |
| if the only admin workstation is lost/destroyed. Most of the time, you | |
| will have a physical/console access that is enough (make sure the | |
| password manager is reachable from the outside for this case). |