Weekend Prosjekt: Sette opp en TFTP Server på Linux

De fleste brukerne er kjent med FTP, men hvis du ønsker å kickstart Red Hat installerer, PXE boot systemer, auto-bestemmelsen VoIP-telefoner eller unbrick en Linux-basert router, ønsker du en Trivial File Transfer Protocol (TFTP) server. Sette en opp på Linux er enkelt, og et perfekt prosjekt for å ta på seg i løpet av helgen.

TFTP (RFC 1350) er svært lav overhead variant av den mer kjente FTP at du sannsynligvis allerede brukt til å kommunisere med . Det er optimalisert for overføring av filer over et lokalt nettverk for små enheter som kanskje ikke engang har permanent lagring. I gamle dager, som opprinnelig ment tynne klienter oppstart over nettverket. I dag er det fortsatt nettverkstjenester som er avhengige av TFTP (særlig Linux Terminal Server Project og Red Hat Kickstart fjerninstallasjonssystem), men det har tatt på en annen viktig rolle i VoIP, som den foretrukne måten å " auto-bestemmelsen " mange IP-telefoner og analoge telefonadaptere (Atas), distribuere konfigurasjonsfiler ved oppstart på en måte som ligner på DHCP. I tillegg til det, hvis du tilfeldigvis murstein din Linux-basert router når du installerer DD-WRT, kan TFTP være din eneste vei å restaurere den. Heldigvis, selv om protokollen ikke kan få samme offentlige respekt som FTP, støtter Linux det helt fint.

TFTP bruker UDP som sin transportprotokollen på reserverte port 69. Som FTP, kan den brukes i enten ASCII eller binær modus, men i motsetning til FTP det har ingen katalog-notering eller navigasjonsfunksjoner, fordi det ikke ble primært konstruert for interaktiv klient bruk. I stedet, TFTP klienter vanligvis starte opp og be om en bestemt fil. Hvis en lytte server har filen, erkjenner den forespørselen, og begynner å overføre det.

Dette er en veldig enkel prosess, som er det som gjør TFTP populært for tynn klient oppsett som Preboot Execution Environment (PXE) og for innebygde enheter uten innebygd eller USB-festes lagring. Men det inkluderer også ingen godkjenning trinn eller tilgang kontrollmetoder, som gjør man-in-the-middle angrep en svært reell sikkerhetsproblem når du arbeider med VoIP-distribusjoner som krever støtte server for å kjøre hele tiden.

En angriper som kompromitterer TFTP-serveren kan sende useriøse konfigurasjonsfiler som gjør alt fra register telefoner med gatewayer annen Session Initiation Protocol (SIP) til å utføre denial-of-service ved å sette dårlige konfigurasjonsparametere. Angripe en PXE-systemet er litt mer vanskelig, siden oppsettet inkluderer også DHCP, men det er absolutt mulig å laste opp en dårlig bootimage til tynne klienter.

På den annen side, hvis du bare trenger å unbrick ruteren eller blinke en enhet med ny firmware løpet TFTP, trenger du ikke å kjøre en TFTP-server hele tiden. Hvis du er virkelig paranoid, kan du bare koble WAN-forbindelsen i løpet av prosessen. Siden de to bruksmåter er så forskjellige, er det beste valget for en statisk TFTP server sannsynligvis ikke det valget du ønsker bare for en isolert jobb. Vi vil vurdere hver i sin tur

Sette opp statisk TFTP

For å administrere en netboot eller VoIP distribusjon, er det to hoved Linux TFTP server prosjekter å velge mellom. TFTP-hpa og atftpd. Førstnevnte er en port av OpenBSD er TFTP daemon, selv om Linux-versjonen har skilt i løpet av flere utgivelser. Atftpd (som står for Advanced TFTP) er innfødt til Linux. Begge inkluderer støtte for flere nyere TFTP revisjon alternativer, for eksempel omsettelige overføring blokkstørrelser og omsettelige time-outs.

Din distribusjon kan pakke det ene eller det andre, eller begge deler. Hvis du står overfor et valg, de viktigste forskjellene mellom de to er i sine sikkerhetsfunksjoner og støtte for multicast TFTP.

Atftpd gir bare host-nivå sikkerhet med libwrap TCP wrapper biblioteket. Du kan legge til TFTP klienter ved vertsnavn eller adresse til /etc/hosts.allow eller bruke eksklusjonsregler i /etc/hosts.deny. Tftpd-hPa, på den annen side, respekterer regler både hosts.allow og hosts.deny, men også implementerer en rekke andre sikkerhetsfunksjoner. Som standard, det kan bare tjene filer som er offentlig lesbar (dvs. o + r), og vil bare tillate filer å lastes opp av kunder hvis filnavnet i spørsmålet allerede eksisterer og er offentlig skrivbar. Endelig begynner nissen med s alternativet utfører en chroot til TFTP filkatalogen for å hindre uvedkommende i å få tilgang noe annet på serveren.

Bare atftpd imidlertid støtter multicast TFTP, både den versjonen som er angitt i RFC 2090 og litt-annerledes versjon som er en del av PXE-spesifikasjonen. Dermed, hvis du trenger å støtte PXE tynne klienter, er atftpd et bedre valg, men for alle andre, inkludert VoIP klargjøring, de ekstra sikkerhetsfunksjonene i TFTP-hpa er verdt å ha.

Begge serverne kan startes enten av inetd eller som frittstående nisser, og lagre en konfigurasjonsfil i /etc /default /.

Den TFTP-hpa serverens fil /etc /default /TFTP-hpa. Som standard inneholder den linjen RUN_DAEMON = " no ", som gjør at den kan startes og administrert av inetd. Endre denne verdien til " ja " å starte serveren som en daemon stedet. OPTIONS = linjen viser en sitert rekke run-time konfigurasjons flagg, det viktigste av disse er s /sti /til /TFTP /katalog.

Atftpd konfigurasjon er funnet i /etc /default /atftpd. Som standard, det inkluderer USE_INETD = true å indikere inetd ledelse; endre dette til falsk å kjøre atftpd som en daemon. Aftpd krever at du oppgir TFTP katalogen som siste argument, etter alle de kommandolinjebryterne, så trenger du bare å legge til /var /TFTP til slutten av sin ALTERNATIVER linje.

Neste, sørg for at du oppretter TFTP katalogen du har tenkt å bruke (si, /var /TFTP /), og gi den riktig eierskap og rettigheter. Begge daemons kjøres som brukeren ingen som standard, så kjøre chown -R ingen /var /TFTP sette eierskap på riktig måte, og chmod -R 777 /var /TFTP å tildele de riktige tillatelsene. Deretter starter nissen: enten utføre /etc/init.d/atftpd omstart eller /etc/init.d/tftpd-hpa omstart. Begge tjenestene bruker standard Linux syslog verktøyet, med run-time verbosity kontroll slik at du kan overvåke deres atferd.

For avansert bruk, hver av serverne gir også en måte å tjene alternative innholdet når den mottar en bestemt fil forespørsel, basert på vanlige uttrykk matching og erstatning. Dette kan være nyttig når en enhet er hardkodet til å be om et bestemt firmware bilde, men du trenger å flash den med en nyere erstatning. Men de to serverne varierer i sine implementeringer. Atftpd bruker Perl-støttet Regular Expressions (PCREs), og gjør det mulig for enkle mønster /utskifting parene basert på filnavn. TFTP-hpa bruker POSIX vanlig uttrykk syntaks, som ikke er så fleksibel, men det lar fil remapping regler for å være basert på kundens IP-adresse i tillegg til matchende filnavn alene

Den Enklere Case:. TFTPing en enkelt fil

Hvis alt du trenger å gjøre er å lage en fil tilgjengelig over TFTP for en kort periode, inkludert gjenopprette fabrikk firmware til en murt ruter eller laste opp en oppdatering til Cisco IP-telefonen, trenger du ikke å installere og konfigurere en full service som en av de som er omtalt ovenfor. Selv om det ville være fint om Linksys og Cisco gitt en enkel kommandolinje eller GUI TFTP program for disse anledninger, det gjør heller ikke.

Det er minst ett robust, smertefri å bruke frittstående TFTP app for Linux, skjønt: tftpgui. Skrevet i Python, er tftpgui ment å kjøres som en brukerinitiert interaktiv applikasjon. Forfatteren dokumenterer bruken med en rekke Cisco utstyr, og det har også blitt testet med Vonage, Sipura, Linksys, og Grandstream maskinvare.

Foreløpig ingen distribusjoner pakke tftpgui, så du må hente den nyeste tarball fra prosjektets nedlastingssiden. Du kan pakke ut innholdet hvor som helst; den ikke trenger å bli sammenstilt og installert for å bli brukt. For å kjøre på standardporten på 69, må du starte GUI som root, så kjøre sudo python ./tftpgui.py & å komme i gang

Det er fire knapper øverst:. start og stopp aktivere og deaktivere server, lukker Exit GUI, og Setup lar deg angi konfigurasjonsregler. Du må velge en TFTP katalog holder filene du trenger for å flytte, og du kan angi en logg katalog og endre UDP port på som serveren lytter.

Funksjonen én sikkerhets tftpgui inkluderer er evnen til å begrense innkommende TFTP forespørsler til en bestemt subnett, så hvis du må kjøre programmet i et fiendtlig miljø, kan du i det minste prøve å isolere deg selv til en ledig subnett før start. Du kan også angi eksterne klienter IP-adresse og angi en nettverksmaske av 32, selv om puristene kan kalle det juks.

Når du har brukt noen innstillinger, og trykk på Start i hovedvinduet, vil hoved lerretet rapportere noen TFTP forespørsler og returkoder. Du kan deretter starte den eksterne enheten og se sin TFTP forespørsel treffer server, eller hvis du prøver å de-murstein en ruter, følg uansett trinn instruksjonene forteller deg å gjøre.
Ikke

Tftpgui ikke støtte noen av de utvidede protokoll alternativer som filnavn erstatning eller multicasting, men hvis du ble sittende fast uten en enkel måte å tjene opp en erstatning firmware bilde eller klargjøring fil, kan det passe regningen.

På noen måter er TFTP en relikvie fra 1980-tallet. Som innebygde enheter blir smartere og minne blir billigere, er flere og flere OEM-produkter som pleide å bruke TFTP alene som sin oppdateringsmekanismen begynner å inkludere innebygd HTTP stabler. Som sikkert gjør det lettere å feilsøke, siden de fleste Linux-boksene har Apache eller annen webserver allerede installert. Likevel, når du finner deg selv fanget med en enhet som snakker bare et ukjent protokollen, er det betryggende å se at på Linux-maskiner, gamle RFC'er aldri dø. Anmeldelser



Previous:
Next Page: