Темы
Файлы конфигурации ProFTPD
Дополнительные материалы
Samba — Доступ к сетевым дискам и принтерам по протоколу SMB
Монтирование файловых систем
Файлы конфигурации ProFTPD
e /etc/proftpd.conf
- Код: выделить все
####################################
# имя ftp сервера что угодно
ServerName "sergey.free-adm.ru ProFTPD"
# Директива ServerIdent устанавливает сообщение по умолчанию, отображаемое при
# подключении нового клиента. При отключении этого параметра отобразится сообщение
# «[hostname] FTP-сервер». Если установлено значение on, директива может принимать
# необязательный строковый аргумент, который будет отображаться вместо текста по умолчанию.
ServerIdent on "FTP Server ready."
ServerAdmin sergey@free-adm.ru
# Сервер по умолчанию
DefaultServer on
# Директива ServerType позволяет определить режим использования FTP сервера -
# standalone или inetd.
ServerType standalone
# Использование IPv6 отключено.
UseIPv6 off
# Показывать символические ссылки
ShowSymLinks on
# запрещаем подключать от пользователя root
RootLogin off
# надо чтобы пользователи из группы adm могли по серверу шариться а другие нет,
# то надо указать исключение (!) для группы !adm
DefaultRoot ~ !adm
# Эта директива позволяет указать имя службы PAM, используемое при аутентификации.
# PAM позволяет указать имя службы, которое будет использоваться при аутентификации.
# Это позволяет вам настроить различные имена служб PAM, которые будут использоваться
# для разных виртуальных хостов.
AuthPAMConfig proftpd
# Указываем порядок методов авторизации
AuthOrder mod_sql.c mod_auth_unix.c
# Разрешаем/запрещаем разрешение DNS-имён
UseReverseDNS off
IdentLookups off
# Определяет от имени какого пользователя работает ProFtpD
User nobody
Group nobody
# максимальное число одновременно запускаемых процессов в режиме standalone
MaxInstances 20
# Директива MaxClientsPerUser настраивает максимальное количество клиентов, которые могут
# быть подключены в любой момент времени с использованием одного и того же имени
# пользователя. Может использоваться необязательное сообщение аргумента, которое будет
# отображаться клиенту, пытающемуся превысить максимальное значение.
# MaxClientsPerUser 1
# Директива UseSendfile контролирует использование функции sendfile, которая является
# оптимизацией для отправки файлов клиентам. Использование функции sendfile позволяет
# избежать отдельных операций чтения и отправки и распределения буфера. Но на некоторых
# платформах или в некоторых файловых системах лучше отключить эту функцию, чтобы избежать
# операционных проблем:
UseSendfile off
# Определяем форматы сообщений для LOG
#LogFormat default "%h %l %u %t \"%r\" %s %b"
#LogFormat write "%h %l %u %t \"%r\" %s %b"
#LogFormat auth "%v %t \"%r\" [%h] %s"
#SyslogLevel notice
#SystemLog /var/log/proftpd/proftpd.log
#ExtendedLog /var/log/proftpd/auth.log AUTH auth
#ExtendedLog /var/log/proftpd/access.log WRITE,READ write
#DebugLevel 9
#==========================================================
# Logging options
#
TransferLog /var/log/proftpd/xfer.log
# Some logging formats
#
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Log file/dir access
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
# Record all logins
ExtendedLog /var/log/proftpd/auth.log AUTH auth
# Paranoia logging level....
ExtendedLog /var/log/proftpd/paranoid_log ALL default
#==========================================================
LoadModule mod_sql.c
LoadModule mod_sql_passwd.c
LoadModule mod_sql_mysql.c
LoadModule mod_ctrls_admin.c
LoadModule mod_vroot.c
<IfModule mod_sql.c>
SQLBackend mysql
<IfModule !mod_sql_passwd.c>
# If mod_sql_passwd is not available, then consider using the OpenSSL
# SQLAuthType
SQLAuthTypes OpenSSL Backend
</IfModule>
<IfModule mod_sql_passwd.c>
# If mod_sql_passwd is available, try other SQLAuthTypes, too
SQLPasswordEngine on
# MySQL uses lowercase hex-encoded strings for MD5() et al
SQLPasswordEncoding hex
#SQLBackend SHA256 SHA1 MD5 Backend
SQLBackend MD5
</IfModule>
</IfModule>
# Автоматическое удаление недогруженного файла.
DeleteAbortedStores on
# Дают возможность докачки
AllowRetrieveRestart on
AllowStoreRestart on
# Размер буфера команд
CommandBufferSize 512
# не проверять валидность shell
RequireValidShell off
########################################################
# Если вошел, но не начал передачу в течении 300 сек - выход
TimeoutNoTransfer 300
# Устанавливает тайм-аут на подвисшую загрузку
TimeoutStalled 600
# Накладываем ограничения
# Если никаких действий после входа в течении 600 сек - выход
TimeoutIdle 600
# Максимальное число `детей` (работает только в standalohe режиме)
# необходимо для защиты от атак типа `отказ в обслуживании` да и
# от перегрузки сервера поможет :)
MaxInstances 30
# На авторизацию отводится 300 сек, иначе разрыв
TimeoutLogin 300
# Задаём размер-очереди
tcpBackLog 5
# Максимальное количество клиентов и ошибку в случае превышения
MaxClients 10 "Слишком много соединений с сервером (%m)"
# Максимальное количество клиентов с одного хоста
MaxClientsPerHost 4 "%m клиента уже подключены с Вашего хоста, больше не разрешено"
# допускаемое число попыток ввести пароль
MaxLoginAttempts 3 "Слишком много попыток войти"
# ???
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
ControlsEngine on
ControlsACLs all allow user root
ControlsSocketACL allow user *
ControlsLog /var/log/proftpd/controls.log
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
AdminControlsACLs all allow user root
</IfModule>
########################################################
<IfModule mod_vroot.c>
VRootEngine on
</IfModule>
########################################################
include /etc/proftpd.d/ssl.conf
include /etc/proftpd.d/sql.conf
########################################################
<IfDefine DYNAMIC_BAN_LISTS>
LoadModule mod_ban.c
BanEngine on
BanLog /var/log/proftpd/ban.log
BanTable /var/run/proftpd/ban.tab
# If the same client reaches the MaxLoginAttempts limit 2 times
# within 10 minutes, automatically add a ban for that client that
# will expire after one hour.
BanOnEvent MaxLoginAttempts 2/00:10:00 01:00:00
# Inform the user that it's not worth persisting
BanMessage "Host %a has been banned"
# Allow the FTP admin to manually add/remove bans
BanControlsACLs all allow user ftpadm
</IfDefine>
<IfDefine QOS>
LoadModule mod_qos.c
# RFC791 TOS parameter compatibility
QoSOptions dataqos throughput ctrlqos lowdelay
# For a DSCP environment (may require tweaking)
#QoSOptions dataqos CS2 ctrlqos AF41
</IfDefine>
<Global>
SyslogLevel debug
# В некоторых случаях вам нужно указать диапазон пассивных портов,
# чтобы обходить ограничения брандмауэра. Для этого можно использовать
# эфемерные порты, но не стесняйтесь использовать более узкий диапазон.
PassivePorts 49152 50000
# Если ваш хост был NATted, этот параметр полезен, чтобы разрешит пассивной передаче
# работать. Вы должны использовать свой публичный адрес и открывать пассивные порты,
# используемые на вашем брандмауэре.
# MasqueradeAddress 1.2.3.4
#Umask 027 Маска для новых директорий и файлов (777 - 750 = 027)
#650 == RW- R-X --- - файлы, 750 == RWX RW- --- - каталог
Umask 127 027
# Разрешить пользователям менять права доступа
<Limit SITE_CHMOD>
AllowAll
</Limit>
</Global>
############# Права на каталоги ###########
# Запрещаем запись в корень домашнего каталога
# для всех пользователей кроме serg (реальный пользователь системы)
<Directory ~>
<Limit WRITE>
Order Allow,Deny
AllowUser serg
DenyAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>
# Запись в каталог UPLOAD
<Directory /home/serg/FTP/UPLOAD>
Umask 127 027
# Разрешаем скачивание, загрузку и удаление
<Limit READ WRITE>
AllowAll
</Limit>
</Directory>
<Directory /var/www/*.free-adm.ru/public_html/>
Umask 127 027
# Разрешаем скачивание, загрузку и удаление
<Limit READ WRITE>
Order Allow,Deny
AllowUser admin-www
DenyAll
</Limit>
</Directory>
cat /etc/proftpd.d/ssl.conf
- Код: выделить все
<IfDefine TLS>
TLSEngine on
# TLSRequired on
TLSRequired off
# TLSCertificateChainFile /etc/pki/tls/certs/proftpd-chain.pem
TLSRSACertificateFile /etc/pki/tls/certs/proftpd-cert.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd-key.pem
#TLSCipherSuite PROFILE=SYSTEM
# Relax the requirement that the SSL session be re-used for data transfers
TLSCipherSuite ALL:!ADH:!DES
#TLSOptions NoCertRequest
TLSVerifyClient off
TLSLog /var/log/proftpd/tls.log
<IfModule mod_tls_shmcache.c>
TLSSessionCache shm:/file=/var/run/proftpd/sesscache
</IfModule>
</IfDefine>
cat /etc/proftpd.d/sql.conf
- Код: выделить все
#SQLLogFile /var/log/proftpd/sql.log
##############################################
<IfModule mod_sql.c>
SQLBackend mysql
#MD5('Password')
SQLAuthTypes MD5
SQLConnectInfo proftpd@localhost proftpd tnUQGY4W
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
</IfModule>