Strona główna > Serwerowo > PROFTPD – część druga. Konfigurujemy serwer.

PROFTPD – część druga. Konfigurujemy serwer.

14 Październik 2009 Dodaj komentarz Go to comments

Zanim przystąpię do przedstawienia konfiguracji postaram się poczynić pewne założenia „projektowe”. Czyli postaram się zamieścić co chcemy osiągnąć poprzez stworzoną konfigurację:

  1. Dostęp do zasobów będzie tylko i wyłączenie po podaniu poprawnego loginu oraz hasła.
  2. Użytkownicy będą podzieleni na trzy grupy: pierwsza będzie miała możliwość odczytu, druga grupa będzie miała możliwość dodawania nowych plików i przeglądania plików, trzecia grupa będzie miała możliwość dodawania, usuwania i przeglądania plików.
  3. Zostanie wprowadzone ograniczenie do logowania się na serwer ftp dla użytkowników nie należących do wymienionych wcześniej grup.
  4. Zostanie skonfigurowana wiadomość powitalna dla każdego użytkownika.

ad. 1

Tutaj nie musimy nic robić domyślnie nie da się zalogować anonimowo.

ad. 2

W tym miejscu należy utworzyć trzy grupy systemowe o następujących nazwach:

  • ftpadmin
  • ftpodczyt
  • ftpodczytzapis

Zadanie to zrealizujemy wydając następujące polecenia:

groupadd ftpadmin
groupadd ftpodczyt
groupadd ftpodczytzapis

Następnie należy do grup dodać wybranych użytkowników, co można zrealizować następującym poleceniem:

usermod -G ftpodczyt uzytkownik

Powyższe polecenie doda użytkownika do grupy ftpodczyt.

Do pełnego wykonania zadania pozostały nam jeszcze do wprowadzenia odpowiednie zmiany w pliku konfiguracyjnym, którym jest /etc/proftpd/proftpd.conf. Jako pierwszy element, w którym dokonamy zmian będzie dyrektywa DefaultRoot. Dzięki tej dyrektywie można ustawić domyślny katalog dla wybranego użytkownika lub grupy. Natomiast u nas ten wpis będzie wyglądał następująco:

DefaultRoot                     /home/ftp

Teraz każdy logujący się użytkownik będzie pracował w tym katalogu. Przejdźmy do kolejnego elementu konfiguracyjnego jakim jest ustalenie odpowiednich działań jakie użytkownicy będą mogli wykonać w katalogu bazowym. Będziemy tutaj wykorzystywać dyrektywę Directory. Należy również pamiętać o tym, że tutaj również obowiązują uprawnienia do plików i folderów systemu plików. W związku z tym w przypadku ustawienia odpowiedniej konfiguracji i problemów np. z przesyłaniem plików należy bliżej przyjrzeć się nadanym uprawnieniom do folderu ftp. Jak konfigurować uprawnienia do plików i folderów zamieściłem u mnie na blogu.

<Directory /home/ftp> # określamy ścieżkę jakiej dotyczy konfiguracja
<Limit ALL> # użycie ALL oznacza wszystkie polecenia ftp
DenyAll # odbieramy prawo wszystkim
</Limit>
<Limit LIST PWD RETR> # wybieramy polecenia ftp potrzebne do pobierania i wyświetlania zawartości
AllowAll # zezwalamy wszystkim użytkownikom
</Limit>
<Limit STOR STOU> # wybieramy polecenia ftp, które umożliwią umieszczanie plików na serwerze
AllowGroup ftpodczytzapis # dajemy zezwolenie odpowiednim grupom
AllowGroup ftpadmin
DenyAll
</Limit>
<Limit DELE> # nadajemy uprawnienie do usuwania plików dla grupy ftpadmin
AllowGroup ftpadmin
DenyAll
</Limit>

</Directory>

Jeżeli ktoś jest zainteresowany opisem oraz kompletną listą poleceń ftp może skorzystać z tej strony.

ad. 3

Należałoby teraz zabezpieczyć serwer przed przypadkowym logowaniem się na użytkownika, który posiada jakiekolwiek możliwości wykonywania działań w systemie. Zakładam, że użytkownicy tworzeni do korzystania z ftp nie posiadają możliwości do użytkowania konsoli (w dniu pisania wpisu nie istnieje u mnie wpis/wpisy dotyczące tworzenia grup czy użytkowników, ale postaram się w najbliższym czasie coś z tym zmienić ).

<Limit LOGIN> # wybieramy przywileje dla polecenia ftp login
AllowGroup ftpodczyt # nadajemy odpowiednie uprawnienia dla grup 
AllowGroup ftpadmin
AllowGroup ftpodczytzapis
    DenyAll
</Limit>

ad. 4

Pozostało nam jeszcze zadbać o komunikat powitalny dla zalogowanego użytkownika. Możemy do wykonać na dwa sposoby. Pierwszym z nich jest wykorzystanie dyrektywy DisplayLogin, a prezentuje się to następująco:

DisplayLogin /etc/proftpd/welcome.msg

Do pliku dołączamy zawartość w postaci:

Witaj %U na nowym serwerze FTP!

i zamiast %U po zalogowaniu będzie wyświetlana nazwa użytkownika. Drugim sposobem jest wykorzystanie dyrektywy AccessGrantMsg, która wygląda tak:

AccessGrantMsg "Witam %u na nowym serwerze FTP!"

Dodam jeszcze tylko, że informacje te będą wyświetlane w programach konsolowych oraz w graficznych, które posiadają zaimplementowany mechanizm pokazywania takich komunikatów.

Teraz zamieszczam cały plik konfiguracyjny tak, aby każdy wiedział, gdzie co i jak wstawiać.

Include /etc/proftpd/modules.conf
UseIPv6                         on
ServerName                      "Pierwszy FTP"
ServerType                      standalone
#Wiadomość powitalna będzie wyświetlona dopiero po poprawnym zalogowaniu
DeferWelcome                    on
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayChdir                    .message true
ListOptions                     "-l"
AccessGrantMsg "Witaj %u na pierwszym FTP!"
DenyFilter                      \*.*/
DefaultRoot                     /home/ftp
Port                            21
# PassivePorts zostało włączone dla chociażby klientów w przeglądarkach np. FireFox
PassivePorts                  60000 60100
MaxInstances                    30
User                            proftpd
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
   QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
   Ratios off
</IfModule>
<IfModule mod_delay.c>
   DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
   ControlsEngine        off
   ControlsMaxClients    2
   ControlsLog           /var/log/proftpd/controls.log
   ControlsInterval      5
   ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
   AdminControlsEngine off
</IfModule>
<Limit LOGIN>
   AllowGroup ftpodczyt
   AllowGroup ftpadmin
   AllowGroup ftpodczytzapis
   DenyAll
</Limit>
<Directory /home/ftp>
 <Limit ALL>
    DenyAll
 </Limit>
 <Limit LIST PWD RETR>
    AllowAll
    DenyAll
 </Limit>
 <Limit STOR STOU>
    AllowGroup ftpodczytzapis
    AllowGroup ftpadmin
    DenyAll
 </Limit>
 <Limit DELE>
    AllowGroup ftpadmin
    DenyAll
 </Limit>
</Directory>

Zwykle po instalacji plik konfiguracyjny posiada jeszcze cało mnóstwo komentarzy, ale zostały one przeze mnie usunięte dla przejrzystości. Po wprowadzonych zmianach należy ponownie uruchomić serwer ftp, np. w Ubuntu Server czy Debianie wygląda to tak:

/etc/init.d/proftpd restart

W następnych częściach postaram się przedstawić serwery wirtualne, konfigurację logów oraz parę ciekawych możliwości kontroli nad tym serwerem ftp. Zachęcam do pisania komentarzy.

  1. Anonim
    30 Listopad 2011 o 20:39

    Świetny opis. Serwer FTP śmiga aż miło. Wielkie dzięki!!!!! Tego mi brakowało.

  2. 25 Luty 2012 o 18:57

    Ehh. Zupełnie sobie nie radzę. Założyłem tak jak napisałeś zmieniając to i owo i nie mogę się zalogować przez net2ftp na przykład. A powinno działać. Jestem pewien że dobre dane dałem. Z czym to może być związane?

    • sylwekb
      26 Luty 2012 o 20:49

      Czynników wpływających na logowanie może być całkiem sporo. Ja bym na początek sprawdził czy da się zalogować np. z przeglądarki internetowej. Sprawdziłbym również czy idzie się normalnie zalogować na konsolę na wybranego użytkownika.

      • 26 Luty 2012 o 21:08

        Słuchaj, a mógłbyś pomóc mi prywatnie? W sensie dam ci dane logowania do maszyny i jeżeli byś chciał – zrób mi to konto. Jest mi bardzo potrzebne.
        Pisz na mail lub na gg:32391592

  3. idiagnostic
    24 Kwiecień 2012 o 13:55

    Witam,
    mam kilka pytań co do zabezpieczenia serwera proftpd. Czy moglibyśmy porozmawiać na priv?

  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: