Article View: pl.comp.sys.sun.admin
Article #1811Re: blokowanie portow TCP
From: Adam Wolny
Date: Fri, 25 Jul 1997 10:55
Date: Fri, 25 Jul 1997 10:55
61 lines
4399 bytes
4399 bytes
> Mnie sie zawsze wydawalo, ze o ile na danym porcie TCP nie siedzi > zaden daemon (uruchamiany z inetd albo jako "standalone"), to port ten > jest zablokowany. To nie jest tak. Co to znaczy, że siedzi jakis daemon na porcie ??? Chyba to, że sobie go właśnie sobie zabindował, czyli zwrócił się do jądra, względnie do jakiejś biblioteki z prośbą o przydzielenie mu niejako "wyłączności" na korzystanie z tego portu. Inaczej się tego nie da zrobić. Jak Ty sobie wyobrażałeś przydzielanie portów ??? Jak niby ten daemon miałby "siedzieć" na tym porcie ??? Dlaczego tylko daemon, co to on jest jakiś inny czy co ??? A jeśli tak to po czym system ma odróżnić który proces jest daemonem a który nie ??? A poza tym to co rozumiesz przez pojęcie "standalone". A nawiasem mówiąc to gdyby wszystkie porty były tak na dzień dobry zablokowane to byś się nawet nie zalogował do systemu, nie mówiąc o jakiejkolwiek pracy, a 99% programów by nie działała. Wszytkie porty są odblokowane i jeżeli już ktoś (jakiś proces) sobie nie zajął danego portu (nie zabindował go) to jest on wolny i dostępny dla wszystkich. Wyjątkiem są porty o numerach poniżej 1024 które bindować może tylko user o UID'ie 0 najczęściej nazywający się root'em. Ale dla niego też są identyczne zależności jak powyżej. Dlatego też sendmail (25), ftpd (21), telnetd (23), sshd (22) (w nawiasach podałem numery portów) chodzą z root'a bo muszą mieć zabindowany port o numerze poniżej 1024. > Tak wiec, aby zablokowac jakis port nalezy wylaczyc obslugujacy ten > port daemon. Przykladowo fingerd obsluguje port 79 i uruchamiany jest > z inetd. Chcac wylaczyc te usluge, trzeba zakomentowac odpowiednia > linie w '/etc/inet/inetd.conf' i zrestartowac inetd. Inetd jest specjalnym procesem obowiązkowo chodzącym z root'a, który binduje większą ilość portów (na podstawie inetd.conf) dla różnych usług (np. ftp, finger itp.). Gdy taki inetd wykryje, że na jakimś porcie (weźmy dla przykładu ten nieszczęsny port 79) ktoś coś wysłał to patrzy sobie do inetd.conf, tam widzi że port 79 obsługuje fingerd, więc go odpala, forkując się najpierw i zmieniając UID i GID na np. nobody (dla security). W ten sposób demony normalnie zmuszone do chodzenia z root'a mogą chodzić jako inni użytkownicy (np. ftpd może chodźić z usera ftp - co się często robi). Daje to gwarancje, że nawet jak w takim ftpd czy fingerd jest dziura to i tak po wywaleniu go nic się złego nie stanie bo dostępny będzie tylko user nobody czy ftp z ograniczonymi możliwościami. Tak więc trzeba się martwić tylko o bezpieczeństwo jednego programu (inetd) a nie o 10 czy więcej. Zakomentowanie takiej linijki w inetd.conf tak jak podałeś daje dokładnie odwortne rozwiązanie do zamierzonego. Spowoduje niezabindowanie portu 79, przy starcie inetd, więc w efekcie port ten będzie wolny i będzie go można wykorzystać. Oczywiście tylko z root'a bo 79<1024. I jakbyś teraz z tego root'a podstawił pod port 79 serwer HTTP to jak ktoś by wydał komendę: finger ty@twoja.maszyna to dostałby w zamian zamiast informacji o Tobie jakąś stronę WWW (najprawdopodobniej mówiącą o błędzie w protokole). > Co zle zrozumialem? :-) Chyba tak, no ale każdy się uczy przez całe życie :-))) Poczytaj sobie manuale do funkcji: socket, bind, connect i wszystkie "see also" z nich i manual do inetd (inetd(1)), oraz przyjrzyj się plikowi /etc/services w którym są opisane porty wykorzystywane przez standardowe protokoły. -- *** Adam Wolny <--> Adwol IRC: adwol, adam *** E-mail : adwol@zeus.polsl.gliwice.pl adwol@irc.pl *** WWW : http://www.polsl.gliwice.pl/~adwol (with my PGP key)
Technical Details
Message-ID:
<199707251055.MAA15675@zeus.polsl.gliwice.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.plReferences:
<199707251004.MAA27797@horn.altar.com.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.pl From: adwol@zeus.polsl.gliwice.pl (Adam Wolny) Newsgroups: pl.comp.sys.sun.admin Subject: Re: blokowanie portow TCP Message-ID: <199707251055.MAA15675@zeus.polsl.gliwice.pl> Date: 25 Jul 97 10:55:30 GMT References: <199707251004.MAA27797@horn.altar.com.pl> Sender: owner-sun-admins-pl@sunsite.icm.edu.pl MIME-Version: 1.0 Organization: Lista dyskusyjna sun-admins-pl@icm.edu.pl Lines: 61 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit