Tips en Trucs 2013

Eenvoudige tips om een Linux webserver te beschermen

Voor het ogenblik werk ik aan de Educatieve webserver. Deze webserver wordt gebruikt in leeromgevingen binnen een LAN netwerk. Daar deze server geen verbinding heeft met het internet, heb ik geen energie gestopt in het beveiligen tegen aanvallen vanuit het internet. De nadruk ligt vooral op gebruiksvriendelijkheid in klas en thuis. Zo gebruik ik voor alle gebruikers en diensten hetzelfde wachtwoord (wat in beveiligingskringen een doodzonde is).

Linux servers die hun diensten op het internet aanbieden, kan je tegen aanvallen beschermen met hulp van een paar eenvoudige trucs. Op een standaard Linux systeem kan je je aanmelden als root gebruiker. Het uitschakelen van het aanmelden als root gebruiker is een eerste goede stap. Gebruik voor de overdracht van bestanden SFTP in plaats van FTP. Het voornaamste verschil tussen SFTP en FTP is dat FTP de wachtwoorden en bestanden leesbaar verzonden worden, SFTP verzendt de wachtwoorden en bestanden versleuteld, waardoor ze indien ze onderschept worden onleesbaar zijn.

Maak gebruik van een root gebruiker

Het pakket sudo laat toe om gewone gebruikers opdrachten te laten uitvoeren die normaal enkel door de gebruiker root kunnen uitgevoerd worden. Een gebruiker met root mogelijkheden noemen we een root gebruiker. Op de meeste Linux systemen is sudo standaard geïnstalleerd. Als het configuratiebestand /etc/sudoers op uw systeem aanwezig is, is het pakket sudo geïnstalleerd.

Om een gewone gebruiker root opdrachten te laten uitvoeren, voeg je deze met een editor toe aan het /etc/sudoers configuratiebestand (bijvoorbeeld met de opdracht sudo joe /etc/sudoers).

## In the default (unconfigured) configuration, sudo asks for the root password.
## This allows use of an ordinary user account for administration of a freshly
## installed system. When configuring sudo, delete the two
## following lines:
## Schakel de volgende twee regels uit om zelf een gebruiker met root
## mogelijkheden aan te duiden
# Defaults targetpw   # ask for the password of the target user i.e. root
# ALL   ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

##
## Runas alias specification
##

##
## User privilege specification
##
root ALL=(ALL) ALL
## De volgende regel maakt van dany een gebruiker met root mogelijkheden
dany ALL=(ALL) ALL

Opgelet: Als je in dit configuratiebestand een fout maakt, kan je na het opslaan van het configuratiebestand geen gebruik meer maken van sudo opdrachten. In zo'n geval gebruik je de opdracht su om in een root omgeving te werken. Na het opgeven van het root wachtwoord kan je het /etc/sudoers configuratiebestand met een editor aanpassen (bijvoorbeeld met de opdracht joe /etc/sudoers). Na het aanpassen en opslaan van het /etc/sudoers configuratiebestand verlaat je de root omgeving met de opdracht exit.

Bij openSUSE 12.3 hebben alle gebruikers standaard de mogelijkheid om via sudo opdrachten met root mogelijkheden uit te voeren (op voorwaarde dat ze het root wachtwoord kennen). Om dit uit te schakelen, moet je de regels met de opties Defaults targetpw en ALL ALL=(ALL) ALL uitschakelen (in commentaar plaatsen) of verwijderen. Zie voorbeeld hierboven.

De laatste regel in het voorbeeld hierboven zorgt dat de gebruiker dany via sudo opdrachten met root mogelijkheden kan uitvoeren. Daarbij moet de gebruiker dany een op het systeem bestaande gebruiker zijn. In het voorbeeld is de gebruikersnaam niet zo goed gekozen, veilige gebruikersnamen moeten aan dezelfde veiligheidscriteria voldoen als wachtwoorden. De gebruikersnaam uMbUx8dK is een voorbeeld van een veilige gebruikersnaam.

De aanpassingen aan /etc/sudoers worden direct na het opslaan van toepassing (actief) (zie Opgelet). Zorg dus dat sudo werkt zoals je wilt voor je aan de volgende stap begint.

Schakel het aanmelden als root uit

De root gebruikersnaam is op elk Linux systeem aanwezig. Als je van plan bent een gebruikersnaam/wachtwoord combinatie te kraken, ga je dan de gebruikersnaam ook proberen te achterhalen of gewoon root gebruiken? Het eenvoudigste is root gebruiken. Om dit te voorkomen, schakel je het aanmelden als root in SSH uit. Dit betekent dat je in het vervolg zult aanmelden als hierboven aangewezen root gebruiker (super user). Een andere methode bestaat uit het overschakelen van het gebruik van wachtwoorden naar het gebruik van private SSH sleutels om SSH toegang te verkrijgen.

Het uitschakelen van de root SSH toegang is eenvoudig. Open in een editor het configuratiebestand /etc/ssh/sshd_config (bijvoorbeeld met de opdracht sudo joe /etc/ssh/sshd_config).

# Authentication:

#LoginGraceTime 2m
## In de volgende regel is root toegang uitgeschakeld
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6 
#MaxSessions 10

De instelling PermitRootLogin no blokkeert de SSH toegang van root. Na het opslaan van het configuratiebestand, moet je met de opdracht sudo systemctl restart sshd.service de SSH server herstarten.

Gebruik SFTP, geen FTP

FTP staat voor File Transfer Protocol, SFTP voor Secure File Transfer Protocol. Uit de naam alleen al kan je afleiden dat SFTP veiliger is. SFTP is in feite een uitbreiding van SSH en beiden gebruiken poort 22. SFTP werkt op dezelfde manier als FTP, maar zonder dat je er SFTP server voor moet installeren. Door de aanwezigheid van de SSH server kan je meteen SFTP gaan gebruiken. Een veel gebruikte SFTP compatibele bestandsbeheerder is Filezilla.

Geef zoals bij FTP verbindingen de hostnaam (of het IP adres), de gebruikersnaam en bijhorende wachtwoord in. Bij de poort moet je de SSH poort (22) opgeven (FTP gebruikt poort 21).
Filezilla