Om je systeem veilig te houden is het belangrijk om de /tmp map als een aparte partitie te mounten en ervoor te zorgen dat bestanden in deze map nooit uitvoerbaar kunnen zijn.
Een belangrijke reden hiervoor is dat veel applicaties en websites de map /tmp gebruiken om tijdelijke bestanden op te slaan, hier is /tmp ook voor bedoeld (Zie ook FHS op Wikipedia voor meer informatie over de mappen-structuur onder Linux). Veel exploits proberen om bestanden op te slaan en uit te voeren in /tmp omdat dit vaak de enige schrijfbare map is voor een applicatie of website. Om dit te voorkomen gaan we van /tmp een aparte partitie maken op en deze mounten met de opties: noexec (sta niet toe dat binaire bestanden uitvoerbaar zijn) en nosuid (sta niet toe dat de eigenaar van een bestand wordt aangepast) Zie ook de Linux Man Page over Mount.
De praktijk:
- Maak een 2GB bestand voor je nieuwe /tmp partitie:
root@srvprd05:~# dd if=/dev/zero of=/dev/tmpfs bs=1024 count=2000000
- Voorzie /dev/tmpfs van de Ext3 indeling:
root@srvprd05:~# /sbin/mkfs.ext3 /dev/tmpfs
- Maak een backup van de bestaande map:
root@srvprd05:~# cp -Rfp /tmp /tmpback
- Mount de nieuwe /tmp partitie en zet de rechten goed:
root@srvprd05:~# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp root@srvprd05:~# chmod 1777 /tmp
- Kopieer de data naar de nieuwe partitie:
root@srvprd05:~# cp -Rfp /tmpback/.* /tmp/
- Bewerk /etc/fstab en voeg het volgende toe:
/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
- Test de regel die je aan hebt gemaakt:
root@srvprd05:~# mount -o remount /tmp
- Om bovenstaande te controleren kun je simpelweg een shell-script proberen uit te voeren in /tmp. Als je de melding krijgt: “permission denied” is het gelukt.
Mocht je er niet uitkomen of wil je dit laten uitvoeren, kun je altijd contact opnemen.
–Martijn