Installing using Webmin
Webmin provides more than just some webforms, it is part of a fully rounded virtualization and cloud platform. Virtualmin and Cloudmin are used to create complex networks, and they install on top of a brand new BIND instance. Webmin is the glue holding the networks together by installing its own perl-based web services, the standard GNU/Linux technology stack, using ssh and making remote procedure calls (RPC). By adding its own schema to OpenLDAP it supports fine-grained privileges, it has build in support for file-based virtualization and more. Webmin is libre while Virtualmin and Cloudmin are the support-subscriptions keeping www.virtualmin.com in business.
Requirements
- Internet Standards (RFCs) require 2 but recommend 3 BIND instances, on 2 independent networks (I use and recommend Linode and OVH).
- Both IP4 and IP6 must be configured, Reverse DNS hostnames recommended. Port 53 for both TCP and UDP must be open (also TCP 22, 10000 for ssh and Webmin).
The following describes the required state of the VPS - before installing DNS. You may use other than Linode for this but be advised that other providers such as GCE, AWS, DigitalOcean might NOT going to allow for all necessary criteria (GCE does not provide IP6 with rDNS, for example).
Here we start from a recent Debian release by Linode. At the time of writing that is Debian 9, and we recommend you install the smallest “Nanode 1GB RAM” instance.
- Do not use ssh keys for now, install with a strong root password.
- Buy the backup for this Linode, and use the snapshot before each Debian upgrade.
- Review the values in the “Notification Thresholds” to be alerted during attacks.
This is not a tutorial on mitigating attacks against your instance, and secure configuration is not going to alter the requirements: you may later replace the root login with another, configure ssh keys, install a different firewall, change default ports, filter for login source IP, limit the number of attempts, etc… Here we create a functional node and leave the rest to a different section on this wiki.
apt-get -y update apt-get -y install nano apt-transport-https tzdata dnsutils apt-get -y install locales locale-gen "en_US.UTF-8" dpkg-reconfigure tzdata
Setting up a firewall at this point is optional, it might be a better idea to delay this. If you decide to do so, here is a quick way to do it - but this is not yet tested and verified to be working.
apt-get install firewalld firewall-cmd --add-service=https --permanent firewall-cmd --add-port=22/tcp --permanent firewall-cmd --add-port=10000-10100/tcp --permanent firewall-cmd --add-port=53/tcp --permanent firewall-cmd --add-port=53/udp --permanent firewall-cmd --add-service=dns --permanent firewall-cmd --reload
Next install webmin.
echo 'deb https://download.webmin.com/download/repository sarge contrib' | sudo tee -a /etc/apt/sources.list.d/sources.list wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc apt-get update apt-get -y install webmin
This is a good time to take your first snapshot. Access your instance from the browser, by the IP4 address, at the default port 10000. I would recommend to continue all other installation and configuration from Webmin, for several reasons.
- If something breaks allow Webmin to break it, and fixing it is going to be documented.
- If something is not fully functional make a note of it NOW - document your own progress
- If something is not available make a note of it NOW - and ask to be implemented
Configuration
NOTE: The screenshots are made on Ubuntu MATE, using the MATE terminal set to size 132×43 - and Firefox resized to match the outline. Then Firefox is zoomed to 80% to provide enough screen real estate. An ALT+PrintScreen captures the Firefox window, the screenshot is uploaded. Not very sophisticated but it is consistent and very quick.
Debian 9 with Webmin 1.9xx
One reason to use Webmin is to stay consistent with the default GNU software for the Debian distribution. With Debian 9 I made the choice to use firewalld - which is only my personal preference, as the default Debian 9 firewall is ufw. Since Webmin fully supports firewalld, and while uwf still needs to be managed from the root shell, this makes sense. Please send a message to the list, or better yet update this wiki with a better solution.
In the case when you do, and in the future when Debian 10 and Webmin 2.0 becomes relevant please document those configurations below, under a new section. For the Debian 9 with Webmin 1.9xx the defaults are documented here.
To add the configurations for a Tier-1 is documented here, and for a Tier-2 is documented here. Your security options available by the VPS Provider (which is Linode) is detailed here. Of course, security measures implemented on the VPS slice itself shall never be documented online - the less the attackers know the better.
There is nothing else worth mentioning for this Debian / Webmin combination.