DirectAdmin (DA) is een veelgebruikt beheersysteem op Linux-systemen. En terecht, want het is zeer gebruikersvriendelijk en compleet. Zeker in combinatie met Installatron. Maar in de bekendheid van DirectAdmin schuilt ook een gevaar. Eventuele kwaadwillenden (zijn die er dan?) weten hoe het systeem werkt. Daarom heb ik enkele maatregelen genomen en een paar daarvan wil ik met jullie delen. Voor alle aanpassingen geldt uiteraard dat je eerst een snapshot moet maken als extra backup.
Schakel root-access uit
Standaard wordt CentOS al geleverd zonder directe root access. Je kunt dus niet zondemeer via SSH inloggen van buitenaf, alleen via een ander account. Dus log in met een bestaand account (met weinig rechten) en gebruik het ‘su’ commando samen met een degelijk root-wachtwoord om root-access te verkrijgen. Zo vaak hoef je dankzij DirectAdmin nou ook weer niet als root in te loggen.
Gebruik sowieso nooit algemene accountnamen zoals info, mail, server oid. Maak de accountnaam al lang en specifiek en gebruik altijd een degelijk wachtwoord.
Suspend het Admin account
In DirectAdmin is er altijd een gebruiker Admin, lekker makkelijk voor hackers dat ze de naam alvast weten. Je kunt die naam niet eenvoudig wijzigen, althans ik niet. Wat ik heb gedaan is een nieuwe admin aanmaken met een naam die al bijna een wachtwoord is, met natuurlijk ook een sterk wachtwoord. Daarna heb ik de Admin van DA op suspended gezet, zorg wel dat je dit doet voordat je websites aanmaakt, of draag je websites eerst over aan de nieuwe Admin.
Schakel SSH uit voor websites die het niet nodig hebben
Of beter nog, schakel het aan voor sites die het wel nodig hebben. Ik heb dat gedaan door dat in te stellen in de standaard Reseller package. Nieuwe sites erven die package-instellingen.
Zorg dat je DirectAdmin enkel gebruikt via SSL
DirectAdmin gebruiken via SSL is erg belangrijk. Zonder SSL is het verkeer van jouw browser naar je server leesbaar door eventuele men-in-the-middle. Daarom is het slim om DirectAdmin alleen via SSL te gebruiken. Onderstaande werkwijze zorgt er ook voor dat apache, dovecot, exim en ftp via SSL gaan werken (bron).
- maak verbinding als root (via Putty)
- Zorg dat je voor server.domain.com jouw server-url neemt die DirectAdmin gebruikt!
- Voer de volgende commando’s uit:
cd /usr/local/directadmin/scripts
./letsencrypt.sh request server.domain.com 4096
cd /usr/local/directadmin/conf
perl -pi -e 's/SSL=0/SSL=1/' directadmin.conf
echo "carootcert=/usr/local/directadmin/conf/carootcert.pem" >> directadmin.conf
echo "force_hostname=server.domain.com" >> directadmin.conf
echo "ssl_redirect_host=server.domain.com" >> directadmin.conf
cd /usr/local/directadmin
./directadmin restart
Je kunt nu naar je server door voor het adres https:// te typen.
Zorg dat je DirectAdmin via een andere poort gebruikt dan de standaard poort
Standaard bereik je DirectAdmin via poort 2222. Het is een goed idee om een andere poort te gebruiken. Kwaadwillenden kunnen natuurlijk eenvoudig een poortscan uitvoeren en zo jouw alternatieve poort vinden, maar alle kleine beetjes helpen.
Als je net als ik CentOS 7 hebt en er is een firewall geïnstalleerd, dan is de poort aanpassen in DirectAdmin onvoldoende; de nieuwe poort zal wordt tegengehouden door de firewall. Je moet dus de nieuwe poort openzetten en later de standaard poort 2222 dichtzetten. De eerste stap gaat zo:
- Maak contact als root (met Putty)
- Bekijk welke poorten open staan vanaf buiten:
firewall-cmd --zone=public --list-all
- Voeg de nieuwe poort toe:
firewall-cmd --permanent --zone=public --add-port=1234/tcp
(1234 mag een andere poort zijn, die jij kiest)
- Zorg dat de firewall deze nieuwe instellingen gaat gebruiken:
firewall-cmd --reload
Instellen van een andere poort in DirectAdmin gaat (vreemd genoeg) het makkelijkst via DirectAdmin zelf.
- Log in op DirectAdmin als (een) admin
- Klik in het menu op File Editor
- Open in het dropdownmenu ‘/usr/local/directadmin/conf/directadmin.conf’
- Klik op Open File
- Vul het root wachtwoord van je VPS onderaan het scherm in.
- Zoek naar de regel ‘port=2222’, verander het portnummer, bijvoorbeeld in ‘1234’
- Klik op Save
- Het werkt pas wanneer DirectAdmin is herstart; klik op Home
- Klik op Service Monitor
- Klik op Restart op de regel van DirectAdmin
- Binnen 1 minuut zal DirectAdmin beschikbaar zijn via de ingestelde poort.
Als je dit niet wilt doen met DirectAdmin, het kan ook met WinSCP. Bijvoorbeeld omdat je na bovenstaande actie niet meer bij je DirectAdmin kunt, bijvoorbeeld vanwege een firewall. (been there…)
- Maak contact met je server als root met WinSCP
- Zoek naar het bestand ‘/usr/local/directadmin/conf/directadmin.conf’
- Pas de poort aan en sla op
- Ga nu naar Putty en log in als root
- Stop en start DirectAdmin:
killall -9 directadmin
cd /usr/local/directadmin
./directadmin d
Als je bij de eerste stap de nieuwe poort hebt opengezet en je hebt nu getest dat de nieuwe poort werkt, dan wil je misschien de oude poort (2222) weer netjes dichtzetten in de firewall. Dat gaat zo:
- Sluit de oude poort:
firewall-cmd --permanent --zone=public --remove-port=2222/tcp
- Zorg dat de firewall deze nieuwe instellingen gaat gebruiken:
firewall-cmd --reload
- Test of het is gelukt:
firewall-cmd --zone=public --list-all
Als het goed is zie je nu de nieuwe poort wèl en de oude poort nièt in het rijtje.
- Log in op DirectAdmin via de nieuwe poort voor een laatste controle.