1.Konfigurujemy karty sieciowe na maszynie z Ubuntu * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Konfigurujemy karty sieciowe na maszynie testowej z WinXP/Win7: * pierwsza karta sieciowa - zmostkowana 3. Uruchamiamy maszynę z Ubuntu , sprawdzamy ustawienia adresów IP nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, sprawdzamy tez za pomocą polecenia ping czy mamy łączność z internetem. 4. Aktualizujemy zawartość repozytoriów: sudo apt update 5. Instalujemy serwer FTP: apt install vsftpd jeżeli nie dało by się zainstalować bo wyskakuje taki błąd: Należy zrestartować Ubuntu przy użyciu polecenia: reboot lub shutdown -r now i ponowanie spróbować zainstalować 6. Konfiguracja serwera ftp znajduje się w pliku: /etc/vsftpd/conf Więc robimy kopie zapasową, w razie jakbyśmy coś namieszali: cp /etc/vsftpd.conf /etc/vsftpd.conf.bac 7.Konfiguracja dostępu autoryzowanego – wymagane będzie konto żeby się zalogować na serwerze Domyślnie serwer powinien od razu działać. Można się z nim spróbować połączyć. Utwórzmy testowe konto użytkownika stefan z hasłem 123qwe adduser stefan Po zalogowaniu się na serwer na nasze testowe konto stefan domyślnym katalogiem będzie jego katalog domowy: /home/stefan stwórzmy więc jakiś testowy plik, żeby było od razu widać, czy poprawnie się podłączyliśmy: touch /home/stefan/plik1.txt Zainstalujmy teraz klienta FTP - Filezilla: https://dl3.cdn.filezilla-project.org/client/FileZilla_3.51.0_win64- setup.exe?h=qjV41St8NdOGomVvgIO7eQ&x=1605228697 Możemy spróbować się podłączyć wpisując w odpowiednie miejsca adres IP serwera Ubuntu oraz login i hasło: Jak widać, połączyliśmy się i jesteśmy w katalogu domowym użytkownika () Domyślnie zapis na serwerze jest wyłączony więc przy próbie przesłania czegoś na serwer wyskoczy błąd (klikamy dwa razy w wybrany plik na lewym panelu, żeby go przesłać na serwer): Żeby włączyć zapis szukamy w configu poniżej zmiennej i zdejmijmy komentarz (usuńmy hash na początku linijki) Zapiszmy plik, zrestartujmy usługę: service vsftpd restart Lub systemctl restart vsftpd I sprawdźmy status serwera: service vsftpd status Jak widać serwer działa poprawnie możemy spróbować znowu przesłać plik: Plik udało się wgrać na serwer, możemy tez zerknąć z poziomu serwera czy faktycznie taki plik się pojawił: ls -l /home/stefan 7.Ustawianie banera powitalnego ustawiamy poniższą zmienną: Restartujemy serwer, spróbujmy połączyć się z cmd żeby zobaczyć nasz baner (w cmd wpisujemy ftp 192.168.1.200): 8.Blokada przechodzenia między katalogami: Po zalogowaniu każdy użytkownik może opuścić swój katalog domowy i przeglądać dowolne katalogi Jeżeli chcielibyśmy to zablokować to powinniśmy ustawić poniższe zmienne (później oczywscie restart serwera, żeby zmiany zaczęły działać): Jeżeli popatrzymy na środkowy panel, widzimy, że teraz nie ma opcji wyjścia z katalogu domowego: Jeżeli chcielibyśmy, żeby jednak wybrane konta miały możliwość przeglądania katalogow innych niż swój domowy użyjemy tej zmiennej: Musimy teraz stworzyć taki plik jak w zmiennej chroot_list_file i wpisać do niego konta użytkowników którzy mają mieć możliwość przeglądania katalogów: touch /etc/vsftpd.chroot_list wpiszę tam użytkownika zsme: echo zsme > /etc/vsftpd.chroot_list Restartujemy serwer i sprawdzamy czy działa: a teraz stefan: Wygodniej chyba było by testować to przy użyciu Total Commandera i zdefiniowaniu sobie polaczeń już od razu na odpowiednie konta: 9. Konfiguracja połączenia anonimowego Możemy chcieć, żeby była możliwość łączenia się z serweram bez konieczności logowania się. Ustawiamy zmienną: Domyślny katalog dla użytkowników anonimowych to /srv/ftp Utwórzmy tam 3 pliki: Połączmy się z serwerem anonimowo (jako login podajemy anonymous a hasło to adres email, w Filezilli możemy po prostu nie wpisywać ani loginu ani hasła): Możemy tez ustawić, żeby serwer nie pytał użytkowników anonimowych o hasło: Przetestujmy to przy użyciu cmd: Raczej logicznym działaniem jest, że domyślnie użytkownicy anonimowi nie mają prawa do zapisu. Jeżeli chcemy aby użytkownicy anonimowi mogli zapisywać pliku, powinniśmy ustawić zmienne: W opisach zmiennych widać, co dana zmienna oznacza. Dopiszmy jeszcze takie zmienne: ftp_username=stefan – ustawiamy jako kto będą zapisywać anonimowi użytkownicy, jak nie ustawimy tej zmiennej , to będzie to użytkownik o nazwie ftp anon_root=/home/ftp – katalog domyślny dla użytkowników anonimowych, jak nie ustawimy tej zmiennej, to będzie to katalog /srv/ftp W naszym przypadku ustawiłem, że użytkownicy anonimowi będą zapisywać jako konto stefan a katalog domyślny to /home/ftp Utwórzmy więc taki katalog i jakiś testowy plik, żeby było widać, czy działa poprawnie: Podłączmy się i spróbujmy coś zapisać: Przy próbie zapisu otrzymamy błąd, bo nie mamy uprawnień do zapisu w katalogu ftp: Musimy zrobić podkatalog w naszym katalogu /home/ftp mkdir /home/ftp/public i jako że ustawiliśmy że użytkownicy anonimowi zapisują z konta stefan, to np. zmienić mu właściciela na stefan: chown stefan /home/ftp/public Jak widać, stefan jako właściciel ma prawa zapisu, więc logując się na użytkownika anonimowego powinniśmy być w stanie zapisywać w utworzonym przez nas podkatalogu public. Zerknijmy czy faktycznie plik został utworzony z właścicielem stefan (tak ustawiliśmy w konfiguracji użytkowników anonimowych w naszym serwerze ftp): Oczywiście możemy też zamiast zmieniać właściciela zmienić prawa dostępu do katalogu /home/ftp/public: Ustawiłem z powrotem że właścicielem pliku jest root Teraz zmienię uprawnienia na 777 i tez powinniśmy mieć możliwość uploadu: I testujemy: Jak widać tez udało się przesłać pliki. Czego nie możemy zrobić ? Nie możemy tak po prostu ustawić praw zapisu dla całego katalogu domyślnego z którym łączą się użytkownicy anonimowi (w naszym przypadku to /home/ftp) Musimy stworzyć w nim podkatalog i dopiero w nim ustawiać prawa zapisu: W momencie gdy spróbujemy ustawić np. prawa 777 dla całego katalogu /home/ftp (przed zmianą jest 755): Zmieniamy prawa: Przy próbie połączenia się jako użytkownik zalogowany (użyje cmd z windowsa) otrzymuje komunikat: Ustawmy więc z powrotem prawa dostępu do /home/ftp na 755: sprawdźmy czy serwer nas wpuści: Zapisujemy zawsze w PODKATALOGU ! Nieważne, czy ustawimy te zmienne w konfigu naszego serwera ftp: ftp_username=stefan anon_root=/home/ftp (bez nich użytkownik anonimowy uploaduje pliki jako użytkownik o nazwie ftp a katalog domyślny z którym się łączy to /srv/ftp) TO ZAWSZE DO ZAPISU MUSISMY STWORZYC PODKATALOG I DOPIERO W NIM USTAWIC PRAWA ZAPISU czyli to sławne 777 czy też zmiana właściciela !!!!!!!!!! 10. Zaawansowane ustawienia serwera Jak ktoś chce się podoktoryzować, lub po prostu dowiedzieć się więcej na temat konfiguracji serwera vsftpd, to bardzo dobry opis po polsku zmiennych konfiguracyjnych jest tutaj: https://morfikov.github.io/post/konfiguracja-vsftpd-w-debianie/ Jak są jakieś literówki, to zgłaszajcie