konfiguracja proftpd

Konfiguracja serwerów, usług, itp.
totalweb
Posty: 4
Rejestracja: 22 marca 2008, 21:13

konfiguracja proftpd

Post autor: totalweb »

Witam!

Mam pytanie odnośnie proftpd...

Nie mogę nigdzie znaleźć opisu pełnej konfiguracji tego programu.
Jestem "początkujący" i prosiłbym o bardzo dokładny opis konfiguracji.
Szukałem na tym forum i na innych, ale takiego superopisu nie znalazłem, nawet google nie pomogło.

Chciałbym utworzyć 5 różnych kont dla użytkowników mających różne uprawnienia, gdzie każdy miałby osobny folder docelowy.
Jak się tworzy dodatkowe konta, bo po instalacji zostaje utworzone konto domyślne "ftp"?
W których plikach są zawarte dane konfiguracyjne kont użytkowników?

Przydałaby się na tym forum jakaś jedna bardzo dokładna instrukcja, dlatego prosiłbym o coś takiego.

Pozdrawiam!
vikus
Beginner
Posty: 103
Rejestracja: 15 października 2007, 20:00

Post autor: vikus »

Wystarczy stworzyć nowych użytkowników w systemie i tyle.
yantar
Member
Posty: 1225
Rejestracja: 07 czerwca 2007, 21:15
Lokalizacja: Rzeszów

Post autor: yantar »

totalweb, na necie to jak pamietam jest co najmniej kilka dosc obszernych polskich poradnikow.
mozna tez skonfigurowac z z poziomu graficznego gui, latwiej to troche wtedy ogarnac.

Kod: Zaznacz cały

gproftpd
bolwerk
Posty: 24
Rejestracja: 16 lipca 2006, 15:47
Lokalizacja: Small Town: Nowhere

Post autor: bolwerk »

  1. Przede wszystkim lektura dokumentacji: http://proftpd.org/docs/directives/linked/by-name.html
  2. Ustawianie użytkowników systemowych dla potrzeb proftpd to nie jest za dobry pomysł z uwagi na bezpieczeństwo.
    Lepiej utworzyć sobie użytkowników z powłoką /bin/false a do pliku konfiguracyjnego proftd wrzucić

    Kod: Zaznacz cały

      AuthOrder		mod_auth_file.c
      AuthUserFile		/etc/proftpd/ftp.passwd
      AuthGroupFile		/etc/proftpd/ftp.group
  3. Użytkowników robisz sobie użytkując bardzo prosty skrypt autorstwa Hagala

    Kod: Zaznacz cały

    su -c "ftpasswd --group --file /etc/proftpd/ftp.group --gid $2 --name $1 && ftpasswd --passwd --file /etc/proftpd/ftp.passwd --shell /bin/false --not-system-password --uid $2 --name $1 --home=/server/ftp/$1"
    Gdzie musisz pamiętać o dwóch rzeczach. GID użytkownika ftp nie może się pokryć z GID użytkownika systemowego to raz. Dwa, użycie skryptu to wpisujesz nazwę pliku, a po nim nazwę użytkownika i GID użytkownika. Proponuję gid dawać z przedziału od 2000 w górę.
  4. Konta użytkowników to edycja proftpd i tam sobie ustawiasz co i jak. Przykładowo najkrótsza opcja:

    Kod: Zaznacz cały

     <Anonymous /server/ftp/anonymous/>
       User                  anonim
       Group                 anonim
       UserAlias             anonymous anonim
       UserAlias		 ftp	anonim
       AnonRequirePassword   off
       HideNoAccess          on			# ukrywa pliki do ktorych anonim nie ma praw dostepu
       TransferRate RETR 30.0:1024			# ograniczenie pobierania dla anonimow do 16kB/s
    
    <Limit LOGIN>
    		Order Allow,Deny
    			AllowUser	anonim ###dozwoleni uzytkownicy
    			DenyAll
    	</Limit>
    
       <Directory />
        <Limit WRITE MKD DELE RMD STOR>
         Order Allow,Deny
         Allow TWOJE_IP             #pozwala na zapisywanie anonimowi po adresie IP
         DenyAll
        </Limit>
        <Limit LIST DIRS READ>
         Order Allow,Deny
    	AllowAll
    	IgnoreHidden on
        </Limit>
       </Directory>
     </Anonymous>
Możesz jeszcze dodatkowo pobawić się w wiele innych rzeczy, przykładowo logowanie poprzez SSL/TLS i inne.

Polecam lekturę dokumentacji i jak będziesz miał jakieś konkretne pytania to zapraszam ponownie.

Pozdrawiam.
totalweb
Posty: 4
Rejestracja: 22 marca 2008, 21:13

Post autor: totalweb »

Prawie wszystko ustawiłem. Tylko nie mogę zablokować użytkowników w swoich katalogach.

To mój konfig

Kod: Zaznacz cały

# This is a ProFTPD configuration file

ServerName         "debian" # Nazwa serwera

ServerAdmin          admin@xxx # Email admina

ServerIdent off         "ftp://ftp.domena.pl/" # Pozwala na wyswietlenie wiadom$
ServerType         standalone # Ustawia tryb pracy demona ProFTPD, styb standal$
DeferWelcome                    on # Nie pokazuje wiadomosci powitalnej dopoki $
DefaultServer         on # Okreslamy konfiguracje jako domyslna

DefaultRoot ~

Port            21 # Nr portu na ktorym serwer ma słuchać

Umask            022 # Tryb umask 022 jest typowym standardem dla ogolnie doste$
User            adminirr # Użytkownik na jakiego odpalony jest serwer FTP

Group            root # Grupa do ktorej nalezy ten uzytkownik

TimeoutIdle                     300 # Timeout przy braku ruchu (zalogowal sie i$
TimeoutStalled                  300 # Timeout przy przeciazonym laczu jak sie n$
TimeoutLogin                    60 # Timeout podczas logowania (za dlugo sie lo$
TimeoutNoTransfer               300 # Timeout przy braku transferu

ExtendedLog                     /var/log/proftp.log # Miejsce gdzie maja byc lo$
ExtendedLog                     /dev/tty10 # Konsola na ktorej maja byc wyswiet$
DisplayLogin                    welcome.msg # Plik z wiadomoscia powitalna

MaxInstances                    20

MaxLoginAttempts                5
MaxClients 10 ">>>Za duzo chetnych :( Zapraszam innym razem.<<<" # Maksymalna li$

MaxClients 10 ">>>Za duzo chetnych :( Zapraszam innym razem.<<<" # Maksymalna li$
MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP." # Maksymalna li$
<Limit LOGIN>
Order allow,deny
Allow from All
</Limit>

<Directory /*>

  AllowOverwrite      on # Zezwalamy na nadpisywanie plikow w obrebie katalogu $
  AllowStoreRestart       on
</Directory>

# Needed for NIS.
PersistentPasswd off


<Anonymous /home/ftp/użytkownik1>
  User            użytkownik1
  Group            użytkownik1
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik1
  Umask                         022
  HideNoAccess          on            # ukrywa pliki do których anonim nie ma p$  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow All
</Limit>

<Directory /home/ftp/użytkownik1/>
<Limit ALL>
 Allow All

<Limit ALL>
 Allow from All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on # Pozwala klientom wznawiać wysyłanie danych.
</Directory>
</Anonymous>


<Anonymous /home/ftp/użytkownik2>
  User            użytkownik2
  Group            użytkownik2
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik2
  Umask                         022
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow from All
</Limit>

<Directory /home/ftp/>
<Limit ALL>
 Allow All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on
  RateWriteBPS 750000
  RateWriteFreeBytes 100000
  RateReadBPS 750000
  RateReadFreeBytes 100000
</Directory>
</Anonymous>


<Anonymous /home/ftp/użytkownik3>
  User            użytkownik3
  Group            użytkownik3
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik3
  Umask                         022
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow from All
</Limit>

<Directory /home/ftp/>
<Limit ALL>
 Allow All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on
  RateWriteBPS 750000
  RateWriteFreeBytes 100000
  RateReadBPS 750000
  RateReadFreeBytes 100000
</Directory>
</Anonymous>



<Anonymous /home/ftp/użytkownik4>
  User            użytkownik4
  Group            użytkownik4
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik4
  Umask                         022
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow from All
</Limit>

<Directory /home/ftp/>
<Limit ALL>
 Allow All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on
  RateWriteBPS 750000
  RateWriteFreeBytes 100000
  RateReadBPS 750000
  RateReadFreeBytes 100000
</Directory>
</Anonymous>



<Anonymous /home/ftp/użytkownik5>
  User            użytkownik5
  Group            użytkownik5
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik5
  Umask                         022
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow from All
</Limit>

<Directory /home/ftp/>
<Limit ALL>
 Allow All
<Limit ALL>
 Allow All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on
  RateWriteBPS 750000
  RateWriteFreeBytes 100000
  RateReadBPS 750000
  RateReadFreeBytes 100000
</Directory>
</Anonymous>
Google nie pomogło.

I jeszcze jeden błąd, który mam przy restartowaniu ftp:

Kod: Zaznacz cały

Starting ftp server: proftpd - IPv6 getaddrinfo 'localhost' error: No address associated with hostname
Proszę o pomoc.
vikus
Beginner
Posty: 103
Rejestracja: 15 października 2007, 20:00

Post autor: vikus »

totalweb pisze:i jeszcze jeden błąd, który mam przy restartowaniu ftp:

Kod: Zaznacz cały

Starting ftp server: proftpd - IPv6 getaddrinfo 'localhost' error: No address associated with hostname
Dodaj do konfigu:

Kod: Zaznacz cały

UseIPv6     off
Zamknąć użytkowników we własnych katalogach:

Kod: Zaznacz cały

DefaultRoot             ~
totalweb
Posty: 4
Rejestracja: 22 marca 2008, 21:13

Post autor: totalweb »

No na tej stronie to już byłem, ale nic nie wyniosłem.

Co to mniej, więcej znaczy?

Kod: Zaznacz cały

DefaultRoot
Name
DefaultRoot -- Sets default chroot directory
Synopsis

DefaultRoot [ directory [group-expression]]

Default

    DefaultRoot /

Context

    server config, <VirtualHost>, <Global>

Module

    mod_auth

Compatibility

    0.99.0pl7 and later

Description

The DefaultRoot directive controls the default root directory assigned to a user upon login. If DefaultRoot is set to a directory other than "/", a chroot operation is performed immediately after a client authenticates. This can be used to effectively isolate the client from a portion of the host system filespace. The specified root directory must begin with a / or can be the magic character '~'; meaning that the client is chroot jailed into their home directory.

When the specified chroot directory is a symlink this will be resolved to it's parent first before setting up the chroot. This can have unwanted side effects. For example if a user has write access to the symlink he could modify it so that it points to '/'. Thus the chroot would be the root directory of the server, resulting in insufficient or no restrictions.

If the DefaultRoot directive specifies a directory which disallows access to the logged-in user's home directory, the user's current working directory after login is set to the DefaultRoot instead of their normal home directory. DefaultRoot cannot be used in <Anonymous> configuration blocks, as the <Anonymous> directive explicitly contains a root directory used for Anonymous logins. The special character '~' is replaced with the authenticating user's home directory immediately after login. Note that the default root may be a subdirectory of the home directory, such as "~/anon-ftp".

The optional group-expression argument can be used to restrict the DefaultRoot directive to a unix group, groups or subset of groups. The expression takes the format: [!]group-name1[,[!]group-name2[,...]]. The expression is parsed in a logical boolean AND fashion, such that each member of the expression must evaluate to logically TRUE in order for the DefaultRoot directive to apply. The special character '!' is used to negate group membership.

Care should be taken when using DefaultRoot. Chroot "jails" should not be used as methods for implementing general system security as there are potentially ways that a user can "escape" the jail.
See also

Examples

Example of a DefaultRoot configuration:

ServerName "A test ProFTPD Server"
ServerType inetd
User ftp
Group ftp
#
# This causes proftpd to perform a chroot into the authenticating user's directory 
# immediately after login.
# Once this happens, the user is unable to "see" higher level directories.
# Because a group-expression is included, only users who are a member of
# the group 'users' and NOT a member of 'staff' will have their default
# root directory set to '~'.
DefaultRoot ~ users,!staff
... 
W którym miejscu w moim pliku .conf (to ten wyżej) mam wstawić to DefaultRoot i jak to ma wyglądać.
To ma wyglądać tak?

Kod: Zaznacz cały

DefaultRoot ~ użytkownik1,!staff
a staff to nazwa katalogu?

Zanim postanowiłem tu napisać, to próbowałem wielu rozwiązań.

Kod: Zaznacz cały

UseIPv6     off
nie pomogło, bo już sprawdzałem wcześniej, a z poleceniem

Kod: Zaznacz cały

DefaultRoot 
też kombinowałem używając:

Kod: Zaznacz cały

DefaultRoot /home/ftp/użytkownik1/ # Wyznaczamy nadrzędny dla każdego użytkownika katalog spoza którego nie będzie mógł wyjść.
bolwerk
Posty: 24
Rejestracja: 16 lipca 2006, 15:47
Lokalizacja: Small Town: Nowhere

Post autor: bolwerk »

W dużym skrócie.
Masz bajzel jakich mało w pliku. Po kolei.
Początek pliku konfiguracyjnego, usuń:

Kod: Zaznacz cały

<Limit LOGIN>
Order allow,deny
Allow from All
</Limit>

<Directory /*>

  AllowOverwrite      on # Zezwalamy na nadpisywanie plików w obrębie katalogu $
  AllowStoreRestart       on
</Directory>
Kolejna rzecz, pierwszy użytkownik i analogicznie reszta, masz:

Kod: Zaznacz cały

<Anonymous /home/ftp/użytkownik1>
  User            użytkownik1
  Group            użytkownik1
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  GroupOwner                    użytkownik1
  Umask                         022
  HideNoAccess          on            # ukrywa pliki, do których anonim nie ma p$  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 Allow All
</Limit>

<Directory /home/ftp/użytkownik1/>
<Limit ALL>
 Allow All

<Limit ALL>
 Allow from All
</Limit>
  AllowOverwrite      on
  AllowStoreRestart       on # Pozwala klientom wznawiać wysyłanie danych.
</Directory>
</Anonymous>
Nie zamknięte pozycje <Limit>, brak określonego użytkownika, który może się logować.
Popraw to na coś takiego

Kod: Zaznacz cały

<Anonymous /home/ftp/użytkownik1>
  User            użytkownik1
  Group            użytkownik1
  AnonRequirePassword           on
  RequireValidShell             off
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message
  Umask                         022
  HideNoAccess          on            # ukrywa pliki, do których anonim nie ma praw
  MaxClients 10 "Za dużo chętnych. Zapraszam innym razem"
  MaxClientsPerHost 5 "Przystopuj! Za dużo połączeń z jednego IP."

<Limit LOGIN>
 Order allow,deny
 AllowUser użytkownik1
 DenyAll
</Limit>

<Directory />
<Limit WRITE MKD DELE RMD STOR>
				Order Allow,Deny
					DenyAll
			</Limit>
			<Limit LIST DIRS READ>
				Order Allow,Deny
					AllowAll
					IgnoreHidden on
			</Limit>

</Directory>
</Anonymous>
Ponadto brakuje Ci najważniejszego czyli:

Kod: Zaznacz cały

AuthOrder		mod_auth_file.c
  AuthUserFile		/etc/proftpd/ftp.passwd
  AuthGroupFile		/etc/proftpd/ftp.group
AuthPAM                 on
Oczywiście to przykład. Wcześniej napisałem co i jak.

Aha, znaczną część opcji wrzuć do sekcji <Global>, której u Ciebie akurat kompletnie nie ma, a jest to istotne.
Dodatkowo jeszcze dodaj to:

Kod: Zaznacz cały

  <IfModule mod_vroot.c>
  VRootEngine           on
</IfModule>

I na sam koniec.

Chcesz uruchomić sobie serwer to czytaj ze zrozumieniem i posprzątaj konfig bo masz bajzel jak w stajni Augiasza.

Pozdrawiam.
pawel_wolomin
Posty: 26
Rejestracja: 15 kwietnia 2008, 23:46
Lokalizacja: Wo³omin

Post autor: pawel_wolomin »

Jak powinien wyglądać konfig z konfiguracją na jednego użytkownika z pełnym dostępem do całej powłoki?
totalweb
Posty: 4
Rejestracja: 22 marca 2008, 21:13

Post autor: totalweb »

No dobrze, a jak chciałbym użyć użytkowników, których utworzyłem w systemie?

I jak ma wyglądać sekcja:

Kod: Zaznacz cały

<Global>
ODPOWIEDZ