# Linux Systeembeheer/Beveiliging
## Leerdoelen

* Werkwijze van computer-inbraken kennen en begrijpen
** Stappen: verkenning (passief/actief), exploits toepassen (toegang verkrijgen, privileges verhogen, spoofing, buffer overflow attack, Denial of Service), toegang behouden (trojans, backdoors, rootkits), sporen uitwissen
** De werking van volgende tools gebruikt bij aanvallen op computersystemen begrijpen en ze kunnen gebruiken: dig, nmap, ping, traceroute/tracepath/..., whois, wireshark
** De volgende tools kennen die gebruikt worden bij aanvallen op computersystemen: kismet, nessus
* Weten hoe een systeembeheerder zich kan beschermen tegen technieken gebruikt door inbrekers
** Principes: laagst mogelijke privileges, zo weinig mogelijk software draaien, default deny, encryptie (SSL), goede wachtwoorden kiezen,
** Logbestanden kennen, weten hoe je ze kan gebruiken: /var/log/messages, logs voor logins
** Soorten beveiligingstools kennen: vulnerability scanners (vb. Nessus), Intrusion Detection Systems (vb. tripwire, snort), Intrusion Prevention Systems
* Beveiligingsvoorzieningen in Fedora en CentOS kennen en kunnen gebruiken: SELinux, iptables (zie hoofdstuk firewalls)

## Tekst
### Bespreken van de stappen

Merk op dat niet steeds alle stappen gevolgd moeten worden. Als bijvoorbeeld al genoeg informatie is losgekomen kan men stappen overslaan. De volgorde hoeft ook niet per se gevolgd te worden, bijvoorbeeld als de aanvaller denkt genoeg informatie te hebben gaat hij door naar stap 3. Achteraf blijkt echter dat hij niet genoeg informatie heeft, dus kan hij terugkeren naar stap 1 of 2.

#### Stap 1: Passieve verkenning

Om een systeem te kunnen exploiteren heeft de aanvaller eerst algemene informatie nodig, anders weet hij niet wat hij aanvalt. Nadat de hacker een bedrijf gekozen heeft om in te breken moet hij uitzoeken waar dat bedrijf zich bevindt op het internet. Met passieve verkenning kan (in extreme gevallen) soms al genoeg informatie bekomen worden, denk aan wat je zelf zegt tegen iemand in vertrouwen als je denkt dat niemand luistert. Onder passieve verkenning classificeren we alle vormen van informatieverzameling die niet detecteerbaar zijn voor het doelwit.

##### Sniffing

Dit is één van de populairste methoden voor passieve verkenningen. Hierbij wordt het netwerkverkeer van een bepaald netwerksegment bestudeerd en opgenomen. Dit werkt bij uitstek goed op onvoldoende beveiligde draadloze netwerken. Als de hacker zoekt voor één specifiek gegeven kan deze manier wel wat tijd in beslag nemen, anderzijds als hij het patroon kent van de pakketten die hij zoekt kan het al heel wat simpeler zijn. Er bestaan tools voor paswoord sniffing, hierbij zal de tool zoeken naar authenticatiepakketten. Wanneer hij er een vindt, zal het geëncrypteerde paswoord opgeslagen worden. De aanvaller kan dan een passwoordkraker gebruiken om het paswoord te achterhalen.

##### Information gathering

Hierbij zoekt de aanvaller naar informatie in publiek toegankelijke databanken die bruikbaar is bij het opstellen van een actieve aanval. Voorbeelden zijn whois (geeft informatie over o.a. DNS-servers, contactgegevens van systeembeheerders, telefoonnummers, enz.), ARIN of RIPE (geeft informatie over netwerkblokken toegekend aan de organisatie), tijdschrift- of krantenartikels, persberichten, enz.

#### Stap 2: Actieve verkenning

In deze stap gebruikt de aanvaller technieken die in principe gedetecteerd kunnen worden door het doelwit. De aanvaller zal het systeem peilen om zo bijkomende informatie te vinden, bijvoorbeeld met een portscanner als nmap. Dit zijn enkele voorbeelden van wat de aanvaller zal proberen te ontdekken:
* Hosts die toegankelijk zijn
* Locaties van routers en firewalls
* Poorten die openstaan
* Welk OS draait
* Services die runnen
* Versies van applicaties die runnen

##### Social Engineering

Social engineering is een information gathering techniek waarbij een hacker een aanval op computersystemen tracht te ondernemen door de zwakste schakel in de computerbeveiliging, namelijk de mens, te kraken. De aanval is erop gericht om vertrouwelijke of geheime informatie los te krijgen, waarmee de hacker dichter bij het aan te vallen object kan komen. De beroemdste hacker die van deze techniek gebruik maakte is Kevin Mitnick. Hij heeft zijn ervaringen verwoord in het boek The Art of Deception. Kenmerkend voor Social engineering is dat er geen aanval op de techniek zelf wordt uitgevoerd. Een aanvaller tracht om
* de nieuwsgierigheid van een slachtoffer te wekken,
* medelijden bij een slachtoffer te wekken,
* een slachtoffer bang te maken.
De aanvaller doet zichzelf voor als iemand anders. Dit doet de aanvaller met het doel om via de aangenomen, vertrouwenwekkende, rol informatie te verkrijgen die op een andere manier niet of met aanzienlijk meer inspanning of hogere kosten te krijgen is.
Een amusante presentatie over social engineering is die van Johnny Long op DefCon 15 genaamd No Tech Hacking. http://www.youtube.com/watch?v=5CWrzVJYLWw

#### Stap 3: Het systeem exploiteren

Meestal denken we hierbij enkel aan toegang krijgen maar privileges verhogen en denial of service zijn hier ook onderdeel van. Deze drie zijn nuttig afhankelijk van welk type aanval de aanvaller wil starten. Ze kunnen ook door elkaar gebruikt worden. Een aanvaller kan bijvoorbeeld toegang hebben tot een bepaald gebruikersaccount maar omdat deze geen root toegang heeft hij geen rechten tot een bepaald bestand. Dan zal de aanvaller een aanval uitvoeren die de privileges verhoogd zodat zijn toegangslevel verhoogd wordt zodat hij toegang heeft tot het bestand. De aanvaller kan ook een systeem aanvallen om het later te gebruiken bij een aanval op een ander systeem.

##### Toegang krijgen
###### Aanval op het OS

De standaardinstallatie van het merendeel van de besturingssystemen heeft een grote hoeveelheid services die starten en poorten die geopend zijn. Vanuit het standpunt van een OS ontwikkelaar is dit logisch, ze willen dat de klant hun product kan installeren en configureren in een minimum tijdspanne met zo weinig mogelijk moeite en problemen. Als de services niet aanwezig zouden zijn, zouden de klanten hulp opzoeken bij de makers van het besturingssysteem en dit zou dan uitdraaien in extra kosten voor de OS ontwikkelaar. Vanuit het standpunt van beveiliging is dit niet logisch. Waarom zou iemand een onveilig besturingssysteem installeren? Meestal gebeurd dit uit onwetendheid, de gebruiker / beheerder beseft mogelijk het risico niet van hoe kwetsbaar het besturingssysteem is. Als dit nog niet erg genoeg is denken bedrijven ook nog eens dat hun job gedaan is nadat het besturingssysteem geïnstalleerd is. Ze updaten niet of zelden. Dit zorgt ervoor dat bedrijven bij een versie van het besturingssysteem zitten die uitgefaseerd / verouderd is. Deze besturingssystemen hebben een groot aantal kwetsbaarheden die meestal ook reeds gekend zijn door de aanvallers.

###### Aanval op de applicatie

Deze aanvallen maken gebruik van de imperfecte manier van beveiliging die vandaag aan te treffen zijn bij software. Programmeurs zitten vaak onder grote tijdsdruk en daarom wordt het testen van software vaak niet grondig genoeg uitgevoerd. De meeste software heeft vandaag ook zoveel extra functionaliteiten dat zelfs als er meer tijd was de kans bestaat dat niet alles getest zou kunnen worden. Gebruikers zijn niet bezorgd om beveiliging, als het programma doet wat ze nodig hadden zijn ze tevreden. Veiligheid zou niet mogen aanzien worden als een extra maar meer als een vereiste. Om een hoge graad van beveiliging te voorzien zou het dus ook moeten ingebouwd zijn in de applicatie vanaf het begin.

###### Scripts en voorbeeldprogramma aanvallen

Vooral voor UNIX zijn veel voorbeeldscripts en voorbeeldprogramma's beschikbaar. Het is zeer handig een voorbeeld te hebben maar ook zeer dom om het uit te voeren zonder exact te weten wat erin staat. Vroeger had Apache een reeks basisscripts ter beschikking waarbij de meesten kwetsbaarheden hadden. Active Server Pages (ASPs) hebben meestal veiligheidslekken. Een voorbeeld hiervan is de standaard website die meegeleverd is met IIS. Deze heeft de admintools op afstand beschikbaar vanaf de startpagina. Deze tool kan dan gebruikt worden door de aanvaller.

###### Verkeerde configuratie aanvallen

In meerdere gevallen wordt ingebroken in systemen omdat ze fout geconfigureerd zijn. Bijvoorbeeld een beheerder werkt met een systeem en is niet zeker hoe het in te stellen. Hij probeert een aantal dingen uit en wanneer het werkt, stopt hij met verder zoeken. Het probleem hierbij is dat hij nooit de moeite doet om te zien wat het deed werken en het overbodige werk niet opruimt. Om een systeem optimaal te beveiligen moeten onnodige services en software verwijderd worden. Op deze manier zijn enkel de strikt noodzakelijk zaken aanwezig en hoeven ook enkel deze beveiligd te worden. Fout configureren is eenvoudig te voorkomen aangezien de beheerder hier zelf voor zorgt.

##### Privileges verhogen

Het uiteindelijke doel van de aanvaller is steeds root of administrator toegang te verkrijgen. In sommige gevallen kan de aanvaller deze toegang onmiddellijk verkrijgen. Meestal zal hij eerst echter minimale toegang verkrijgen en daarna via het verhogen van privileges volledige toegang krijgen. Dit type aanval, waar een aanvaller onrechtstreeks root of administrator toegang krijgt door meerdere toegangslevel te verkennen heet het verhogen van privileges.

##### Denial of service

DoS zijn aanvallen die bevoegde gebruikers toegang ontzeggen tot een bron. Dit kan gaan van gebruikers toegang verlenen tot een bepaalde website of gebruikersaccounts uitschakelen zodat ze niet kunnen inloggen. Als je bijvoorbeeld van thuis werkt en dus je internet nodig hebt om te verbinden met de server van het bedrijf, als dan iemand je internetkabel doorknipt veroorzaakt hij een DoS die je ervan weerhoudt je werk te doen. Jammer genoeg zijn deze aanvallen relatief simpel uit te voeren op het internet aangezien geen toegang vereist is. Tools voor deze aanvallen uit te voeren zijn vaak makkelijk te vinden en uit te voeren.

#### Stap 4: Programma's uploaden

In de meeste gevallen zal de aanvaller programma's laden in het systeem. Deze kunnen dan zorgen voor meer toegang, systemen op het netwerk beschadigen of tools op de server plaatsen die gebruikt zullen worden om andere systemen te beschadigen. Om schade aan te richten of informatie te bekomen moet de aanvaller succesvol inbreken in een site en de nodige informatie achterhalen. Het internet voegt hier echter een nieuwe dimensie aan toe. Sommige tools hebben aanzienlijk meer processorkracht nodig en een betere verbinding tot het internet. Daarom kan de aanvaller er misschien op doelen het veroverde systeem te gebruiken bij een volgende aanval naar een ander systeem. Op deze manier is het ook moeilijker te achterhalen wie achter de aanval zit aangezien deze afkomstig is van een ander gekraakt systeem.

#### Stap 5: Data downloaden

Bij sommige aanvallen, zoals bedrijfsspionage, is de aanvaller uit op data. Deze data kan gaan van nieuwe onderzoeken, nieuwe producten, het klantenbestand, de toekomstvisie van het bedrijf. In al deze gevallen zal de aanvaller data willen downloaden naar een andere locatie. Nadat de data gedownload is naar de andere locatie kan de aanvaller de data analyseren. Deze aanval kan enkel voorkomen worden tijdens dat de aanvaller de data download (of ervoor) want nadien heeft hij reeds alles tot zijn beschikking.

#### Stap 6: Toegang behouden

In de meeste gevallen plaatst de aanvaller een backdoor nadat hij toegang verkregen heeft. Door later gebruik te maken van deze backdoor moet hij alle voorgaande stappen niet herhalen om opnieuw toegang te verkrijgen tot het systeem. Een backdoor kan zo simpel zijn als gewoon een extra gebruikersaccount toe te voegen aan het systeem. Dit is makkelijk te doen met de bekomen root / administrator rechten. Als het bedrijf echter zijn actieve accounts bekijkt is de kans groot dat het account gedetecteerd wordt. Als het een groot systeem is met duizenden gebruikers bestaat de kans dat het niet gemerkt wordt. Een meer geavanceerde manier om een backdoor te maken is het overschrijven van een systeembestand met een versie dat een verborgen functie heeft. Zo kan men bijvoorbeeld de logon daemon overschrijven die verzoeken van het inloggen van gebruikers verwerkt. Voor de gewone gebruikers werkt het normaal, maar met een bepaald user-id en paswoord heb je alle rechten. Deze bewerkte programma's heten trojan versions omdat ze verborgen functies hebben. Een nog andere manier om een backdoor te maken is het schrijven van een programma dat werkt op een bepaalde poort. Als de aanvaller connectie legt met die poort krijgt hij volledige toegang tot het systeem of zelfs het hele netwerk. Een aanvaller kan ook gebruik maken van een trojan horse, deze voorziet toegang tot het systeem en maakt een backdoor op hetzelfde moment.

#### Stap 7: Sporen uitwissen

De logbestanden wissen is een manier om sporen uit te wissen. de logbestanden houden bij wanneer welke persoon wat heeft opgevraagd. Dus de aanvaller zal het logbestand raadplegen en de entries met betrekking tot zijn daden verwijderen. Het gehele logbestand verwijderen zou argwaan wekken bij de beheerder en bovendien voegen meeste systemen een entry toe in het logbestand dat aangeeft dat het bestand verwijderd is. Daarom is het belangrijk om als beheerder het logbestand op te slaan op een andere server en ideaal zou zijn dat die een write-only server is. Op deze manier is de kans minimaal dat de sporen kunnen gewist worden. De aanvaller kan ook het loggen van acties uitschakelen zodra hij toegang heeft gekregen tot de machine. Dit vereist wel meer kennis maar is zeer effectief. In het geval dat de aanvaller bestanden overschreven heeft moet hij er ook voor zorgen dat de gewijzigde bestanden geen argwaan opwekken. De meeste bestanden hebben datums van wanneer ze geopend zijn en de grootte van het bestand. Er zijn programma's die bestanden flaggen als gewijzigd wanneer deze gewijzigd worden. Om dit te voorkomen, kan de aanvaller na het wijzigen van de bestanden hun eigenschappen opnieuw aanpassen naar hun oude waarden. Een goede manier van beveiliging is werken met checksums. De checksum zal pas gelijk zijn alles beide bestanden identiek zijn.
* Tip: een GUI voor het instellen van SELinux Installeer volgende package:
* yum install -y policycoreutils-gui
* Kies dan in het menu Systeem → Beheer → SELinux Beheer of System → Administration → SELinux Management

## Nmap

Nmap staat voor "Network Mapper" en is een opensource tool om de beveiliging van een netwerk te monitoren. Nmap gebruikt ip-pakketten om het aantal hosts op een netwerk te bepalen en om gegevens over deze hosts te weten te komen, zoals bv:
* welke services deze hosts aanbieden,
* op welk besturingssysteem deze draaien,
* welke firewalls ze draaien.
Nmap kan gebruikt worden om beveiligingslekken te zoeken in netwerken.
Installeer de service
Wanneer het commando gebruikt wordt zonder opties mee te geven, krijgen we een globaal beeld van welke opties allemaal kunnen gebruikt worden:
* Target Specification
* Host Discovery
* Scan Techniques
* Port Specification and Scan order
* Service and Version Detection
* OS Detection
* Nmap Scripting Engine
* Timing and Performance
* Firewall/IDS Evasion and spoofing
* Output
* Miscellaneous Options
vb:

## DIG

DIG (Domain Information Groper) is een flexibele Linux tool voor het ondervragen van DNS-servers. Het doet DNS-lookups en geeft de informatie die hij terugkrijgt weer van de ondervraagde DNS-servers. De meeste DNS-administrators gebruiken DIG ook om problemen te lokaliseren. Alhoewel DIG normaal wordt gebruikt met command-line argumenten, heeft het een batch modus om DNS lookup requests vanuit een bestand te halen. DIG maakt deel uit van het BIND-softwarepakket en vervangt oudere tools als nslookup en host.
Synopsis dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] [-pport#] [-q name] [-t type] [-x addr] [-y [hmac:]name:key] [-4] [-6] [name] [type] [class] [queryopt...] dig [-h] dig [global-queryopt...] [query...]
vb:

## Ping

PING is uw eerste verdedigingsmiddel bij het oplossen van problemen. PING is een voorziening waarmee u IP-connectiviteit kunt controleren door een ICMP-echopakket te versturen naar een IP-adres of doel-NetBIOS-naam. Met PING kunt u hardwareproblemen in het netwerk, incompatibele configuraties en gebrekkige connectiviteit achterhalen. Probeer eerst het IP-adres van de doelhost te pingen.
* ping het standaard loopback-adres om de lokale installatie en configuratie te controleren.
* ping het IP-adres van de lokale computer om te controleren of het wordt herkend door het netwerk.
* Controleer vervolgens de connectiviteit van de standaardgateway. Hierdoor controleert u niet alleen de werking van de gateway (router), maar ook de communicatie tussen de host en de gateway.
* ping het IP-adres van de externe host om de communicatie naar de router te controleren.
vb:

## Traceroute

traceroute/tracert is een TCP/IP-tool om na te gaan welke route TCP-pakketten afleggen naar een bepaalde host. Het werkt door de time to live (TTL) waarde bij elke tussenliggende host met 1 te verlagen, als de TTL waarde 1 bereikt zal de laatste host deze afwijzen en de melding ICMP time exceeded (tijd verlopen) retourneren. De tool mtr is identiek aan tracert maar geeft daarnaast ook de packetloss op de route weer. Het programma gebruikt de meldingen van de hosts tussen start en bestemming van de route om na te gaan welke hosts de tussenliggende zijn. Hierbij wordt ook de reactietijd van deze hosts (in milliseconden) weergegeven. Deze hosts worden aangegeven door zogeheten 'hops' (waarbij de eerste host in de route hop 1 is, de tweede hop '2', enzovoorts). Om deze reden wordt traceroute vaak gebruikt om na te gaan waar fouten in een computernetwerk optreden.
vb:

## Mtr

Mtr combineert de functionaliteiten van traceroute en ping in één enkel diagnostisch commando. Wanneer mtr wordt uigevoerd, onderzoekt het de netwerkverbinding tussen de host waar mtr op draait en de doelhost door pakketten met een lage TTL (Time To Live) waarde te verzenden. Het blijft deze pakketjes verzenden terwijl het let op de reactietijd van de tussenliggende routers. Hierdoor kan mtr de responstijden en antwoordpercentages van alle hops op de route weergeven. vb:

## Netstat

Netstat wordt gebruikt om de status van alle openstaande netwerkverbinding te bekijken. Dit is handig om te detecteren of iemand op uw systeem aan het werken is. Ook de routing-tabel en de netwerkinterfaces worden weergegeven. Let op: ook sockets die in gebruik zijn worden weergegeven. Enkele handige vlaggen:

## Whois

Whois is een protocol om gegevens van een domeinnaam of IP-adres te achterhalen door middel van een query/vraag aan een database. In een whois staan meestal de naam en contactgegevens van de eigenaar, de provider en nameservers van de DNS-servers. Traditioneel werden whois-zoekopdrachten gedaan via de command-line maar tegenwoordig zijn er ook veel websites die deze service bieden. Deze resultaten kunnen per domein verschillen.
SYNOPSIS whois [ -h HOST ] [ -p PORT ] [ -aCFHlLMmrRSVx ] [ -g SOURCE:FIRST-LAST ] [ -i ATTR ] [ -SSOURCE ] [ -T TYPE ] object whois [ -t ] [ -v ] template whois [ -q ] keyword
vb: http://www.ip-adress.com/whois/hogent.be
of via linux

## Nessus

Nessus is een open-source vulnerability scanner die het systeem uitvoering aftast op zijn kwetsbaarheden. Zijn doel is potentiële kwetsbaarheden op de geteste systemen te ontdekken. Bv:
* de computer controleren op open ports,
* testen op bekendste vulnerabilities,
* het systeem testen op lege of default wachtwoorden.
De controle gebeurd via plug-ins die automatisch up-to-date worden gehouden door de Nessus-server.
Download en installeer Nessus. http://www.nessus.org/download/
Voor fedora 14 (32bit) is Adobe Flash vereist.
Download Nessus-4.4.0-fc14.i386.rpm
Vul een gewenste gebruikernaam en wachtwoord in met de nodige privileges.
Registreer je op http://www.nessus.org/register zodat je de nieuwste plug-ins kunt gebruiken. Deze plug-ins heb je nodig om het systeem te kunnen testen. Op de website kies je voor thuisgebruiker en geef je je e-mailadres in zodat je een activatiecode krijgt.
Nessus is nu geregistreerd.
Ga nu naar je webbrowser en voer https://[ipadres]:8834/ in. Dit brengt je naar de gui van Nessus. Introductiefilmpje van Nessus om je op weg te helpen: http://www.youtube.com/watch?v=3RgOtjv4v8E

## SSH

SSH staat voor "Secure Shell" en is een protocol dat vanop afstand op een veilige manier kan inloggen op een linux systeem. Het is de opvolger van telnet en maakt in tegenstelling met zijn voorganger gebruik van encryptie. SSH gebruikt poort 22.
* SSH installeren:
* De SSH daemon starten:
* Gebruik:

## Bronnen

* Eric Cole, Hackers Beware: Defending Your Network From The Wiley Hacker, New Riders, 2002
* Nmap Reference Guide, http://nmap.org