Zoeken op website

25 Verbeterde beveiligingstips voor Linux-servers


Iedereen zegt dat Linux standaard veilig is en is het er tot op zekere hoogte mee eens (het zijn discutabel onderwerpen). Linux heeft echter standaard een ingebouwd beveiligingsmodel. U moet het afstemmen en aanpassen aan uw behoeften, wat kan helpen om het systeem veiliger te maken. Linux is moeilijker te beheren, maar biedt meer flexibiliteit en configuratiemogelijkheden.

Het beveiligen van een systeem in een productie tegen de handen van hackers en crackers is een uitdagende taak voor een systeembeheerder. Dit is ons eerste artikel met betrekking tot “Een Linux-box beveiligen” of “Een Linux-box versterken“. In dit bericht leggen we 25 handige tips & trucs uit om je Linux-systeem te beveiligen. Ik hoop dat de onderstaande tips en trucs je enigszins zullen helpen om je systeem te beveiligen.

1. Fysieke systeembeveiliging

Configureer het BIOS om het opstarten vanaf CD/DVD, Externe apparaten, Floppy Drive in BIOS< uit te schakelen /sterk>. Schakel vervolgens het BIOS wachtwoord in en bescherm GRUB ook met een wachtwoord om de fysieke toegang tot uw systeem te beperken.

  1. Stel GRUB-wachtwoord in om Linux-servers te beschermen

2. Schijfpartities

Het is belangrijk om verschillende partities te hebben om een betere gegevensbeveiliging te verkrijgen voor het geval er zich een ramp voordoet. Door verschillende partities te maken, kunnen gegevens worden gescheiden en gegroepeerd. Wanneer zich een onverwacht ongeluk voordoet, zullen alleen de gegevens van die partitie beschadigd raken, terwijl de gegevens op andere partities bewaard blijven. Zorg ervoor dat u over de volgende afzonderlijke partities beschikt en zorg ervoor dat toepassingen van derden op afzonderlijke bestandssystemen onder /opt worden geïnstalleerd.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Minimaliseer pakketten om de kwetsbaarheid te minimaliseren

Wilt u echt dat er allerlei services worden geïnstalleerd? Het wordt aanbevolen om te voorkomen dat nutteloze pakketten worden geïnstalleerd om kwetsbaarheden in pakketten te voorkomen. Dit kan het risico minimaliseren dat het compromitteren van één dienst kan leiden tot het compromitteren van andere diensten. Zoek en verwijder of schakel ongewenste services van de server uit om de kwetsbaarheid te minimaliseren. Gebruik het commando ‘chkconfig’ om services te vinden die op runlevel 3 draaien.

/sbin/chkconfig --list |grep '3:on'

Zodra u ontdekt dat er ongewenste services actief zijn, schakelt u deze uit met de volgende opdracht.

chkconfig serviceName off

Gebruik de RPM pakketbeheerder zoals “yum” of “apt-get” tools om alle geïnstalleerde pakketten op een systeem weer te geven en deze te verwijderen met het volgende commando.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 chkconfig-opdrachtvoorbeelden
  2. 20 praktische voorbeelden van RPM-opdrachten
  3. 20 Linux YUM-opdrachten voor Linux-pakketbeheer
  4. 25 APT-GET- en APT-CACHE-opdrachten om pakketbeheer te beheren

4. Controleer de luisternetwerkpoorten

Met behulp van het netwerkcommando ‘netstat’ kunt u alle open poorten en bijbehorende programma’s bekijken. Zoals ik hierboven al zei, gebruik je de opdracht ‘chkconfig’ om alle ongewenste netwerkservices van het systeem uit te schakelen.

netstat -tulpn
  1. 20 Netstat-opdrachten voor netwerkbeheer in Linux

5. Gebruik Secure Shell (SSH)

De protocollen Telnet en rlogin gebruiken platte tekst en niet een gecodeerd formaat, wat een inbreuk op de beveiliging is. SSH is een veilig protocol dat gebruik maakt van encryptietechnologie tijdens de communicatie met de server.

Log nooit rechtstreeks in als root, tenzij dit noodzakelijk is. Gebruik “sudo” om opdrachten uit te voeren. sudo zijn gespecificeerd in het bestand /etc/sudoers en kunnen ook worden bewerkt met het hulpprogramma “visudo”, dat wordt geopend in de VI-editor.

Het wordt ook aanbevolen om het standaard SSH 22 poortnummer te wijzigen door een ander poortnummer op een hoger niveau. Open het hoofd-SSH-configuratiebestand en stel enkele volgende parameters in om de toegang van gebruikers te beperken.

vi /etc/ssh/sshd_config
Schakel root-aanmelding uit
PermitRootLogin no
Sta alleen specifieke gebruikers toe
AllowUsers username
Gebruik SSH Protocol 2-versie
Protocol 2
  1. 5 beste praktijken om de SSH-server te beveiligen en te beschermen

6. Houd het systeem up-to-date

Houd het systeem altijd up-to-date met de nieuwste releasepatches, beveiligingsoplossingen en kernel wanneer deze beschikbaar zijn.

yum updates
yum check-update

7. Cronjobs afsluiten

Cron heeft een eigen ingebouwde functie, waarmee u kunt specificeren wie wel en wie geen taken wil uitvoeren. Dit wordt gecontroleerd door het gebruik van bestanden genaamd /etc/cron.allow en /etc/cron.deny. Om een gebruiker te vergrendelen die cron gebruikt, hoeft u alleen maar gebruikersnamen toe te voegen in cron.deny en een gebruiker toe te staan cron add uit te voeren in het bestand cron.allow. Als u wilt voorkomen dat alle gebruikers cron gebruiken, voegt u de regel ‘ALL’ toe aan het bestand cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 Cron Scheduling-voorbeelden in Linux

8. Schakel de USB-stick uit om te detecteren

Vaak komt het voor dat we willen voorkomen dat gebruikers een USB-stick in systemen gebruiken om gegevens tegen diefstal te beschermen en te beveiligen. Maak een bestand '/etc/modprobe.d/no-usb' en als u de onderstaande regel toevoegt, wordt USB-opslag niet gedetecteerd.

install usb-storage /bin/true

9. Zet SELinux aan

Security-Enhanced Linux (SELinux) is een verplicht beveiligingsmechanisme voor toegangscontrole dat in de kernel wordt geleverd. Het uitschakelen van SELinux betekent het verwijderen van het beveiligingsmechanisme van het systeem. Denk goed na voordat u het verwijdert. Als uw systeem is aangesloten op internet en toegankelijk is voor het publiek, denk er dan nog eens goed over na.

SELinux biedt drie basismodi, en dat zijn ze ook.

  1. Afdwingen: Dit is de standaardmodus die het SELinux beveiligingsbeleid op de machine inschakelt en afdwingt.
  2. Toegeeflijk: In deze modus zal SELinux het beveiligingsbeleid op het systeem niet afdwingen, maar alleen waarschuwen en acties registreren. Deze modus is erg handig bij het oplossen van SELinux gerelateerde problemen.
  3. Uitgeschakeld: SELinux is uitgeschakeld.

Je kunt de huidige status van de SELinux modus bekijken vanaf de commandoregel met behulp van 'system-config-selinux', 'getenforce' of ' sestatus'-opdrachten.

sestatus

Als het uitgeschakeld is, schakel dan SELinux in met behulp van het volgende commando.

setenforce enforcing

Het kan ook worden beheerd vanuit het ‘/etc/selinux/config’ bestand, waar u het kunt in- of uitschakelen.

10. Verwijder KDE/GNOME-desktops

Het is niet nodig om X Window-desktops zoals KDE of GNOME op uw speciale LAMP-server te gebruiken. U kunt ze verwijderen of uitschakelen om de beveiliging van de server en de prestaties te verbeteren. Om dit eenvoudig uit te schakelen, opent u het bestand ‘/etc/inittab‘ en stelt u run level in op 3. Als u het volledig van het systeem wilt verwijderen, gebruikt u de onderstaande opdracht.

yum groupremove "X Window System"

11. Schakel IPv6 uit

Als u geen IPv6-protocol gebruikt, moet u dit uitschakelen omdat de meeste toepassingen of beleidsregels geen IPv6-protocol vereisen en dit momenteel ook niet vereist is op de server . Ga naar het netwerkconfiguratiebestand en voeg de volgende regels toe om het uit te schakelen.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Beperk gebruikers om oude wachtwoorden te gebruiken

Dit is erg handig als u wilt voorkomen dat gebruikers dezelfde oude wachtwoorden gebruiken. Het oude wachtwoordbestand bevindt zich op /etc/security/opasswd. Dit kan worden bereikt door de PAM-module te gebruiken.

Open het bestand ‘/etc/pam.d/system-auth’ onder RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Open het bestand ‘/etc/pam.d/common-password‘ onder Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Voeg de volgende regel toe aan het gedeelte ‘auth’.

auth        sufficient    pam_unix.so likeauth nullok

Voeg de volgende regel toe aan het gedeelte ‘wachtwoord’ om te voorkomen dat een gebruiker het laatste 5 wachtwoord van hem of haar opnieuw gebruikt.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Alleen de laatste 5 wachtwoorden worden door de server onthouden. Als je een van de laatste 5 oude wachtwoorden hebt geprobeerd te gebruiken, krijg je een foutmelding zoals.

Password has been already used. Choose another.

13. Hoe u het verlopen van het wachtwoord van een gebruiker kunt controleren

In Linux worden de wachtwoorden van gebruikers opgeslagen in het bestand ‘/etc/shadow’ in gecodeerd formaat. Om het verlopen van het wachtwoord van gebruikers te controleren, moet u de opdracht ‘chage’ gebruiken. Het toont informatie over de vervaldatum van het wachtwoord, samen met de datum van de laatste wachtwoordwijziging. Deze gegevens worden door het systeem gebruikt om te beslissen wanneer een gebruiker zijn/haar wachtwoord moet wijzigen.

Gebruik de volgende opdracht om de ouderdomsinformatie van een bestaande gebruiker te bekijken, zoals de vervaldatum en tijd.

#chage -l username

Gebruik de volgende opdracht om de wachtwoordveroudering van een gebruiker te wijzigen.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parameters
  1. -M Stel het maximale aantal dagen in
  2. -m Stel het minimum aantal dagen in
  3. -W Stel het aantal waarschuwingsdagen in

14. Account handmatig vergrendelen en ontgrendelen

De functies voor vergrendelen en ontgrendelen zijn erg handig. In plaats van een account uit het systeem te verwijderen, kunt u deze voor een week of een maand vergrendelen. Om een specifieke gebruiker te vergrendelen, kunt u het volgcommando gebruiken.

passwd -l accountName

Opmerking: de vergrendelde gebruiker is nog steeds alleen beschikbaar voor root-gebruikers. De vergrendeling wordt uitgevoerd door het gecodeerde wachtwoord te vervangen door een tekenreeks (!). Als iemand via dit account toegang probeert te krijgen tot het systeem, krijgt hij een foutmelding zoals hieronder.

su - accountName
This account is currently not available.

Gebruik de opdracht as om de toegang tot een vergrendeld account te ontgrendelen of in te schakelen. Hiermee wordt de tekenreeks (!) met een gecodeerd wachtwoord verwijderd.

passwd -u accountName

15. Sterkere wachtwoorden afdwingen

Een aantal gebruikers gebruikt zachte of zwakke wachtwoorden en hun wachtwoord kan worden gehackt met woordenboekgebaseerde aanvallen of brute force-aanvallen. De module ‘pam_cracklib‘ is beschikbaar in de modulestack PAM (Pluggable Authentication Modules), waardoor de gebruiker wordt gedwongen sterke wachtwoorden in te stellen. Open het volgende bestand met een editor.

Lees ook:

vi /etc/pam.d/system-auth

En voeg een regel toe met kredietparameters als (lcredit, ucredit, dcredit en/of ocredit, respectievelijk kleine letters , hoofdletters, cijfers en andere)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Schakel Iptables in (firewall)

Het wordt sterk aanbevolen om de Linux firewall in te schakelen om ongeautoriseerde toegang tot uw servers te beveiligen. Pas regels in iptables toe om inkomende, uitgaande en doorsturende pakketten te filteren. We kunnen het bron- en bestemmingsadres opgeven dat moet worden toegestaan of geweigerd in een specifiek udp/tcp poortnummer.

  1. Basisgids en tips voor IPTables

17. Schakel Ctrl+Alt+Delete uit in Inittab

In de meeste Linux-distributies zorgt het indrukken van ‘CTRL-ALT-DELETE’ ervoor dat uw systeem opnieuw opstart. Het is dus geen goed idee om deze optie in ieder geval op productieservers ingeschakeld te hebben, als iemand dit per ongeluk doet.

Dit is gedefinieerd in het bestand ‘/etc/inittab’. Als je goed in dat bestand kijkt, zie je een regel die lijkt op hieronder. Standaard wordt de regel niet becommentarieerd. We moeten er commentaar op geven. Deze specifieke signalering van de toetsenreeks zal een systeem afsluiten.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Accounts controleren op lege wachtwoorden

Elk account met een leeg wachtwoord betekent dat het wordt geopend voor ongeautoriseerde toegang voor iedereen op internet en dat het deel uitmaakt van de beveiliging binnen een Linux-server. U moet er dus voor zorgen dat alle accounts sterke wachtwoorden hebben en dat niemand geautoriseerde toegang heeft. Lege wachtwoordaccounts zijn veiligheidsrisico's en kunnen gemakkelijk worden gehackt. Gebruik de volgende opdracht om te controleren of er accounts met een leeg wachtwoord waren.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Geef de SSH-banner weer voordat u zich aanmeldt

Het is altijd een beter idee om vóór SSH-authenticatie een legale banner of beveiligingsbanners met enkele beveiligingswaarschuwingen te hebben. Lees het volgende artikel om dergelijke banners in te stellen.

  1. SSH-waarschuwingsbericht weergeven aan gebruikers

20. Monitor gebruikersactiviteiten

Als u met veel gebruikers te maken heeft, is het belangrijk om de informatie te verzamelen over de activiteiten en processen van elke gebruiker en deze op een later tijdstip te analyseren of, als er sprake is van prestatie- of beveiligingsproblemen. Maar hoe we informatie over gebruikersactiviteiten kunnen monitoren en verzamelen.

Er zijn twee handige tools genaamd ‘psacct’ en ‘acct’ die worden gebruikt voor het monitoren van gebruikersactiviteiten en -processen op een systeem. Deze tools draaien op een systeemachtergrond en volgen voortdurend elke gebruikersactiviteit op een systeem en de bronnen die worden verbruikt door services zoals Apache, MySQL, SSH, FTP, enz. Bezoek de onderstaande URL voor meer informatie over installatie, configuratie en gebruik.

  1. Monitor gebruikersactiviteit met psacct- of acct-opdrachten

21. Controleer logboeken regelmatig

Verplaats logs naar een speciale logserver, dit kan voorkomen dat indringers lokale logs gemakkelijk kunnen wijzigen. Hieronder vindt u de naam van de algemene Linux-standaardlogbestanden en hun gebruik:

  1. /var/log/message – Waar volledige systeemlogboeken of huidige activiteitenlogboeken beschikbaar zijn.
  2. /var/log/auth.log – Authenticatielogboeken.
  3. /var/log/kern.log – Kernellogboeken.
  4. /var/log/cron.log – Crond-logs (cron-job).
  5. /var/log/maillog – Logboeken van de e-mailserver.
  6. /var/log/boot.log – Systeemopstartlogboek.
  7. /var/log/mysqld.log – Logbestand van de MySQL-databaseserver.
  8. /var/log/secure – Authenticatielogboek.
  9. /var/log/utmp of /var/log/wtmp: bestand met inloggegevens.
  10. /var/log/yum.log: Yum logbestanden.

22. Belangrijke bestandsback-up

In een productiesysteem is het noodzakelijk om een back-up van belangrijke bestanden te maken en deze in een veiligheidskluis, op een externe locatie of elders te bewaren voor noodherstel.

23. NIC-binding

Er zijn twee soorten modi bij NIC-binding, die vermeld moeten worden in de bonding-interface.

  1. mode=0 – Ronde Robin
  2. mode=1 – Actief en back-up

NIC Bonding helpt ons een enkel punt van falen te voorkomen. Bij NIC-binding verbinden we twee of meer Netwerk Ethernet-kaarten met elkaar en vormen één enkele virtuele interface waar we een IP-adres kunnen toewijzen om met andere te praten servers. Ons netwerk zal beschikbaar zijn in het geval dat één NIC-kaart om welke reden dan ook niet beschikbaar is of niet beschikbaar is.

Lees ook: Creëer NIC Channel Bonding in Linux

24. Houd /boot als alleen-lezen

De Linux-kernel en de bijbehorende bestanden bevinden zich in de map /boot, die standaard de naam lezen-schrijven heeft. Als u dit wijzigt in alleen-lezen, vermindert u het risico op ongeoorloofde wijziging van kritieke opstartbestanden. Om dit te doen, opent u het bestand “/etc/fstab”.

vi /etc/fstab

Voeg onderaan de volgende regel toe, sla deze op en sluit deze.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Houd er rekening mee dat u de wijziging naar lezen/schrijven moet resetten als u in de toekomst de kernel moet upgraden.

25. Negeer ICMP- of uitzendverzoek

Voeg de volgende regel toe aan het bestand “/etc/sysctl.conf” om het ping- of broadcast-verzoek te negeren.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Laad nieuwe instellingen of wijzigingen door de volgende opdracht uit te voeren

#sysctl -p

Als u een belangrijke beveiligings- of verhardingstip in de bovenstaande lijst hebt gemist, of als u een andere tip heeft die in de lijst moet worden opgenomen. Laat uw opmerkingen achter in ons opmerkingenveld. TecMint is altijd geïnteresseerd in opmerkingen, suggesties en discussies over verbeteringen.