xinetd zamiast inetd
Wpisany przez crash sobota, 27 sierpnia 2005 20:25
"inetd" w skrócie jest to deamon sieciowy majacy kontrole nad
prawidłową obsługą połączeń przychodzących. Nie jest on za
najszczęśliwszym demonem, gdyz nie jest on odporny na ataki DoS,
DDoS a sa one przekleństwem. Jest wiele superdemonów ( bo tak one sie
nazywaja ), ja sie skoncentruje nad xinetd gdyż współpracuje on z, nowymi protokołami, tcp_wrapper jak również filtruje przychodzące rządania.
Pora na szybką instalacje::
[root@lame ~]#cd /usr/ports/security/xinetd
[root@lame /usr/ports/security/xinetd]#make install clean
[root@lame /usr/ports/security/xinetd]#make install clean
Domyślnie kompilacja odbywa sie z wsparciem dla tcp_wrapper.
Teraz pora na stworzenie naszego plku konfiguracyjnego::
[root@lame /usr/ports/security/xinetd]#cd /usr/local/etc
[root@lame /usr/local/etc]#touch xinetd.conf
[root@lame /usr/local/etc]#touch xinetd.conf
Ogólna składnia naszego pliku::
service nazwa_serwisu
{
atrybut operator wartość
}
{
atrybut operator wartość
}
{mosgoogle center}
Opis podstawowych opcji::
nazwa_serwisu - nazwa naszej usługi ( ftp, ssh, imap, inne ).
Dostepne atrybuty::
disable [yes/no] - Usługa aktywna/dezaktywna
flags - flagi, wartości jakie przyjmuje:
IDONLY - połączenia są zaakceptowane po identyfikacji klienta
NAMEARGS- xinetd bedzie działał tak samo jak inetd
( wymagana jest obsługa tcp wrappera )
NORETRY - aktywuje zabezpieczenie przed fork'iem
socket_type - typ gniazda, wartości:
stream (TCP)
dgram (UDP)
raw
seqpacket
wait - opcja ta określa wątkowość serwisu, wartości
yes - dozwolone tylko jedno połączenie
no - wiecej jak jedno
user - po dodaniu tej opcji demon zostanie uruchomiony z prawami danego użytkownika
server - scieżka do pliku wykonywalnego
server_args - opcja ta określa paramety z jakimi bedzie program nasz uruchomiony
log_on_failure - w momencie jak dany demon nie moze być uruchomiony ustalamy kolejność
logowania przy nawiązaniu połaczenia, wartości:
USERID - identyfikator zdalnego użytkownika
HOST - adres klienta
ATTEMPT - logowanie prób dostępu
RECORD - loguje informacje dostępne o kliencie
log_on_success - w momencie prawidlowego uruchomienia, określamy
co bedzie logowane, wartości:
USERID - identyfikator zdalnego użytkownika
HOST - adres klienta
PID - pid serwera
DURATION - czas trwania sesji
EXIT - status wyjścia procesu
Dostepne operatory:
= - przypisuje wartość atrybutowi
+= - dodaje wartość do listy wartości atrybutów
-= - odejmuje wartość z listy wartości atrybutów
Po małej lekcji zapoznawczej przechodzimy do przykładu. Chcielibyśmy odpalić poprzez
xinetd server ssh, nic prostrzego:
Edytujemy w tym cely nasz plik który stworzylismy przed chwila swoim ulubionym
edytorkiem i dopisujemy:
service ssh
{
socket_type = stream
protocol = tcp
wait = no
user = root
port = 22
server = /usr/local/sbin/sshd
server_args = -i
}
{
socket_type = stream
protocol = tcp
wait = no
user = root
port = 22
server = /usr/local/sbin/sshd
server_args = -i
}
i wszystko jasne =]
Teraz tylko maly zabieg, aby przy starcie systemu uruchomiał sie xinetd zamiast inetd, wchodzimy do katalogu:
[root@lame /usr/local/etc]#cd /etc
I edytujemy rc.conf dopisując wartości:
inetd_enable="NO"
xinetd_enable="YES"
xinetd_enable="YES"
Na koniec sponsoring od strony literek r,e,b,o,t
[root@lame /etc]#reboot
lub usmiercenie z premedytacja starego i wysłużonego inetd wraz z odpaleniem naszej usługi:
[root@lame /etc]#killall -9 inetd ; /usr/local/etc/rc.d/xinetd.sh start
Nic prostrzego, prawda ? ;-)