Weekend Prosjekt: Erstatt Inetd med xinetd for Bedre nettverks Administration


xinetd er et alternativ til den tradisjonelle super-serveren Internet daemon, inetd, prosessen som starter og stopper alle ikke-vedvarende nettverkstjenere. Xinetd fungerer som en drop-in erstatning for inetd, men det kan gjøre mer enn bare å starte og stoppe tjenester på din Linux-maskin som svar på innkommende TCP eller UDP-tilkoblinger. real
nytte av xinetd er at det gir mer finkornet kontroll, herunder tilgangskontrollister (ACL), hastighetsbegrensende, tidsbasert tilgang og stream omdirigering.

xinetd er pakket av alle store Linux-distribusjonene, slik at du kan installere det gjennom pakkesystem. Sperring det, kan du laste ned den siste versjonen fra xinetd.org og kompilere den med vanlig ./configure; lage; sudo make install prosessen. Det er ingen uvanlig avhengig å snakke om. Den eneste særlig risiko du påtar deg å installere det hvis din distribusjon markerer det som kommer i konflikt med den inetd pakken slik at du ikke kan ha begge installert samtidig. Sikkerhetskopier /etc/inetd.conf-filen før du fortsetter.


Konfigurasjons Basics

konfigurasjonsfil Inetd s består av en enkelt linje for hver tjeneste, oppføring tjenestens navn (som det er oppført i /etc /services-filen), socket (vanligvis stream
for TCP og dgram
for UDP), protokollen, et " vente " eller " nowait " direktiv som forteller inetd om ikke å vente på at serveren skal returnere før behandlingen ytterligere tilkoblinger, brukeren som hvem serveren skal kjøre, og stien til serveren for å starte, etterfulgt av noen argumenter. For eksempel, etter

 imap stream tcp nowait root /usr /sbin /tcpd imapdsane-port stream tcp nowait saned: saned /usr /sbin /saned saned 

Den første linjen lanserer en IMAP daemon når en forespørsel kommer inn på TCP port 220; den andre er for nettverksdeling et SANE scanner, som bruker den ikke-IETF-tildelt TCP port 6566, og kjører som saned
brukeren.

xinetd konfigurasjonsfil /etc /xinetd. conf bruker en annen syntaks, med bukseseler separert strofer holder alternativene for hver tjeneste. Hver oppføring begynner med tjenesten tjeneste
, fulgte på de neste linjene av individuelle egenskaper og deres tildelte verdiene. For eksempel, etter

 tjenesten imap {socket_type = strøm protokoll = tcp vente = ingen user = root only_from = 192.168.2.102 localhost banner_fail = /usr /local /etc /your_failure_banner server = /usr /sbin /imapd log_on_failure + = brukerid} 

De første linjene angir de samme innstillingene som vist i inetd eksempel: TCP, strøm, ingen ventetid, kjøre-som-rot. Den endelige få, tyder imidlertid på noen av xinetd er flere alternativer. Den only_from attributtet lar deg angi en space-separert liste over tillatte verter og IP-adresser. Den banner_fail attributtet lar deg angi en tekstfil vises til den eksterne verten når en tilkobling er avslått (slik som stammer tilkoblingen fra en som ikke er tillatt IP-adresse). Du kan også gi en banner_success attributt som skal vises når en tilkobling er opprettet, og et banner attributt som vises alltid, uavhengig av suksess eller fiasko.

log_on_failure attributtlister hvilke opplysninger som er skrevet til loggen når en tilkoblingen er forbudt. Legg merke til at operatøren brukt er " + = " i stedet for " = " - Dette har effekten av legge
brukerid av forbindelsen til den informasjonen som er logget som standard. Som du kanskje skjønner, er log_on_success også tilgjengelig, og det er flere dataverdier som xinetd kan logge, inkludert den eksterne verten og totale trafikktelling.

Du kan sette opp hele xinetd konfigurasjonen helt innenfor /etc /xinetd .conf, eller du skille ut ulike tjenester i egne konfigurasjonsfiler. For å gjøre dette, vil du ende /etc/xinetd.conf med en includedir direktivet, og gir som sitt argument en katalog der xinetd bør se etter flere konfigurasjonsfiler. Noen distribusjoner gjør dette som standard, vanligvis med /etc/xinetd.d/som konfigurasjonen katalogen. Hver fil i den angitte katalogen vil bli analysert, med mindre filnavnet enten begynner med en prikk eller ender med en tilde (~)

I dette tilfellet, bør du sannsynligvis ha en " (..), Mislighold " strofe i /etc/xinetd.conf fil. Dette er en spesiell strofe som tildeler utgangspunkt attributter for hver tilkobling. Noen attributter som gjelder for enkelte tjenester (for eksempel socket_type og server) gjelder ikke i mislighold; men du kan spare plass ved å plassere de mest brukte attributter her i stedet for å gjenta dem for hver tjeneste. For eksempel, etter

 defaults {log_type = FIL /var/log/services.log log_on_success = PID log_on_failure = PID HOST tilfeller = 20 banner_success = /usr /local /WELCOME_MESSAGE} 

sperringer Anmeldelser

Utover ekstra bekvemmeligheter som bannere og logging alternativer er xinetd administrative funksjoner, som du kan sette og håndheve nettverk politikk og svare på visse typer angrep.

only_from attributt i eksempelet ovenfor er den mest grunnleggende formen for adgangskontroll; i motsetning til å bruke /etc /hosts_allow, men du kan konfigurere only_from verdier for hver tjeneste individuelt, eller angi en stedsomfattende politikk i mislighold strofe, og juster det for bestemte tjenester ved å bruke + = og - = operatører i enkeltoppføringer. Speilbilde av only_from er no_access, noe som kan deaktivere tilgang til en tjeneste basert på IP eller vertsnavn. Begge attributter kan også godta en IP-adresseområde ved hjelp av ip /netmask formatering.

access_times direktivet lar deg aktivere eller deaktivere tilkoblinger basert på systemtiden. Du angir tidsintervallene når tjenesten vil
godta tilkoblinger, i time: minutt klasser. For eksempel access_times 05: 00-11: 30 13: 00-16: 30 holder tjenesten tilgjengelig fra 5 AM til 11:30, så lukkes det for en rolig lunsj pause, og gjenåpner den fra 01:30 til 4 : 30 PM. Som eksempelet viser, kan du kjede sammen flere tidsintervaller på én linje. Omvendt kan du bruke deny_time å diktere ganger når tjenesten vil bli gjort un
tilgjengelig for innkommende tilkoblinger.

Disse faste politiske tiltak kan kombineres med adaptive innstillinger som tillater deg å utløse tjeneste nedleggelse basert på maskinens tilstand eller nettverkstrafikk. Den per_source attributt, for eksempel tar et heltall som sitt argument, og begrenser antallet samtidige tilkoblinger som en enkelt vert kan gjøre bruk av tjenesten. Dette kan brukes til å begrense antall SMTP-tilkoblinger gjort, noe som kan være effektive i å fange maskiner infisert med spam-bot virus.

CPS tilskriver lar deg sette en forbindelse frekvensnivå (i tilkoblinger per sekund) , over som serveren vil bli stengt for en konfigurerbar tid. Dette gjør du unngå denial-of-service angrep basert på flom tjenesten. Plassere en innstilling på eps = 80 60 i en bestemt tjenestens strofe sier at xinetd vil svare på 80 tilkoblinger per sekund, men hvis frekvensen av tilkoblinger treffer 81, vil det stoppe tjenesten, vent 60 sekunder, og deretter begynne å behandle nye tilkoblinger igjen.

Du kan også konfigurere shutdown-terskelverdiene for belastningen på systemet (ved hjelp av max_load
attributt), samt adresseområdet (ved hjelp av rlimit_as
), CPU-sekunder ( med rlimit_cpu
), eller til og med stack størrelse ( rlimit_stack
).

Moro med verter og grensesnitt

redirect attributtet kan du videresende en TCP (men ikke UDP) forbindelse til en annen vert helt. Syntaksen er enkel, omdirigere = ip-adresse port-nummer
. Når en tilkobling på matchende tjenesten kommer inn, starter xinetd en TCP tilkobling til børsnoterte IP-adresse og port, og videresender all trafikk til det.

Dette gir deg en enkel og effektiv måte å omdirigere bestemte tjenester (kanskje til maskiner som ikke er tilgjengelige på utsiden nettverk) uten å berøre brannmurregler. Det kan være en nyttig funksjon for midlertidig å omdirigere en tjeneste, eller i kombinasjon med andre sperringer, for å omdirigere tjenester basert på sin kilde og tid på døgnet.

xinetd har også evnen til å binde en bestemt tjeneste til en bestemt nettverkskort. Dette kan være nyttig når en tjeneste genererer et stort volum av trafikk, eller hvis du ønsker å gjøre en tjeneste kun tilgjengelig over et kablet tilkobling (eth0) og ikke trådløst (wlan0). Du kan enten bruke grensesnittet eller bind attributter i tjenestens strofe, etterfulgt av IP-adressen til grensesnittet

De fleste av xinetd konfigurasjons triks kan oppnås med en kombinasjon av andre programmer -. Inetd, TCP Wrapper, hosts_allow og hosts_deny, iptables, etc. Men hva som koldtbord av hjelpemidler ikke gjøre er å gi en enkelt, enhetlig grensesnitt som du kan enkelt og greit komponere din nettverkstjeneste politikk. Anmeldelser