• Uwaga na suid-y

    dodany przez Konrad Stępień

    Do popełnienia tego tekstu skłonił mnie artykuł o tym jak zrobić żeby ping działał. Nie chodzi mi o samego ping-a, bo ping od dawien dawna suid-a miał i jakoś się świat nie zawalił. Ale jest też parę innych narzędzi które działają “z root-a” i aż kusi żeby zrobić “chmod +s”. Ot choćby traceroute czy jego “kuzyn” mtr. Danie s-ki jest łatwe i rozwiązuje sprawę, więc dlaczego twórcy dystrybucji tego nie zrobili? Ano z powodów bezpieczeństwa. Bo program z ustawionym setUID wykonuje się z prawami właściciela pliku a nie tego kto go uruchomił. Czyli program setuid-root będzie się wykonywał z prawami root-a niezależnie kto go uruchomi. Czyli, jeśli program ma jakiś błąd, to jego wykorzystanie daje możliwość zrobienie czegoś jako root właśnie. Akurat ping jest na tyle prostu i na tyle stary, że nie spodziewam się tu jakichś zagrożeń, o tyle włamania przez mtr-a już się zdarzały parę razy. W polityce bezpieczeństwa najlepsza jest zasada dawania minimalnych niezbędnych uprawnień i ani trochę więcej. A ustawienie +s tak po prostu to danie dostępu dla wszystkich. Co więc zrobić, jeśli trzeba takiego ping-a czy mtr-a udostępnić jakiejś grupie użytkowników? Słowo klucz to “grupa”. Jeśli chcemy żeby kilka kont mogło uruchamiać na przykład mtr-a, trzeba stworzyć grupę. Czyli robimy:

    groupadd mtr
    chmod o-x /usr/bin/mtr
    chgrp mtr /usr/bin/mtr
    chmod u+s /usr/bin/mtr

    Co zrobiliśmy? Po pierwsze, stworzyliśmy grupę “mtr”. Potem zabraliśmy możliwość uruchomienia mtr-a dla wszystkich, czyli może go uruchomić tylko root i członkowie grupy mtr. Na koniec ustawiliśmy setuid-a. Jeśli ktoś ma mieć prawo korzystania z mtr to się go dopisuje do grupy mtr i tyle. Oczywiście, jeśli ktoś znajdzie błąd w mtr, to nadal będzie go można wykorzystać. Ale już nie będzie to takie łatwe.

Dodaj komentarz

Warto odwiedzić
Valid XHTML 1.0 Transitional centos.com.pl- mapa strony