4 måder at deaktivere rodkonto i Linux


Rødkontoen er den ultimative konto på et Linux og andre Unix-lignende operativsystemer. Denne konto har adgang til alle kommandoer og filer på et system med fuld læsning, skrivning og udførelse af tilladelser. Det bruges til at udføre enhver form for opgave på et system; at installere/fjerne/opgradere softwarepakker og meget mere.

Da rodbrugeren har absolutte beføjelser, er alle handlinger, han/hun udfører, kritiske for et system. I denne henseende kan eventuelle fejl fra rodbrugeren have enorme konsekvenser for den normale drift af et system. Derudover kan denne konto også blive misbrugt ved at bruge den forkert eller uhensigtsmæssigt enten ved et uheld, ondsindet eller gennem konstrueret uvidenhed om politikker.

Derfor tilrådes det at deaktivere rodadgangen på din Linux-server, i stedet oprette en administratorkonto, der skal konfigureres til at få root-brugerrettigheder ved hjælp af sudo-kommandoen til at udføre kritiske opgaver på serveren.

I denne artikel vil vi forklare fire måder at deaktivere rodbrugerkonto-login i Linux.

Opmærksomhed: Før du blokerer adgang til rodkontoen, skal du sørge for at have oprettet en administratorkonto, der er i stand til at bruge kommandoen useradd og give denne brugerkonto en stærk adgangskode. Flagget -m betyder Opret brugerens hjemmekatalog, og -c gør det muligt at specificere en kommentar:

# useradd -m -c "Admin User" admin
# passwd admin

Føj derefter denne bruger til den relevante gruppe systemadministratorer ved hjælp af kommandoen usermod, hvor kontakten -a betyder tilføj brugerkonto og -G angiver en gruppe, der skal tilføjes brugeren i (hjul eller sudo afhængigt af din Linux-distribution):

# usermod -aG wheel admin    #CentOS/RHEL
# usermod -aG sudo admin     #Debian/Ubuntu 

Når du har oprettet en bruger med administrative rettigheder, skal du skifte til den konto for at blokere rodadgang.

# su admin

1. Skift rodbrugerens shell

Den enkleste metode til at deaktivere rodbruger login er at ændre sin shell fra /bin/bash eller /bin/bash (eller en hvilken som helst anden shell, der tillader bruger login) til /sbin/nologin , i filen/etc/passwd, som du kan åbne til redigering ved hjælp af en hvilken som helst af dine foretrukne kommandolinjeditorer som vist.

  
$ sudo vim /etc/passwd

Skift linje:

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

Gem filen, og luk den.

Fra nu af, når rodbrugeren logger på, får han/hun beskeden "Denne konto er i øjeblikket ikke tilgængelig." Dette er standardmeddelelsen, men du kan ændre den og indstille en brugerdefineret besked i filen /etc/nologin.txt.

Denne metode er kun effektiv med programmer, der kræver en shell til brugerlogin, ellers kan sudo-, ftp- og e-mail-klienter få adgang til rodkontoen.

2. Deaktiver rod-login via konsollenhed (TTY)

Den anden metode bruger et PAM-modul kaldet pam_securetty, som kun tillader rodadgang, hvis brugeren logger på en "sikker" TTY, som defineret af listen i/etc/securetty.

Ovenstående fil giver dig mulighed for at specificere, hvilke TTY-enheder rodbrugeren har lov til at logge på, tømning af denne fil forhindrer rodlogin på alle enheder, der er knyttet til computersystemet.

For at oprette en tom fil skal du køre.

$ sudo mv /etc/securetty /etc/securetty.orig
$ sudo touch /etc/securetty
$ sudo chmod 600 /etc/securetty

Denne metode har nogle begrænsninger, den påvirker kun programmer som login, displayadministratorer (dvs. gdm, kdm og xdm) og andre netværkstjenester, der starter en TTY. Programmer som su, sudo, ssh og andre relaterede openssh-værktøjer har adgang til rodkontoen.

3. Deaktiver SSH-rodlogin

Den mest almindelige måde at få adgang til eksterne servere eller VPS'er er via SSH og for at blokere rodbrugerlogin under det skal du redigere filen/etc/ssh/sshd_config.

$ sudo vim /etc/ssh/sshd_config

Derefter fjernes kommentar (hvis det kommenteres) direktivet PermitRootLogin og indstil dets værdi til no som vist på skærmbilledet.

Når du er færdig, skal du gemme og lukke filen. Genstart derefter sshd-tjenesten for at anvende den seneste ændring i konfigurationer.

$ sudo systemctl restart sshd 
OR
$ sudo service sshd restart 

Som du måske allerede ved, påvirker denne metode kun openssh-værktøjssættet, programmer som ssh, scp, sftp blokeres fra adgang til rodkontoen.

4. Begræns rodadgang til tjenester via PAM

Pluggable Authentication Modules (kort sagt PAM) er en central, plugbar, modulær og fleksibel godkendelsesmetode på Linux-systemer. PAM via /lib/security/pam_listfile.so-modulet giver stor fleksibilitet til at begrænse rettighederne til bestemte konti.

Ovenstående modul kan bruges til at henvise til en liste over brugere, der ikke har tilladelse til at logge ind via nogle måltjenester såsom login, ssh og andre PAM-opmærksomme programmer.

I dette tilfælde vil vi deaktivere rootbrugeradgang til et system ved at begrænse adgangen til login og sshd-tjenester. Åbn først og rediger filen for måltjenesten i /etc/pam.d/ biblioteket som vist.

$ sudo vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

Dernæst tilføj nedenstående konfiguration i begge filer.

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

Når du er færdig, skal du gemme og lukke hver fil. Opret derefter den almindelige fil/etc/ssh/nægtede brugere, der skal indeholde et element pr. Linje og ikke verdenslæselig.

Tilføj navnet rod i det, gem derefter og luk det.

$ sudo vim /etc/ssh/deniedusers

Indstil også de nødvendige tilladelser til dette.

$ sudo chmod 600 /etc/ssh/deniedusers

Denne metode påvirker kun programmer og tjenester, der er PAM-opmærksomme. Du kan blokere rootadgang til systemet via ftp- og e-mail-klienter og mere.

For mere information, se de relevante mandsider.

$ man pam_securetty
$ man sshd_config
$ man pam

Det er alt! I denne artikel har vi forklaret fire måder at deaktivere rodbruger login (eller konto) i Linux. Har du kommentarer, forslag eller spørgsmål, er du velkommen til at kontakte os via feedbackformularen nedenfor.