Linux-beveiligen

Uit Linuxdocs.nl
Ga naar: navigatie, zoeken

Inhoudsopgave

 

Inhoudsopgave ..................................................................................................................... 1

Inleiding ............................................................................................................................... 2

Standaard Linux beveiliging ................................................................................................ 2

Bios beveiliging en booting wachtwoord ............................................................................ 2

Wat te beveiligen? ................................................................................................................ 2

Kies een goed wachtwoord .................................................................................................. 3

De Root account ............................................................................................................... 3

Uitschakelen van Console program access .......................................................................... 4

Speciale gebruikers .............................................................................................................. 4

De Immutable bit ................................................................................................................. 5

Blokken van gebruikers met su naar root ............................................................................ 5

Repareren van permissies van de init ................................................................................... 6

Login informatie .................................................................................................................. 6

Bits van programma's met root als eigenaar ........................................................................ 7

Draaien van services ............................................................................................................ 7

Kernel tuning parameters ..................................................................................................... 8

Verbieden van Ping aanvragen op het systeem ................................................................ 8

Negeren van broadcast aanvragen .................................................................................... 9

TCP Syn cookie beveiliging ............................................................................................ 9

Uitzetten van ICMP Redirect  acceptaties ..................................................................... 10

Aanzetten van always­defragging beveiliging ............................................................... 10

Aanzetten van ip spoofing beveiliging .......................................................................... 11

Loggen van spoofed packets, Source routed packets, Redirect packets. ...................... 11

<A NAME="page2"></A> 

Inleiding

 

Deze howto is geschreven om de gemiddelde Gnu/Linux machine toch heel simpel te beveiligen.

 

 

Standaard Linux beveiliging

 

de mate van beveiliging op een Linux server hangt af van de administrator van deze machine. In dit hoofdstuk ga ik in op de basis van alle beveiligingsaspecten. Elke paragraaf kan gebruikt worden om misbruik van de machine te voorkomen.

 

 

Bios beveiliging en booting wachtwoord

 

Het is niet aan te raden op te kunnen starten met een opstartdiskette, en het is tevens aan te raden de bios te beveiligen met een wachtwoord. Je bios handleiding kan je vertellen hoe je het wachtwoord op je BIOS kan plaatsen. Tevens hoe je het booten van een floppy uitzet in de BIOS instellingen. Het niet toestaan van het opstarten via een floppy verhoogt de veiligheid. Het zal dus niet mogelijk zijn dat mensen de machine kunnen resetten (fysiek) om vervolgens het root wachwoord te omzeilen door op te starten zonder een wachwoord prompt.

 

 

Wat te beveiligen?

 

Je kan geen beveiliging toepassen als je niet weet wat je wil gaan beveiligen en waar voor. Dus dien je een lijst te maken wat door de beveiliging heen mag en wat niet. Wat je je zou kunnen afvragen wanneer je deze lijst gaat samenstellen ligt aan jouw definitie van beveiliging. De volgende vragen kunnen je wellicht in de goede richting sturen:

  • Hoe classificeer je vertrouwelijke of gevoelige informatie?`

  • Heeft mijn systeem vertrouwelijke of gevoelige informatie?

  • Wie wil je ergens tegen beveiligen?

  • Hebben gebruikers op afstand nou echt toegang op het systeem nodig?

  • Kennen wachtwoorden of encryptie genoeg beveiliging?

  • Heb je toegang tot het internet nodig?

 

  • <A NAME="page3"></A>Wat is de mate van toegang die je nodig hebt tot het internet?

  • Wat ga je doen wanneer je een gat heb gevonden in je beveiliging?

 

Deze lijst is erg kort. Er zal veel meer bij moeten komen.

Een goede beveiliging is gebaseerd op een gevoel van paranoia: hoeveel vertrouw ik de mensen binnen en buiten de organisatie of machine. Deze lijst moet dus nog echter wel een soort weegschaal zijn tussen het toestaan en niet toestaan van bepaalde zaken.

 

 

Kies een goed wachtwoord

 

Het vervolg is het kiezen van juiste wachtwoorden.

We adviseren om de wachtwoorden zo complex mogelijk te maken. Vooral het root wachtwoord. Een wachtwoord wat niet te kraken valt, bestaat namelijk niet. Wanneer de kracht ervoor beschikbaar zou zijn, zou elk wachtwoord te kraken vallen.

 

Met het zelf draaien van een wachtwoord kraker elke week, kun je alle zwakke wachtwoorden in kaart brengen en deze wijzigen in een moeilijker wachtwoord.

 

De volgende regels zijn aan te bevelen bij het kiezen van een wachtwoord:

  • Minimaal 8 karakters lang

  • Moet niet te raden zijn. Dus geen wachtwoorden die een relatie hebben met de gebruikersnaam, familie, beroep of iets dergelijks.

  • Geef ze een periode waarvoor ze gelding zijn, zodat elke keer een nieuw wachtwoord gekozen moet worden.

  • Ze dienen ge­reset worden na een x aantal incorrecte pogingen het wachtwoord in te toetsen.

 

 

De Root account

 

De root account is de machtigste account op een Gnu/Linux machine. Deze “gebruiker” heeft geen restricties op het gebied van beveiliging. Dit betekent dat de root altijd weet waar andere users mee bezig zijn. Daarbij is het mogelijk om als root met een foutief getypt commando het hele bestandensysteem wegvagen. Ingelogt zijn als root om vervolgens weg te gaan is ERG FOUT!!!

 

Het instellen van login time van de root gebruiker:

<A NAME="page4"></A> 

Ondanks de melding nooit ingelogt te zijn als root bij afwezigheid, kan het altijd een keer per ongeluk voorkomen. Daarom gaan we ervoor zorgen dat root automatisch na een bepaalde tijd uitlogt uit de Bash shell. Hier is het TMOUT variabele voor nodig:

 

Bewerke je profiel bestand “vi /etc/profile” and plaats de volgende regel ergens na de regel met “HISTFILESIZE=”:

 

TMOUT=7200

De waarde achter de variabele “TMOUT=”  is in seconden en representeert 2 uren (60 * 60 = 3600 * 2 = 7200 seconden).

Uitschakelen van Console program access

Bij een goed beveiligde machine willen we dat normale gebruikers niet de rechten krijgen die normaliter enkel aan de root user hangen. Alleen root mag services opstarten of zelfs de machine herstarten. Het is dus wellicht ook interessant om alle fysieke aan/uit en reset knoppen af te sluiten op het systeem, waardoor enkel softwarematig afgesloten kan worden.

We willen dus dat enkel root een machine kan herstarten of bijvoorbeeld X wil op kunnen starten. We kunnen dit als volgt doen:

 

[root@alcatraz /]# rm ­f /etc/security/console.apps/halt

[root@alcatraz /]# rm ­f /etc/security/console.apps/poweroff

[root@alcatraz /]# rm ­f /etc/security/console.apps/reboot

[root@alcatraz /]# rm ­f /etc/security/console.apps/shutdown

[root@alcatraz /]# rm ­f /etc/security/console.apps/xserver

 

Wanneer deze services verwijderd worden, kan enkel root deze taken nog verrichten.

Speciale gebruikers

Het is belangrijk om alle default gebruikers die door de distributeur zijn gemaakt te verwijderen als je deze niet gebruikt, of als er geen services aan verweven zijn. Hoe meer gebruikers op het systeem kunnen, des te sneller ongewild toegang tot het systeem kan verkregen worden.

Om gebruikers te verwijderen gebruiken we het commando:

 

[root@alcatraz /]# userdel username

<A NAME="page5"></A> 

Om een gehele groep te verwijderen op het systeem gebruiken we het commando:

 

[root@alcatraz /]# groupdel username

 

Typ de volgende commando's in binnen je terminal om de volgende gebruikers te verwijderen. Let op!! Controleer of deze gebruikers niet gebruikt worden:

 

[root@alcatraz /]# userdel adm

[root@alcatraz /]# userdel lp

[root@alcatraz /]# userdel sync

[root@alcatraz /]# userdel shutdown

[root@alcatraz /]# userdel halt

[root@alcatraz /]# userdel  news

[root@alcatraz /]# userdel uucp

[root@alcatraz /]# userdel operator

[root@alcatraz /]# userdel games (verwijder deze gebruiker als je geen Xserver hebt)

[root@alcatraz /]# userdel gopher

[root@alcatraz /]# userdel ftp (verwijder deze gebruiker als je geen anonymous ftp server hebt)

 

Standaard verwijderd “userdel” niet de home directory van deze gebruiker. Dit kan met de “­r” parameter achter “userdel”.

 

Typ de volgende commando's in op je terminal om de gebruikersgroepen hieronder te verwijderen:

 

[root@alcatraz /]# groupdel adm

[root@alcatraz /]# groupdel lp

[root@alcatraz /]# groupdel news

[root@alcatraz /]# groupdel uucp

[root@alcatraz /]# groupdel games (zie gebruiker games)

[root@alcatraz /]# groupdel dip

[root@alcatraz /]# groupdel pppusers

[root@alcatraz /]# groupdel popusers (verwijder deze groep als je geen pop server voor e­ mail gebruikt)

[root@alcatraz /]# groupdel slipusers

<A NAME="page6"></A> 

De Immutable bit

 

 

De Immutable bit kan gebruikt worden om het per ongeluk verwijderen of overschrijven van zeer kritische bestanden te voorkomen. Het voorkomt ook het maken van symbolische links naar dit bestand, die de bron kunnen zijn van het verwijderen van / etc/passwd, /etc/shadow, etc/group of /etc/gshadow.

 

Om de immutable bit op de wachtwoord bestanden te zetten gebruiken we dit commado:

 

[root@alcatraz /]# chattr +i /etc/passwd

[root@alcatraz /]# chattr +i /etc/shadow

[root@alcatraz /]# chattr +i /etc/group

[root@alcatraz /]# chattr +i /etc/gshadow 

 

Blokken van gebruikers met su naar root

Het “su” (staat voor Substitute User) commado is ervoor om een andere gebruiker te worden op het systeem. Je kan met “su” dus tijdelijk “root” worden of een andere gebruiker.

We willen dus niet dat elke gebruiker via su de mogelijkheid kan krijgen om root te worden. Daarom zetten we de volgende twee regels in het bestand “su” in de /etc/pam.d/ directory.

auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group wheel

 

Deze twee regels betekenen dat diegenen die lid zijn van de groep “wheel” via su toegang kunnen krijgen tot de root account.

Om een gebruiker lid te maken van  de groep “wheel” doen we het volgende commando. Stel we maken de gebruiker “admin” toegang tot de groep “wheel”: [root@alcatraz /]# usermod ­G10 admin

 

Dit betekent dat de “G” is een lijst of supplementaire groepen, waarbij de gebruiker ook

lid is van “10”, het numerieke gebruikers ID van “wheel”. En “admin” is de gebruiker die we hieraan willen toevoegen. Nu kan “admin” via su toegang krijgen tot de “root” account.

<A NAME="page7"></A> 

Repareren van permissies van de init.

We willen niet dat normale gebruikers services op kunnen starten (voor zover dat überhaupt mogelijk is) of in de init scripts van deze services kunnen kijken.

 

[root@alcatraz /]# chmod ­R 700 /etc/rc.d/init.d/*

 

Dit commando maakt het alleen voor “root” mogelijk om de bestanden in deze directory te lezen, te beschrijven of uit te voeren.

 

 

Login informatie

Wanneer er op een normale manier op een Gnu/Linux machine wordt ingelogt vertelt de Linux distributie de naam, de versie, de kernel versie en de naam van de server. Dit geeft veel te veel informatie weg. We hebben liever gewoon “Login”

 

Bewerk het “/etc/rc.d/rc.local” bestand en plaats een “#” voor de volgende regels:

 

echo “” > /etc/issue echo “$R” >> /etc/issue

echo “Kernel$(uname ­r) on a $a $(uname ­m)” >> /etc/issue cp ­f /etc/issue /etc/issue.net

echo >> /etc/issue

 

Haal vervolgens de “/etc/issue.net en “/etc/issue” weg met:

 

[root@alcatraz /]#rm ­f /etc/issue

[root@alcatraz /]# rm ­f /etc/issue.net

 

 

 

 

 

 

 

Bits van programma's met root als eigenaar

Een normale user kan een programma van de “root” gebruiker uitvoeren met de SUID bit op een programma.

Alle programma's met de SUID bit aan zijn te herkennen aan de “­rwsr­xr­x” of de SGID “­r­xr­sr­x” bit. Omdat het belangrijk is wie deze uit kan voeren zijn we van plan deze

 

<A NAME="page8"></A>zoveel mogelijk te elimineren voor zover ze niet gebruikt worden.

We kunnen naar deze bestanden zoeken over het hele bestandensysteem via het volgende commando:

 

[root@alcatraz /]# find / ­type f \( ­perm ­04000 ­o ­perm ­02000 \) \­exec ls ­lg {} \;

 

Om bij de uit de lijst voorkomende programma's de SUID te verwijderen doen we het volgde, bijvoorbeeld:

 

[root@alcatraz /]# chmod a­s /usr/sbin/traceroute

 

 

Draaien van services

Een niet geconfigureerd linux systeem is in principe lang niet veilig. Wellicht het belangrijkste beveiligaspect met betrekking tot de grote boze buitenwereld is het aantal services wat er na een installatie standaard draait. Er dient goed nagedacht te worden in wat de machine nodig heeft aan services en om overbodige services standaard uit te zetten. Wanneer een service niet meer draait zal de poort die noodzakelijk is voor deze service (bijv. Apache webserver heeft poort 80 nodig) dicht komen te staan.

 

Er zijn 2 verschillende services. Dit zijn de standalone servers en daemons. De daemons lopen via de superdaemons Xinetd of Inetd.

Om een service uit te zetten wijzigen we de Inetd.conf, Xinetd.conf of in meeste nieuwer systemen de afzonderlijke daemon configuraties in “/etc/xinetd.d/”. Voor deze drie mogelijkheden dienen we voor de desbetreffende daemon de volgende regel te wijzigen:

 

disable = no wordt:

disable = yes.

 

Om standalone services uit te zetten doen we bijvoorbeeld: “/etc/init.d/httpd stop”. Om deze services tijdens het opstarten al uit of aan te hebben lees hiervoor de Documentatie van de SystemV init of de BSD init.

<A NAME="page9"></A> 

 

 

 

 

Kernel tuning parameters

Met het tunen van de kernel parameters kunnen we een aantal netwerk instellingen weizigen. Dit doen we op 2 manieren, de oudere manier en een wat nieuwere manier.

 

De oude manier gaat om bepaalde instellingen te plaatsen in “/etc/rc.local”. De nieuwere methodiek gaat voornamelijk via het bestand “/etc/sysctl.conf”

 

 

Verbieden van Ping aanvragen op het systeem

Het verbieden van Ping aanvragen op de server kan de beveiliging van het netwerk verbeteren omdat niemand kan zien op deze manier of de server uit of aan is. Het TCP/IP protocol kent een aantal zwakheden die we met het verbieden van ping aanvragen in elk geval kunnen minimaliseren.

Dit kunnen we op 2 manieren doen. De eerste voeren we uit in de commandoregel of plaatsen deze in rc.local.

 

[root@alcatraz /]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

Om de aanvragen van ping weer toe te laten doen we:

 

[root@alcatraz /]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

Voor de nieuwere Gnu/Linux versies hebben we een bestand genaamd “/etc/sysclt.conf” om dit soort zaken te regelen. Deze kunnen we met elke editor openen. Hierin plaatsen we de volgende 2 regels:

 

# Negeer ping aanvragen

net.ipv4.icmp_echo_ignore_all = 1

 

Vervolgens moeten we ons netwerk herstarten: “/etc/init.d/network restart”

<A NAME="page10"></A> 

Negeren van broadcast aanvragen

Broadcast aanvragen zijn, net zoals ping, aanvragen een grote risico factor. Wanneer een pakketje is verstuurd naar een IP nummer zullen alle machines van dat netwerk reageren op deze ICMP echo request, met de mogelijkheid dat het netwerk overbelast zou worden en dus een DoS (Denial of Service) onstaat.

 

We zetten dit als volgt uit:

 

[root@alcatraz /]#echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

 

Plaats deze regel eventueel in “/etc/rc.local”

 

Voor nieuwere systemen moeten er wederom 2 regels in “/etc/sysctl.conf” geplaatst worden:

 

# negeer het verzenden broadcast informatie

net.ipv4.icmp_echo_ignore_broadcasts = 1

 

Na deze actie dient wederom het netwerk herstart te worden via “/etc/init.d/network restart”

 

 

TCP Syn cookie beveiliging

Een “SYN attack” is een Denial of Service die alle systeembronnen van het systeem bezet houden totdat het systeem noodgedwongen herstart moet worden of zelfs voor enige tijd uitgeschakeld moet worden wanneer de aanval doorgaat. Het netwerkverkeer stijgt gigantisch door het gebruik van TCP Syn cookies waarbij het systeem onderuit kan gaan.

 

Dit valt wederom deels te beveiligen. Dit doen we op de bekende twee manieren:

 

[root@alcatraz /]#echo 1 >/proc/sys/net/ipv4/tcp_syncookies

 

Plaats deze regel in “/etc/rc.local” om het te activeren bij het opstarten.

Bij de nieuwere methode worden wederom twee regels in “/etc/sysctl.conf” toegevoegd:

 

# Aanzetten van TCP SYN Cookies beveiliging

net.ipv4.tcp_syncookies = 1

<A NAME="page11"></A> 

Het netwerk dient wederom opnieuw opgestart te worden: “/etc/init.d/network restart”

 

 

Uitzetten van ICMP Redirect acceptaties

Wanneer hosts een niet geoptimaliseerde route kiezen kan een icmp redirect pakketje, gebruikt door routers, de hosts informeren wat de beste route is. Als een aanvaller in staat is om deze pakketjes als het ware te sturen kan diegene de routing tables aanpassen op de servers van het netwerk en mogelijkerwijs beveiliging omzeilen. Het is aan te raden om ICMP redirect pakketjes uit te schakelen.

 

Dit doen we wederom op 2 manieren. Voor oudere systemen plaatsen we in rc.local:

 

for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do > echo 0 > $f

>done

 

 

 

 

De nieuwere manier gaat iets makkelijker. Edit de “/etc/sysctl.conf” en plaats de 2 volgende regels hierin:

 

# Uitzetten van ICMP Redirect acceptatie

net.ipv4.conf.all.accept_redirects = 0

 

Herstart het netwerk weer met “/etc/init.d/network restart”

 

 

Aanzetten van always-defragging beveiliging

Wanneer het systeem gebruikt als gateway om internetverkeer te masqueraden naar andere machines dient de volgende beveiligng gelegd te worden:

 

[root@alcatraz /]#echo 1 > /proc/sys/net/ipv4/ip_always_defrag

 

Plaats deze regel eventueel in “/etc/rc.local”.

 

De nieuwere methodiek zal als volgt gaan. Edit de “/etc/sysctl.conf” en plaats de volgende twee regels code:

<A NAME="page12"></A> 

# Aanzetten van always defrag beveiliging.

net.ipv4.ip_always_defrag = 1

 

Herstart als volgt het netwerk weer met “/etc/init.d/network restart”.

 

 

Aanzetten van ip spoofing beveiliging

IP Spoofing staat bekend als het forceren van communicatie tussen twee systemen waarvan een van deze twee kwade bedoelingen heeft. Deze methodiek wordt vaak gebruikt bij de zogeheten DoS attacks (Denial of Service). Dit is als volgt te beveiligen: Plaats de regel op de onderstaande regel in rc.local indien je in bezit ben van een oudere Gnu/Linx variant:

 

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do > echo 1 > $f

> done

 

De nieuwer manier gaat weer iets makkelijker. Wijzig de “/etc/sysctl.conf” en plaats de volgende twee regels hier in:

 

# Zet beveiling van ip spoofing aan, en zet source adress verification aan.

net.ipv4.conf.all.rp_filter = 1

 

Sla het bestand op en herstart hierna het netwerk weer met “/etc/init.d/network restart”.

 

 

Loggen van spoofed packets, Source routed packets, Redirect packets.

Wanneer iemand het toch lukt om de tuning kernel parameters de we zojuist hebben ingesteld te omzeilen kunne we dit loggen. Dit doen we op de oude manier en op de nieuwe manier:

 

for f in /proc/sys/net/ipv4/conf/*/log_martians;do > echo 1 > $f

> done

 

Of de volgende regels code in “/etc/sysctl.conf”:

<A NAME="page13"></A> 

#loggen van spoofed packets, source routed packets en redirect packets.

net.ipv4.conf.all.log_martians = 1

 

Herstart na de tweede optie wederom het netwerk met “/etc/init.d/network restart”.

</BODY> </HTML>



How-TO's | Hoofdpagina | Linux Nieuws | Externe links | Help