# Webmin

Webmin is a web-based server management control panel for Unix-like systems. Webmin allows the user to configure operating system internals, such as users, disk quotas, services and configuration files, as well as modify and control open-source apps, such as BIND, Apache HTTP Server, PHP, and MySQL.

## History

Webmin, written by Jamie Cameron, was first released as version 0.1 in October 1997. It was originally written during the time that Cameron administered a DNS server and needed an easy-to-use interface to allow users to make changes to the DNS records without giving them root access to the server. Over time, various themes, a dashboard that displays CPU, RAM, and disk space usage with visual gauges, and a sidebar with a search function were also added.
Financial support for the Webmin project came from the Linux distribution companies Caldera and MSC Linux, as well as many user contributions of code patches, hundreds of modules, language translations, and user suggestions.
In 2019, a backdoor was discovered which would allow a remote attacker to execute malicious commands with root privileges on the machine running Webmin. This backdoor exploit was present on versions 1.882-1.921, when a network admin would enable the password expiration policy. Developers of Webmin believed that the backdoor being introduced was the result of a malicious injection to the code via the online source code repository SourceForge.
Since its release, the Webmin user interface, its appearance, and its many features have changed dramatically using code that has been completely rewritten over the subsequent versions.This includes the overhaul brought by Webmin 2.0, which enforced strict HTTP Strict Transport Security policy for SSL, and gave options to users upgrading from older versions.

## General description

Webmin is largely based on Perl, running as its own process and web server. It defaults to TCP port 10000 for communicating, and can be configured to use SSL if OpenSSL is installed with additional required Perl modules. Webmin is built around over 110 standard modules, which have an interface to the configuration files and the Webmin server, which makes it simple to add new functionality. Due to Webmin's modular design, it is possible for anyone who is interested to write plugins for desktop configuration. Webmin allows for controlling many machines through a single interface, or seamless login on other Webmin hosts on the same subnet or LAN.
Webmin is released under the BSD license.
If a plugin for certain tasks is not available, it is possible to open a terminal and perform various task through a command line interface (CLI). This is especially useful if using SSH (or similar) is not an option.

## Inclusion in distributions

While Webmin was included in the official repositories of some Linux distributions (Debian and Ubuntu), it was removed from those because Webmin was not compatible with the way that the distributions' packages handled configuration files and caused unexpected issues with systems.

## Installation

Pre-requisite:
* System that supports Ubuntu 18.04 or Ubuntu 20.04
* User account with sudo privileges.
* Access to the terminal window.
To install Webmin on Ubuntu 18.04 or 20.04, first we need to update the package list with sudo apt update && sudo apt upgrade -y, then install necessary dependencies with sudo apt install software-properties-common apt-transport-https -y. When the dependencies installations has been finished then add Webmin’s GKP key and repository using wget -q -O- | sudo apt-key add - and sudo add-apt-repository "deb [arch=amd64] sarge contrib".
Next, proceed with installation of Webmin using sudo apt install webmin –y and verify the installation using sudo systemctl status webmin.
After installation is finished, configure the firewall to allow Webmin’s default TCP port 10000 using the command sudo ufw allow 10000/tcp && sudo ufw reload.
In-case, UFW is disabled, enable it using sudo ufw enable. Open a browser and insert https://[your-server-IP]:10000/ to access the Webmin. By default, Webmin generate its own self-signed certificate, so the browser may warn you “Your connection is not private”, click on Advanced and proceed. After that login using the system’s root credentials.
For security purposes, change the Webmin root password using sudo /usr/share/webmin/changepass.pl /etc/webmin root [new password]. After successful login, the Webmin dashboard can be accessed with features like system logs, user accounts, updates and configurations.

## Related software

Webmin can be expanded by installing modules, which can be custom made. Aside from this, there are two other major projects that extend the functionality of Webmin:
* Usermin presents and controls a subset of the features available in Webmin, such as webmail and other user-level tasks, rather than administrator-level tasks.
* Virtualmin, which is a web hosting control panel. Virtualmin enables users to host websites under domains, and gives the server admin and the end user a simple interface for managing their websites.
Webmin released Minecraft Server Module 1.0 in January 2013, and version 1.1 in March 2013. The module presents a very basic GUI for server administration. The Webmin Minecraft server is free and open source with no limitations on simultaneous players.