Home
» LINUX
»
Hoe stel je een TFTP-server in op Ubuntu Server met tftpd-hpa?
Hoe stel je een TFTP-server in op Ubuntu Server met tftpd-hpa?
Installeer de tftpd-hpa- server en tftp-hpa- client van Ubuntu. Deze configuratie serveert bestanden /srv/tftpen bewaart uploads in een aparte map. Raadpleeg de pakketlijsten van de Ubuntu-server en -client .
Beveiliging: TFTP kent geen inloggegevens of versleuteling. Beperk de toegang tot een vertrouwd lokaal netwerk (LAN); bereikbare clients kunnen beschikbare bestanden lezen en bestanden uploaden indien de juiste machtigingen dit toestaan. Verstuur geen geheimen. De TFTP-specificatie beschrijft de beveiligingslimieten.
Stel de TFTP-server in.
1. Installeer de server en de client.
Vernieuw de APT-metadata en installeer vervolgens beide pakketten:
--secureHiermee wordt de daemon beperkt tot de geconfigureerde root, --createzijn uploads toegestaan en --umask 027worden nieuwe uploadbestanden beperkt tot de modus 0640. De Ubuntu tftpd-handleiding beschrijft deze opties. Opslaan met Ctrl+O, druk op Enter en vervolgens op Ctrl+X.
Omdat de rootmap zichtbaar is --securevoor /srv/tftpde client, zijn bestandsnamen relatief ten opzichte daarvan: gebruik hello.txt, niet /srv/tftp/hello.txt. TFTP-clients bladeren niet door mappen, dus houd een lijst bij van gepubliceerde bestandsnamen en hun paden.
Beperk de bestanden en stel het uploadmasker in.
3. Maak de hoofdmap en de uploadmap aan.
Zorg ervoor dat de hoofdmap eigendom blijft van root en geef alleen schrijftoegang tot de uploadmap:
De daemon kan de rootmap lezen, maar alleen het tftpaccount kan erin schrijven /srv/tftp/upload. Vermijd het om de hele bestandsstructuur wereldwijd beschrijfbaar te maken met machtigingen zoals 777.
Bestanden in de openbare rootmap moeten leesbaar zijn voor elke toegestane client. Beperk die map tot opstartimages, firmware of ander materiaal dat voor dat netwerk bedoeld is. Kies voor privéoverdrachten een protocol met authenticatie en versleuteling.
Alleen de subdirectory 'upload' is beschrijfbaar.
4. Voeg een bestand toe om te serveren
Maak een bekend bestand aan in de rootmap. De standaard leescontroles van TFTP vereisen dat aangeboden bestanden openbaar leesbaar zijn, dus stel de modus in op 0644:
echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
Maak een bekend bestand aan voor de downloadtest.
5. Schakel de service in en herstart deze.
Schakel het apparaat in bij het opstarten, herstart het om de instellingen toe te passen en controleer de status:
Als het opstarten mislukt, controleer dan het servicelogboek met sudo journalctl -u tftpd-hpa -b --no-pager.
Start de service opnieuw op nadat u de instellingen hebt gewijzigd.
6. Beperk de toegang tot de firewall
Als UFW is ingeschakeld, sta dan alleen het eerste verzoek toe vanuit uw clientsubnet. Vervang het voorbeeldnetwerk door uw vertrouwde LAN-bereik:
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status
Zie de UFW-handleiding van Ubuntu voor regels voor bronnetwerken. TFTP start op UDP-poort 69 en gebruikt vervolgens een door de server geselecteerde UDP-poort voor bestandsgegevens, zoals beschreven in de protocolspecificatie . Een strikte firewall, router of NAT-apparaat kan het verzoek toestaan, maar de overdracht blokkeren. Als clients een time-out krijgen, gebruik dan TFTP-compatibele verbindingsregistratie of een passend firewallbeleid; open niet elke UDP-poort en stel TFTP niet bloot aan het internet. Deze opdracht voegt een regel toe; hiermee wordt UFW niet ingeschakeld. Als u de server via SSH beheert en van plan bent een inactieve firewall in te schakelen, sta dan eerst SSH toe om toegang op afstand te behouden.
Sta initiële verzoeken toe vanuit een vertrouwd subnet.
Test downloads en uploads
7. Downloaden vanaf een Ubuntu-client
Voer op de server het commando uit ip -brief addressen noteer het bereikbare LAN-adres. Installeer indien nodig de client op een Ubuntu-client. Vervang 192.0.2.10onderstaande tekst door het daadwerkelijke serveradres:
Het bestand wordt opgeslagen in de huidige map van de client. De handleiding van de Ubuntu TFTP-client beschrijft binarydit get. De binaire modus wordt aanbevolen voor firmware, opstartimages en bestanden waarvan de bytes ongewijzigd moeten blijven. Linux-bestandsnamen zijn hoofdlettergevoelig, dus voer elke externe naam exact zo in.
Vraag het bekende bestand op in binaire modus.
8. Uploaden naar de beveiligde map
Maak aan de clientzijde een testbestand aan en stuur dit vervolgens naar een map in de uploaddirectory van de server:
Gebruik het daadwerkelijke adres van de server. Het externe pad is relatief ten opzichte van /srv/tftp; controleer de upload op de server met sudo ls -l /srv/tftp/upload/. TFTP-clients gebruiken bekende bestandsnamen in plaats van een directorylijst te doorzoeken.
Uploads blijven binnen de beschrijfbare subdirectory.
Los veelvoorkomende fouten op
Bestand niet gevonden: Controleer de bestandsnaam ten opzichte van de oorspronkelijke locatie /srv/tftpen bevestig dat het bestand bestaat.
Toegangsschending: Zorg ervoor dat aangeboden bestanden openbaar leesbaar zijn; controleer bij uploads het tftpeigenaarschap van de bestemming en bevestig dat --createdit is ingesteld.
Time-out: Controleer of de client het bereikbare adres van de server gebruikt, of de service actief is en of de firewall de overeengekomen UDP-gegevensstroom toestaat.
Om een netwerkprobleem te isoleren, test u eerst vanaf een client op hetzelfde LAN-netwerk. Als dat werkt, maar een gerouteerde client een time-out geeft, controleert u of de router of firewall TFTP-compatibel is met de onderhandelde datapoort.
Voor een alleen-lezen service, verwijder --createdeze TFTP_OPTIONSen herstart de service tftpd-hpa.