Systeemdiensten en tcp-wrappers Het eerste waar je naar moet kijken, voordat je je Linux systeem op ENIG netwerk aansluit, is wat voor diensten je moet bieden. Diensten die je niet hoeft te bieden moeten uitgeschakeld worden, zodat je één ding minder hebt om je zorgen over te maken en aanvallers een plek minder hebben om te zoeken naar een lek. Er zijn een aantal manieren om diensten onder Linux uit te schakelen. Je kunt kijken naar je /etc/inetd.conf bestand om te zien welke diensten worden aangeboden door je inetd. Schakel degenen die je niet nodig hebt uit door een # aan het begin van de regel te plaatsen en vervolgens je inetd proces een SIGHUP te sturen. Je kunt ook diensten uit je /etc/services bestand verwijderen (of een # aan het begin van de regel plaatsen). Dit heeft tot gevolg dat lokale clients de dienst ook niet kunnen vinden (als je bijvoorbeeld ftp verwijdert en probeert te ftp-en naar een remote site vanaf die machine, zal dat mislukken en de boodschap "unknown service" zal getoond worden). Het is meestal de moeite niet waard om diensten te verwijderen uit /etc/services, omdat het geen aanvullende beveiliging verschaft. Als een lokale persoon ftp zou willen gebruiken ondanks het feit dat je een # aan het begin van de regel hebt geplaatst, maken ze hun eigen client aan die de gebruikelijke FTP poort gebruikt en nog prima werkt. Enkele diensten die je wellicht ingeschakeld zou willen laten zijn:ftptelnet (of ssh)mail, zoals pop-3 of imapidentd Als je weet dat je een bepaald pakket niet gaat gebruiken, kun je het ook helemaal verwijderen. rpm -e naam van het pakket onder de Red Hat distributie zal het gehele pakket verwijderen. Onder Debian doet dpkg --remove hetzelfde. Bovendien moet je echt de rsh/rlogin/rcp utility's uitschakelen en tevens voorkomen dat login (gebruikt door rlogin), shell (gebruikt door rcp) en exec (gebruikt door rsh) worden gestart in /etc/inetd.conf. Deze protocollen zijn extreem onveilig en zijn in het verleden het doel geweest van misbruik. Je moet /etc/rc.d/rc[0-9].d (op Red Hat; /etc/rc[0-9].d op Debian) controleren om te zien of er servers in deze directory's gestart worden die niet nodig zijn. De bestanden in deze directory's zijn eigenlijk symbolische links naar bestanden in de directory /etc/rc.d/init.d (op Red Hat; /etc/init.d op Debian). Het hernoemen van de bestanden in de init.d directory schakelt alle symbolische links uit die naar dat bestand verwijzen. Als je een dienst slechts voor een bepaald run level uit wilt schakelen, hernoem dan de desbetreffende symbolische link door de hoofdletter S te vervangen door een kleine letter s, zoals dit: root# cd /etc/rc6.d root# mv S45dhcpd s45dhcpd Als je rc bestanden in BSD-stijl hebt, moet je /etc/rc* controleren op programma's die je niet nodig hebt. Bij de meeste Linux distributies worden tcp_wrappers geleverd die al je TCP diensten "wrappen". Een tcp_wrapper (tcpd) wordt aangeroepen door inetd in plaats van de echte server. tcpd controleert dan de host die om de dienst verzoekt en start ofwel de echte server op of weigert toegang vanaf die host. Met tcpd kun je de toegang tot je TCP diensten beperken. Je moet een /etc/hosts.allow aanmaken en alleen toevoegen in de hosts die toegang tot de diensten van je machine nodig hebben. Als je een dialup thuisgebruiker bent, stellen we voor dat je ze ALLEMAAL weigert. tcpd logt ook mislukte pogingen om toegang tot diensten te krijgen, dus dit kan je waarschuwen als je aangevallen wordt. Als je nieuwe diensten toevoegt, moet je je ervan overtuigen dat je ze zo configureert dat ze tcp-verbindingen gebruiken als ze zijn gebaseerd op TCP. Een normale dialup gebruiker kan bijvoorbeeld voorkomen dat buitenstaanders verbinding maken met zijn machine en toch de mogelijkheid hebben om post te ontvangen en netwerkverbindingen naar het Internet te maken. Om dit te doen, moet je het volgende aan je /etc/hosts.allow toevoegen: ALL: 127. En natuurlijk bevat /etc/hosts.deny: ALL: ALL wat externe verbindingen naar je machine voorkomt en je toch toestaat om van binnenuit een verbinding te maken met servers op het Internet. Houd in gedachten dat tcp_wrappers alleen diensten die uitgevoerd worden door inetd beschermt en een bepaald aantal anderen. Het is heel goed mogelijk dat er ook andere diensten op je machine draaien. Je kunt netstat -ta gebruiken om een lijst te zoeken met alle diensten die je machine aanbiedt.