LFCA: Linux-järjestelmän turvallisuuden parantaminen - osa 20


Kuten me kaikki tiedämme, pääkäyttäjä on kuningas ja hänellä on rajattomat oikeudet Linux-järjestelmään. Ei-root-käyttäjät rajoittuvat kuitenkin perustehtäviin. Lisäksi sudo-käyttäjille myönnetään vain tietyt juurioikeudet, jotka root-käyttäjä katsoo sopiviksi suorittamaan tiettyjä korotettuja tehtäviä.

Ongelmia syntyy, kun tavallisilla käyttäjillä on hallitsematon pääsy resursseihin tai niiden levitetään tahattomasti juuriksi. Tämä on vakava turvallisuusriski, joka voi aiheuttaa rikkomuksia, ei-toivottuja muutoksia ja pahimmassa tapauksessa järjestelmän kaatumisen. Toinen mahdollinen riski on, kun tiedostoilla on vähemmän turvalliset tiedostojen käyttöoikeudet. Esimerkiksi käynnistystiedostoja, joilla on kirjoitusoikeudet globaaleille käyttäjille, voidaan helposti muokata tai vioittaa, mikä johtaa järjestelmän rikkoutumiseen.

[Saatat pitää myös: Hyödyllisiä vinkkejä tietojen ja Linuxin suojaamiseen]

Vaikka voimme toteuttaa fyysisen, verkko- ja tietoturvan, pahantahtoinen käyttäjä voi kiertää turvatoimenpiteet ja hyödyntää tällaisia tietoturva-aukkoja. Tästä syystä tiedostojärjestelmän turvallisuuteen tulisi suhtautua vakavasti. Se tarjoaa ylimääräisen puolustuskerroksen pahantahtoisten työntekijöiden hyökkäysten tai sisäpiirin uhkien kohdalla, joiden ei tarvitse tehdä raskasta kiertäessään turvatoimia tiedostojen käyttämiseksi.

Järjestelmän turvallisuudessa keskitymme seuraaviin avainkohtiin:

  • Käyttöoikeudet - käyttäjien ja ryhmien käyttöoikeudet.
  • Pakota salasanakäytännöt PAM-moduulilla.

Käyttöoikeudet - käyttäjien ja ryhmien erottaminen

Olet todennäköisesti kuullut, että kaikkea Linuxissa pidetään tiedostona. Ja jos ei, se on prosessi. Jokainen Linux-järjestelmän tiedosto on käyttäjän ja ryhmän käyttäjän omistuksessa. Sillä on myös tiedostoluvat kolmelle käyttäjäluokalle: Käyttäjä (u), Ryhmä (g) ja Muut (o). Käyttöoikeudet on esitetty luku-, kirjoitus- ja suoritusmuodoissa (rwx) jokaiselle käyttäjäluokalle.

rwx        rwx	     rwx
User       Group     Others

Kuten aiemmin nähtiin, ls-komennossa kuvan mukaisesti.

$ ls -l

Pelkästään yhteenvetona, käyttöoikeudet ovat yleensä yhdeksän merkkiä. Kolme ensimmäistä merkkiä edustavat tiedoston omistavan varsinaisen käyttäjän käyttöoikeuksia. Toinen merkkisarja edustaa tiedoston ryhmän omistajan oikeuksia. Viimeinen sarja muille tai globaaleille käyttäjille. Nämä merkit ovat jatkuvasti luku-, kirjoitus-, suoritus- (rwx) järjestyksessä.

Käyttöoikeuksien jälkeen meillä on käyttäjien ja ryhmien omistusoikeudet, joita seuraa tiedoston tai hakemiston koko, muokkauspäivä ja viimeisenä tiedoston nimi.

Tiedostojen/hakemistojen käyttöoikeuksien ja omistajuuden muuttaminen

Tiedostojen ja hakemistojen käyttöoikeuksia voidaan muuttaa sopiviksi katsotuiksi. Nyrkkisääntönä on käyttää vähimmäisoikeuksien suojausperiaatetta. Yksinkertaisesti sanottuna varmista, että käyttäjät saavat työn tekemiseen tarvittavat vähimmäisoikeudet tai -oikeudet.

Vähimmäisoikeuksien periaate rajoittaa käyttäjät vain tiettyihin rooleihin, ja näin minimoi riski, että hyökkääjät pääsevät kriittisiin tietoihin ja muokkaavat niitä käyttämällä vähäisen vivun käyttäjätiliä. Se vähentää myös hyökkäyspintaa ja rajoittaa haittaohjelmien leviämistä siinä tapauksessa, että hyökkääjä hallitsee järjestelmääsi.

Siksi, jos käyttäjän tarvitsee vain tarkastella tiedoston tai hakemiston sisältöä, hänelle ei pitäisi antaa suoritus- tai kirjoitusoikeuksia. Anna perustasolla vain vähiten käyttöoikeuksia ja omistajuuksia, joita käyttäjä tarvitsee tehtävien suorittamiseen. Olemme käsitelleet, miten muokata tiedostojen/hakemistojen käyttäjien oikeuksia ja omistajuuksia käyttämällä chmod- ja chown-komentoja Linuxin peruskomennoissa.

Jotta järjestelmänvalvojalla olisi helpompaa aikaa hallita käyttöoikeuksia, kokonaisille hakemistoille voidaan myöntää erityisiä käyttöoikeuksia tai käyttöoikeuksia. Yksi erityisoikeuksista, joita voidaan käyttää rajoittamaan tiedoston tai hakemiston poistamista ja muokkaamista, on tahmea bitti.

Skenaariossa, jossa kaikki järjestelmän tai verkon käyttäjät voivat käyttää jaettua hakemistoa, on olemassa riski, että jotkut käyttäjät voivat poistaa tai muokata hakemiston tiedostoja. Tämä ei ole toivottavaa, jos haluat säilyttää hakemiston sisällön eheyden. Ja tässä tulee tahmea kärki.

Tahmea bitti on erityinen tiedostolupa, joka on asetettu tiedostoon tai koko hakemistoon. Se antaa vain kyseisen tiedoston/hakemiston omistajalle oikeuden poistaa tai muuttaa tiedostoa tai hakemiston sisältöä. Kukaan muu käyttäjä ei voi poistaa tai muokata tiedostoa/hakemistoa. Sen symbolinen arvo on t ja numeerinen arvo on 1000.

Käynnistä tahmea bitti hakemistossa käyttämällä chmod-komentoa seuraavasti:

$ chmod +t directory_name

Alla olevassa esimerkissä olemme soveltaneet tahmeaa bittiä hakemistoon test. Hakemiston tapauksessa kaikki sisältö perii tahmean bitin oikeudet. Voit tarkistaa tahmean bitin käyttöoikeudet komennolla ls -ld. Muista huomata t -symboli tiedoston käyttöoikeuksien lopussa.

$ ls -ld test

Jos toinen käyttäjä yrittää poistaa hakemiston tai muokata tiedostoa hakemistossa, hänet tervehditään luvalla evätään -virhe.

Ja se on stick bit -tiedostoluvan ydin.

SUID (Set User ID) on toinen erityinen tiedostolupa, jonka avulla toinen tavallinen käyttäjä voi suorittaa tiedoston tiedoston omistajan tiedostoluvilla. Se on yleensä merkitty symbolisella arvolla s käyttäjän käyttöoikeusosassa sen sijaan, että se olisi x , joka edustaa käyttöoikeuksia. SUID: n numeerinen arvo on 4000.

SGID (Set Group ID) antaa tavallisen käyttäjän periä tiedostoryhmän omistajan ryhmäoikeudet. Sen sijaan, että x suorittaisi käyttöoikeuksia, näet tiedoston käyttöoikeuksien ryhmäosassa s . SGID: n numeerinen arvo on 2000.

Vaikka ne osoittautuisivatkin mukaviksi, SUID- ja SGID-oikeudet liittyvät turvallisuusriskeihin, ja niitä tulisi välttää hinnalla millä hyvänsä. Tämä johtuu siitä, että he myöntävät erityisiä oikeuksia tavallisille käyttäjille. Jos tavallisena käyttäjänä esiintyvä tunkeilija törmää pääkäyttäjän omistamaan suoritettavaan tiedostoon, johon on asetettu SUID-bitti, hän voi käyttää tätä aukkoa ja hyödyntää järjestelmää.

Jos haluat löytää kaikki tiedostot, joiden SUID-bitti on asetettu Linuxissa, suorita etsi-komento pääkäyttäjänä.

$ find / -perm -4000 type -f

Hakemistoja varten:

$ find / -perm -4000 type -d

Kaikkien SGID-bittisarjalla suoritettujen tiedostojen löytäminen:

$ find / -perm -2000 type -f

Suoritettavat hakemistot:

$ find / -perm -2000 type -d

Poista tiedoston SUID-bitti suorittamalla chmod-komento kuvan mukaisesti:

$ chmod u-s /path/to/file

Poista tiedoston SGID-bitti suorittamalla komento:

$ chmod g-s filename /path/to/file

Ei ole harvinaista, että käyttäjät asettavat heikkoja salasanoja. Hyvä numero asettaa lyhyet, selkeät ja helposti arvattavat salasanat, jotta vältetään niiden unohtaminen kirjautumisen aikana. Vaikka kätevät, heikot salasanat voidaan helposti rikkoa käyttämällä raa'an voiman hyökkäysskriptejä.

PAM-moduuli (Pluggable Authentication Module) on moduuli, jonka avulla järjestelmänvalvojat voivat valvoa salasanakäytäntöjä Linux-järjestelmissä. Tämän saavuttamiseksi tarvitset pam_pwquality-moduulin, jonka tarjoaa libpam_pwquality-kirjasto. Pam_pwquality-moduuli tarkistaa salasanan voimakkuuden sääntöjen ja järjestelmäsanakirjan joukosta ja osoittaa heikot salasanavalinnat.

Asenna pam_pwquality-moduuli Ubuntu 18.04: een ja uudempiin versioihin suorittamalla:

$ sudo apt install libpam_pwquality

Suorita komento RHEL/CentOS 8:

$ sudo dnf install libpwquality

Kokoonpanotiedosto löytyy seuraavasta sijainnista:

  • Debian-Systems - /etc/pam.d/common-password
  • RedHat-järjestelmissä - /etc/pam.d/system-auth

Ennen kuin aloitamme PAM-määritystiedoston muokkaamisen, harkitaan ensin oivallusten keräämistä salasanan ikääntymisen ohjaimista.

Nämä löytyvät tiedostosta /etc/login.defs.

Tiedosto sisältää seuraavat keskeiset salasanan säätimet:

  • PASS_MAX_DAYS: Salasanojen päivien enimmäismäärä.
  • PASS_MIN_DAYS: vähimmäismäärä. salasanan vaihtamisen välillä sallittua päivää.
  • PASS_WARN_AGE: Niiden päivien määrä, jotka on annettu ennen salasanan vanhentumista.

Oletusarvot ilmoitetaan alla.

PASS_MAX_DAYS-attribuutti rajoittaa päivien määrää, jonka käyttäjä voi käyttää salasanaan. Kun tämä arvo saavutetaan tai salasana umpeutuu, käyttäjän on vaihdettava salasanansa kirjautumalla järjestelmään. Oletusarvoisesti tämä arvo on 99999, mikä tarkoittaa 273 vuotta. Tällä ei ole paljon järkeä turvallisuuden suhteen, koska käyttäjä voi jatkaa salasanansa käyttöä koko eliniän ajan.

Voit asettaa tämän merkitykselliseksi arvoksi, esimerkiksi 30 päiväksi kuvan mukaisesti.

PASS_MAX_DAYS  30

30 päivän kuluttua käyttäjän on pakko vaihtaa salasanansa toiseen.

PASS_MIN_DAYS-määritteessä kerrotaan vähimmäiskesto, jonka käyttäjät voivat käyttää salasanaan ennen sen vaihtamista. Mitä tämä tarkoittaa? Jos esimerkiksi arvoksi asetetaan 15 päivää, käyttäjä ei voi vaihtaa salasanaansa uudelleen ennen kuin 15 päivää on kulunut.

PASS_MAX_DAYS  15

PASS_WARN_AGE-määritteellä määritetään, kuinka monta päivää käyttäjä saa varoituksen salasanansa lähestyvästä vanhentumisesta ennen sen vanhentumista. Voit esimerkiksi asettaa tämän 7 päiväksi kuvan mukaisesti.

PASS_MAX_DAYS  7

HUOMAUTUS: Nämä salasanasäätimet eivät toimi aiemmin luotujen tilien kanssa. Niitä sovelletaan vain uusiin tileihin, jotka on luotu sääntöjen määrittelyn jälkeen.

Ennen kuin muokkaat tiedostoa /etc/pam.d/common-password, luo varmuuskopio. Tässä esimerkissä olemme luoneet common-password.bak-varmuuskopiotiedoston.

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

Avaa sitten tiedosto.

$ sudo vim /etc/pam.d/common-password 

Etsi alla oleva viiva.

password        requisite          pam_pwquality.so retry=3

Yritä uudelleen -asetus määrittää enimmäismäärän, kuinka monta kertaa sinun on annettava oikea salasana ennen virheen saamista. Oletuksena tämä on 3. Tämä on vain yksi vaihtoehto, ja aiomme sisällyttää useita vaihtoehtoja.

Lisää seuraavat attribuutit riville:

minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username 

Tarkennetaan nämä ominaisuudet.

  • minlen = 10: Asettaa salasanalle pienimmän hyväksyttävän koon. Tässä tapauksessa 10 merkkiä.
  • difok = 3: Tämä on enimmäismerkkimäärä edellisessä salasanassa.
  • lcredit = -1: Tämä on vähimmäismäärä pieniä merkkejä, jotka pitäisi olla salasanassa.
  • ucredit = -1: Salasanassa on oltava enimmäismäärä pieniä kirjaimia.
  • dcredit = -1: Salasanassa määritettävä vähimmäismäärä numeromerkkejä.
  • ocredit = -1: Erikoismerkkien vähimmäismäärä, esim. @, #, ja jotka tulisi määrittää salasanassa.
  • reject_username: Tämä vaihtoehto laukaisee salasanan hylkäämisen, jos salasana on käyttäjänimi joko suorassa tai käänteisessä muodossa.

Jos yrität luoda uuden käyttäjän, joka ei täytä salasanakäytäntöjä, törmäät sellaisiin virheisiin, kuten on esitetty.

Tämä päättää aiheen järjestelmän turvallisuudesta ja yleisesti turvallisuuden perusteista. Koko luvussa olemme paljastaneet perusturvallisuustoimenpiteet, jotka voit toteuttaa suojellaksesi Linux-järjestelmääsi haitallisilta käyttäjiltä, kuten hakkereilta tai tyytymättömiltä työntekijöiltä.