Het is al langere tijd bekend dat Unix deze (en andere) tekortkomingen heeft. De tijd heeft verder niet stilgestaan, zo is tegenwoordig bijna elke Linux computer wel (regelmatig) aan een (publiek) netwerk verbonden. Daarom zijn er veel work-arounds en uitbreidingen voor vergroting van de Linux veiligheid verzonnen, we noemen een aantal:
Security extensies
'Linux capabilities' maken het mogelijk om rechten op te splitsen. Hierdoor hoeven we tenminste niet per se alle rechten toewijzen aan een proces als het 'root' rechten heeft. Helaas zijn programma's die gebruik maken van deze capabilities nog schaars [1].
Voor een aantal filesystemen is er ook de mogelijkheid om extra permissieattributen te zetten, zoals 'alleen openen voor append'. Zie bijvoorbeeld de manual pages voor chattr. Maar ook hier kan 'root' weer eenvoudig alles ongedaan maken. En in sommige versies van de kernel ontbreekt de juiste kernelondersteuning om de extra attributen ook te valideren.
Toolsets als 'bastille' (http://www.bastille-linux.org) zorgen er voor dat een hele hoop notoire beveiligingsgaten dicht worden gezet, warm aanbevolen. Ze lossen echter niets op aan de granulariteitsproblemen en doen ook niets aan de almacht van root. Er wordt verder maar een beperkt aantal distributies ondersteund.
Detectietools als 'tripwire' (http://www.tripwire.org) helpen bij het vinden van wijzigingen op het systeem - maar pas als het kwaad mogelijk al is geschied. En ook zij lossen niets op aan de andere problemen.
Programma's als tcpd helpen om de toegang tot processen via het netwerk te beperken. Kernel mechanismen en bijbehorende software zoals iptables en ipchains geven additionele beveiliging. Maar als eenmaal toegang is verkregen tot een dienst komen de oude problemen weer boven tafel. Programmeerfouten in het programma binnen dat proces zijn dan nog even gevaarlijk.
Daarom worden daemons soms in een chroot gevangenis gezet. Dat biedt tenminste de zekerheid dat een indringer niet te veel kwaad kan doen binnen de rest van uw filesystem. Maar hier gaat op dat het toch ook onhandig is als een inbreker al uw files binnen de chroot gevangenis kan wissen of aanpassen als hij toch een gat in uw beveiliging kan vinden - zeker als dat uw ftp archief is. Daarnaast biedt het geen enkele bescherming tegen al die andere processen op de server die niet in de chroot gevangenis draaien. Om over 'root' maar te zwijgen.
Een goede manier om te voorkomen dat iemand uw data leest is deze versleutelen. Encryptie voorkomt daarbij dat iemand de vertrouwelijk data van een backup tape kan plukken. Helaas moet uw de data decrypten om er gebruik van te kunnen maken. En omdat 'root' ook mag aansluiten op uw processen (met bijvoorbeeld 'strace') is de kans groot dat hij de door u ingetikte decryptiesleutel kan afluisteren.
Configuratietools als PIKT of cfengine kunnen helpen om configuratie van al die tools makkelijker te maken. Maar helaas maken ze gebruik van een proces met (tijdelijke) root-rechten om de boel om te kunnen configureren, wat weer een gevaar op zich is. Het maakt met name grote clusters van systemen beheerbaarder maar lost al met al het kernprobleem van de te grove granulariteit en de almacht van root niet op.
[1] | Versie 1.2.0 van RSBAC zal Linux capabilities ondersteunen |