Názor k článku Web server Nginx bez práv roota s pomocí systemd od mprasil - Vyhoda je ze uz od zaciatku spustas sluzbu...

  • Článek je starý, nové názory již nelze přidávat.
  • 17. 6. 2020 13:59

    mprasil

    Vyhoda je ze uz od zaciatku spustas sluzbu iba s takymi pravami ake potrebuje. Cize napriklad keby ti niekto podstrcil inu binarku alebo koli zlej konfiguracii alebo z ineho dovodu by nginx nezmenil toho pouzivatela tak system garantuje ze bude stale sluzba spustena len s pravami ake potrebuje. Keby sa napriklad v nginx objavila zranitelnost v casti kodu ktora sa vykonava este pod pravami roota (napriklad pri otvarani portov) tak opat tym zabranis niekomu zneuzit sluzbu k eskalacii prav.

    Tiez je to vyhoda z pohladu manazmentu nastaveni. Je tym explicitne priamo definovane ze sluzba ma bezat s takymi a takymi pravami. Nemusis byt odbornik na nginx aby si videl ze sluzba sa spusta s nejakymi obmedzeniami a otvaranie privilegovanych portov ma vyslovene dovolene. To sa hodi zvlast ked sprava systemu a prava sluzby je v rukach samostatnej skupiny ludi.

    Vseobecne si myslim, ze clanok sa prilis zameriava na toho non-root pouzivatela. Systemd ma kopec inych nastaveni ktore ti umoznia obmedzit prava a dosah tej konkretnej sluzby omnoho viac. Napriklad cez DevicePolicy=strict vies obmedzit pristup k zariadeniam, vies nastavit limit na vyuzitie CPU/RAM. PrivateUsers ti umozni spustit proces v samostatnom user namespace, takze sluzba bude mat vsetkych ostatnych pouzivatelov mapovanych na "nobody". PrivateTmp da sluzbe privatny /tmp, co je inak pomerne casty vektor pouzivany na eskalaciu prav. Vies kompletne skryt obsah adresarov a povolit iba tie ktore aplikacia realne potrebuje aj ked samotny pouzivatel by inak mal pravo k takym adresarom pristupovat.. Tych moznosti je vela a konkretne zmena pouzivatela z root na nobody je jedna z tych co vie nginx spravit aj sam o sebe, tak to vyznie ako zbytocna vec.