Nie, nie zrobiłem literówki w tytule. W tym wpisie stworzymy sobie prosty serwer tftp, który możecie wykorzystać do przesyłania konfiguracji czy firmware do telefonów VoIP, niektórych routerów, drukarek itp. Obiecuję, że tym razem nie będzie to zbyt długi wpis ????
Z angielskiego Trivial File Transfer Protocol co można przetłumaczyć jako prosty/banalny/trywialny protokół przesyłania plików, który wykorzystuje do komunikacji protokół UDP oraz korzysta z portu 69. Został wydany w Styczniu 1980 i od tamtego czasu niewiele się zmienił. Nie obsługuje on szyfrowanego połączenia ani tworzenia kont użytkowników a mimo to nadal jest używany w świecie informatyki.
W repozytoriach tych dystrybucji znajduje się już gotowy pakiet o nazwie tftpd-hpa, który umożliwi postawienie nam serwera tftp, który jest prawie odrazu gotowy do użycia
Instalację wykonujemy poleceniem
sudo apt-get install tftpd-hpa
Teoretycznie serwer jest już gotowy i uruchomiony, a przynajmniej żeby pobierać z niego pliki. Możecie sprawdzić czy wszystko poszło zgodnie z planem poleceniem
sudo service tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server Loaded: loaded (/etc/init.d/tftpd-hpa; bad; vendor preset: enabled) Active: active (running) since pon 2018-08-20 20:45:59 CEST; 44min ago Docs: man:systemd-sysv-generator(8) CGroup: /system.slice/tftpd-hpa.service └─31279 /usr/sbin/in.tftpd --listen --user tftp --address :69 --secur sie 20 20:45:59 systemd[1]: Starting LSB: HPA's tftp server... sie 20 20:45:59 tftpd-hpa[31248]: * Starting HPA's tftpd in.tftp sie 20 20:45:59 tftpd-hpa[31248]: ...done. sie 20 20:45:59 systemd[1]: Started LSB: HPA's tftp server.
Jak widać wszystko jest ok, więc czas na testy. Wrzućmy najpierw jakiś plik do katalogu domyślnego tftp /var/lib/tftpboot(możecie go później zmienić w linku konfiguracji, jeśli macie taką potrzebę). Ja stworzyłem plik test_tftp.txt w katalogu domowym użytkownika na którym jestem obecnie zalogowany więc w moim przypadku polecenie będzie wyglądało następująco
cp test_tftp.txt /var/lib/tftpboot
Upsss… Też pojawił się Wam taki komunikat?”
cp: nie można utworzyć zwykłego pliku '/var/lib/tftpboot/test_tftp.txt': Brak dostępu
Dzieje się tak, ponieważ katalog tftpboot został stworzony przez użytkownika root, który ma prawo do zapisu. Trzeba więc to zmienić. Podczas instalacji został utworzony automatycznie nowy użytkownik oraz grupa o nazwie tftp, więc czemu by tego nie wykorzystać? Wpisz następujące polecenie:
sudo chown -R tftp:tftp /var/lib/tftpboot
które zmieni właściciela folderu oraz przypisze do grupy tftp. Następne polecenie
sudo chmod -R 777 /var/lib/tftpboot
pozwoli wszystkim na odczyt i zapis do foleru i gotowe. Raz jeszcze skopiujmy sobie plik test_tftp.txt
cp test_tftp.txt /var/lib/tftpboot
Tym razem powinno już być ok. Uważajcie tylko na uprawnienia kopiowanych plików, i w razie potrzeby użyjcie “chmod”
Instalacja klienta
Potrzebujemy teraz jakiegoś oprogramowania dzięki któremu będzie można pobrać plik z serwera. Aby to zrobić posłużymy się pakietem tftp
sudo apt-get install tftp
tftp adres_ip_serwera
Aby pobrać plik musicie użyć polecenia get
get test_tftp.txt
Jeśli nie było żadnych błędów to znaczy, że plik został pobrany i możecie opuścić program używając polecenia quit.
Plik konfiguracyjny znajduje się w /etc/default/tftpd-hpa. Zanim zaczniecie go edytować pamiętajcie o zrobieniu kopii pliku. Nie żeby można było w nim coś zepsuć ale warto sobie wyrabiać nawyki ;). Użyjcie polecenia cp czyli kopiuj:
sudo cp /etc/default/tftpd-hpa /etc/default/tftp-hpa.backup
Teraz możecie już bezpiecznie edytować plik konfiguracyjny swoim ulubionym edytorem. Z przyzwyczajenia ja używam mcedit, który jest częścią pakietu mc(o którym za niedługo opublikuję spory materiał)
sudo mcedit /etc/default/tftpd-hpa
Poniżej znajduje się zawartość całego pliku.
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure"
Jeśli serwer ma być wykorzystany tylko do pobierania z niego plików nie trzeba w nim nic zmieniać. Jeśli jednak chcielibyście do niego wysyłać pliki to wystarczy zmienić ostatnią linię na
TFTP_OPTIONS=”–secure –create”
W zasadzie to już wszystko. Dodam tylko, że pliki przesyła się w podobny sposób jak pobiera tylko zamiast get musicie użyć put. Po więcej szczegółów odsyłam Was do
man tftp
0 Comments
Coś to wskoczyło do kodu:
https://i.imgur.com/nWoz947.png
Faktycznie wkradł się mały błąd. Dziękuję za informację, już poprawiłem 😉