SUSE LINUX Enterprise & openSUSE Community
มีนาคม 23, 2019, 08:53:18 PM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
ข่าว:
 
   หน้าแรก   ช่วยเหลือ ค้นหา เข้าสู่ระบบ สมัครสมาชิก  

[Why we need your support] SUSE and openSUSE are trademarks of Attachmate Group, Inc. - WE ARE NOT IN ANY WAY ASSOCIATED WITH SUSE AND ATTACHMATE GROUP. SUSEThailand.com is a SUSE Linux user and community found in Thailand but not limited to other country suse linux user to join in. Currently active contents (How to's, Scripts, Tips, Tricks, Tutorials, Linux Command Line, and Troubleshooting) this suse linux how to's and expert support are SUSE Linux.
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน
หัวข้อ: การติดตั้ง FTP Server ด้วย ProFTPD บน openSUSE 11.4 (3 ตัวอย่าง)  (อ่าน 9280 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Sontaya
Administrator
Expert : ผู้เชี่ยวชาญ
*****

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 1931


Administrator


เว็บไซต์
« เมื่อ: มิถุนายน 09, 2011, 06:28:27 PM »


การติดตั้ง ProFTPD บน openSUSE 11.4

ProFTPD โปรแกรมสำหรับทำหน้าที่เป็น FTP Server บนระบบปฎิบัติการลีนุกซ์ซึ่งมีความปลอดภัยสูง (Secure FTP Server) เช่นเดียวกันกับโปรแกรม Pure-FTPD ที่เป็น Virtual Users Authentication (ไม่ได้ใช้ users จากระบบในการ authentication)

ปกติบน SUSE Linux ค่าเริ่มต้น (default) จะใช้ซอฟต์แวร์ที่ชื่อ vsftpd หรือ pure-ftpd ทำหน้าที่เป็น FTP server แต่ถ้าเราต้องการติดตั้ง Control panel software  เช่น ISPConfig บนเซิร์ฟเวอร์ ก็ต้อง manual compile ซอฟต์แวร์ ProFTPd เอง หรือเพิ่ม repositories เอง

(ก่อนอื่นต้องติดตั้ง LAMP server ก่อนนะครับ)

ตัวอย่างที่ 1 -ใช้ PAM Authentication (system local user) จุดอ่อนต่อการโจมตี

1. ติดตั้งแพ็คเกจที่จำเป็น
โค๊ด:
zypper -in libopenssl-devel

2 ติดตั้ง ProFTPd (แนะนำเวอร์ชัน 1.3.3e-5.1)

เพิ่ม repo
โค๊ด:
wget http://download.opensuse.org/repositories/network/openSUSE_11.4/network.repo

zypper ar network.repo

zypper ref

3. ติดตั้ง Proftpd และ MySQL Module
โค๊ด:
zypper in proftpd proftpd-devel proftpd-debuginfo proftpd-mysql

4. แก้ไขไฟล์คอนฟิกดังนี้

โค๊ด:
vi  /etc/proftpd/proftpd.conf

โค๊ด:
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName "FTP Server"
ServerType standalone
DefaultServer on

# Port 21 is the standard FTP port.
Port 21

# FireWall PortRange for PASV
PassivePorts 40000 40999

# Set DebugLevel to values between 0 and 9
# default is 0
DebugLevel 0

# SystemLog -- Redirect syslogging to a file
SystemLog /var/log/proftpd/proftpd.log

# Don't use IPv6 support by default.
UseIPv6 off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30

# Set the user and group under which the server will run.
User ftp
Group ftp

# 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"

# ------------------------------
# Global Settings
# ------------------------------
<Global>

  # ------------------------------
  # Login
  # ------------------------------

ServerIdent on "FTP server ready"
DeferWelcome on
#DisplayConnect /etc/proftpd/msg

IdentLookups off
UseFtpUsers off
RequireValidShell off

TimeoutLogin 60
MaxLoginAttempts 3
#MaxClientsPerHost none
#MaxClientsPerUser 1 "Only one connection at a time."

# Create a user's home directory on demand if it doesn't exist
        CreateHome on 700 dirmode 700
  # ------------------------------
  # Authentication
  # ------------------------------

### PAM Authentication
# AuthPAM: default: on
AuthPAM on

# changed AuthPAMConfig file
AuthPAMConfig proftpd
### PAM Authentication

#AuthUserFile /etc/proftpd/auth/passwd
#AuthGroupFile /etc/group

### order of auth modules
#AuthOrder mod_auth_unix.c mod_auth_file.c
#AuthOrder mod_auth_file.c

# ------------------------------
  # Post-Login
  # ------------------------------

DisplayLogin welcome.msg
DisplayChdir .message
AllowOverride off

TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 300
TimeoutSession 3600

  # ------------------------------
  # Session
  # ------------------------------

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~ web,!users

DenyFilter              \*.*/
ListOptions             "-A +R" strict
UseGlobbing             off

ShowSymlinks            on
TimesGMT                on

  # ------------------------------
  # Up- & Download
  # ------------------------------

# having to delete before uploading is a pain ;)
AllowOverwrite on
AllowRetrieveRestart on
HiddenStores on
DeleteAbortedStores on
#AllowStoreRestart off # is contrary to "DeleteAbortedStores"

# ------------------------------
  # Logging
  # ------------------------------

WtmpLog off
TransferLog /var/log/proftpd/xferlog

# Record all logins
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Logging file/dir access
ExtendedLog /var/log/proftpd/access.log WRITE,READ write

# Paranoia logging level....
ExtendedLog /var/log/proftpd/paranoid.log ALL default

# SQLLogFile
#SQLLogFile /var/log/proftpd/SQL.log
</Global>

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

#####
# Include other confs
#Include /etc/proftpd/conf.d/*.conf

#####

# ------------------------------
# Anonymous Settings
# ------------------------------
# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>
# Limit LOGIN
#<Limit LOGIN>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
#</Limit>

# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>

# LoginPasswordPrompt -- Configure to display the passwort prompt or not
LoginPasswordPrompt off

# DirFakeMode -- Hide real file/directory permissions
DirFakeMode 0640

# DirFakeUser -- Hide real file/directory owner
DirFakeUser On

# DirFakeGroup -- Hide real file/directory group
DirFakeGroup On

   # We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp

# Limit the maximum number of anonymous logins
MaxClients 10
#MaxRetrieveFileSize 512 Mb

# Limit Up/Downloads to 255 K/sec
#TransferRate APPE,RETR,STOR,STOU 255

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message

#<Directory pub>
#  <Limit ALL>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
#  </Limit>
#</Directory>

# An upload directory that allows storing files but not retrieving
# or creating directories.
#<Directory uploads/*>
#  <Limit READ>
DenyAll
#  </Limit>
#  <Limit STOR>
AllowAll
#  </Limit>
#</Directory>
</Anonymous>

อธิบาย: คอนฟิกเพิ่มป้องกันผู้ใช้ที่ไม่ระบุชื่อ (anonymous) และเปิดใช้งาน DefaultRoot ~ เพื่อชี้พาทและล็อคผู้ใช้ไปยังไดเรกทอรีของตัวเองเท่านั้น
CreateHome on 700 dirmode 700 คำสั่งนี้จะสร้างไดเรกทอรีอัตโนมัติ ในกรณีที่ผู้ใช้ที่ยังไม่มีไดเรกทอรี (home directory) สำหรับ และจะกำหนดสิทธิ์เป็น 700
ถ้าผู้ใช้มีโฟลเดอร์อื่นๆ ในพาทไม่มีจะถูกสร้างให้สิทธิ์เป็น 700 (root เท่านั้น) เพื่อไม่ใช้ผู้ใช้สามารถเข้าถึงทุกๆ อย่างๆ ที่อยู่เหนือ home โฟลเดอร์ตัวเอง

ตัวอย่าง ชื่อผู้ใช้ user2 มี home directory พาทเป็น  /srv/ftp/users/data/user2
โครงสร้างที่มีอยู่คือ /srv/ftp ไดเรกทอรีที่อยู่หลังพาทนี้จะถูกสร้างอัตโนมัติเมื่อเราติดตั้งกับ FTP
คำสั่ง CreateHome จะเซตอับ structure เป็น
โค๊ด:
drwxr-xr-x 6 root root 4096       /srv/ftp
drwx------ 6 root root 4096         /srv/ftp/users/
drwx------ 6 root root 4096        /srv/ftp/users/data
drwx------ 6 user2 user2 4096  /srv/ftp/users/data/user2

รูทพาทสำหรับเก็บไฟล์จะอยู่ที่ /srv/ftp/users/data/user2

Tips: Configuring SFTP with CHROOT
โค๊ด:
vi /etc/proftpd/proftpd.conf

โค๊ด:
<virtualhost IPOfThisServerHere>
    SFTPEngine on
    SFTPLog /var/log/sftp.log
    Port 2222
    SFTPHostKey /etc/ssh/ssh_host_rsa_key
    SFTPHostKey /etc/ssh/ssh_host_dsa_key
    SFTPCompression delayed
    MaxLoginAttempts 6
    DefaultRoot ~
    Umask 022
    CreateHome on 700 dirmode 700
 
<limit SITE_CHMOD>
  DenyAll
</Limit>
 
</VirtualHost>

โดย ProFTPD จะรันบนพอร์ต 2222 (SFTP) หลังจากที่เราติดตั้ง ProFTPD เสร็จถ้าดูที่ User and Group Administration จะมี Group Name: ftp เพิ่มขึ้นมา

5. สตาร์ท proftpd

โค๊ด:
/etc/init.d/proftpd restar
[code]

หรือ

[code]
rcproftpd restart

6. สร้างผู้ใช้

YaST > Security and Users > User and Group Management
สร้างผู้ใช้ user2 ให้อยู่ในกลุ่ม ftp รหัสผ่าน 1234

หรือใช้คำสั่ง
โค๊ด:
useradd -g ftp -s /bin/bash -d /home/user2 -m user2
passwd user2

7. ทดสอบอับโหลดไฟล์จากโปรแกรม FTP client เช่น FileZilla

หรือใช้ telnet
โค๊ด:
telnet 192.168.1.100 21

โค๊ด:
telnet localhost 21
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 FTP server ready
USER user2
331 Password required for ftp_login
PASS 1234
230 User ftp_login logged in  

9. ตรวจสอบ log file

โค๊ด:
tail -f /var/log/proftpd/auth.log

โค๊ด:
Jun 09 11:34:35 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): FTP session opened.
Jun 09 11:34:44 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): USER ftp_login: Login successful.
Jun 09 11:35:41 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): FTP session closed.

10. ตรวจสอบ permission ไฟล์

โค๊ด:
cd /home/

โค๊ด:
ls -l
total 8
drwxr-xr-x 50 sontaya users 4096 Jun  9 17:42 sontaya
drwxr-xr-x  6 user2   ftp   4096 Jun  9 11:11 user2

Owner คือ user2, Group คือ ftp
ซึ่งถูกต้องตามที่เรากำหนดตอนเพิ่มผู้ใช้ แต่เมื่อเราใช้ FTP client ไปยังเซิร์ฟเวอร์จะเห็นว่าผู้ใช้ user2 มีไดเรกทอรีต่างๆ โชว์มากมาก ดังรูป



Tips: ต้องการให้พาทอับโหลดเป็น /home/user2/public_html
โค๊ด:
vi /etc/passwd
...
user2:x:1001:49:user2:/home/user2/public_html:/bin/false
...

จากนั้นลอง FTP อีกครั้ง จะได้ดังรูปครับ



11. ทดสอบรันภาษา php

โค๊ด:
vi index.php

โค๊ด:
<?php
phpinfo
();
?>


12. เปิดหน้าเว็บที่สร้างขึ้น

http://192.168.1.100/~user2/




ตัวอย่างที่ 2 - ใช้ AuthUserFile Authentication (Virtual user)

1. แก้ไขไฟล์ /etc/proftpd/proftpd.conf

โค๊ด:
# ------------------------------
  # Authentication
  # ------------------------------

        ### PAM Authentication
        # AuthPAM: default: on
        #AuthPAM                 on                                                                 #สำหรับ System local user ซึ่งจะตรวจสอบ username กับ password จากไฟล์ /etc/passwd

        # changed AuthPAMConfig file
        AuthPAMConfig           proftpd
        ### PAM Authentication

        AuthUserFile             /etc/proftpd/auth/passwd                 #สำหรับระบุพาทตามที่เราต้องการ ซึ่ง default  จะจะตรวจสอบ username กับ password จากไฟล์ /etc/proftpd/auth/passwd
        AuthGroupFile          /etc/group

        ### order of auth modules
        #AuthOrder              mod_auth_unix.c mod_auth_file.c
        #AuthOrder              mod_sql.c                                                 #กรณีที่ใช้ฐานข้อมูลสำหรับเก็บ username กับ password  (ต้อง compile ProFTPD หากติดตั้งจาก rpm ไฟล์จะไม่มีโมดูลนี้)

2. เพิ่มผู้ใช้

ftpasswd คือ โปรแกรมสำหรับสร้างไฟล์และอับเทดไฟล์สำหรับ AuthUserFile และ AuthGroupFile ซึ่ง Default ไฟล์จะเก็บชื่อผู้ใช้และรหัสผ่านอยู่ที่พาท /etc/proftpd/auth/passwd

เริ่มแรกให้ทำการตรวจสอบ gid ของ group ftp ที่สร้างจาก proftpd ก่อนว่า gid คือเท่าไร
ตัวอย่างนี้คือ GID = 49 อ้างอิง Group = ftp
โค๊ด:
ftpasswd --passwd --name=user2 --home=/srv/ftp/user2 --shell=/bin/false --uid=1002

โค๊ด:
ftpasswd --group --name=ftp --gid=49 --member=user2

3. ตรวจสอบเมื่อ login ftp ผ่านแล้ว

โค๊ด:
ls -l /srv/ftp/
total 4
drwx------ 3 1004 1004 4096 Jun  9 12:14 user4

4. ตรวจสอบรายละเอียดของไฟล์ที่อัพโหลดขึ้นไป

โค๊ด:
stat Post.php

โค๊ด:
 File: `Post.php'
  Size: 93228     Blocks: 184        IO Block: 4096   regular file
Device: 822h/2082d Inode: 305211      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1004/ UNKNOWN)   Gid: ( 1004/ UNKNOWN)
Access: 2011-06-09 12:14:36.025656304 +0700
Modify: 2011-06-09 12:14:36.027656658 +0700
Change: 2011-06-09 12:14:36.027656658 +0700

ขึ้น UNKNOWN เนื่องจากชื่อผู้ใช้ user2 ไม่ได้ถูกสร้างที่ system local username (/etc/passwd)

5. ทดสอบจาก FTP client



6. ตรวจสอบ log

โค๊ด:
/var/log/proftpd/proftpd.log
Jun 09 11:34:35 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): FTP session opened.
Jun 09 11:34:44 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): USER ftp_login: Login successful.
Jun 09 11:35:41 bcserit01 proftpd[11595] bcserit01.site (localhost[127.0.0.1]): FTP session closed.

Tips: เปลื่ยนรหัสผ่าน

โค๊ด:
ftpasswd --passwd --name=user2 --change-password


ตัวอย่างที่ 3 - เซตอับ FTP Virtual Host จาก ProFTPD และ MySQL

ความต้องการ:  ติดตั้ง FTP server รันด้วยโปรแกรม proftpd และผู้ใช้จะต้องยืนยันตัวตน (authenticate) จาก mysql database

1. ติดตั้ง ProFTPd (คอมไพล์)

ดาวน์โหลดซอฟต์แวร์ได้ที่ http://www.proftpd.org/
โค๊ด:
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3e.tar.gz

tar zxvf proftpd-1.3.3e.tar.gz

cd proftpd-1.3.3e/

เราสามารถระบุพาทหรือปรับแต่งการติดตั้งตามที่ต้องการ
โค๊ด:
./configure --with-modules=mod_sql:mod_sql_mysql:mod_tls --prefix=/opt/proftpd --sysconfdir=/etc/proftpd --localstatedir=/var/proftpd
make

โค๊ด:
make install

2. ตรวจสอบโมดูล

โค๊ด:
proftpd -l

โค๊ด:
Compiled-in modules:
mod_core.c
  mod_xfer.c
  mod_auth_unix.c
  mod_auth_file.c
  mod_auth.c
  mod_ls.c
  mod_log.c
  mod_site.c
  mod_delay.c
  mod_facts.c
  mod_dso.c
  mod_ident.c
  mod_auth_pam.c
  mod_cap.c
  mod_ctrls.c
 mod_sql.c

2. Local User และ Group

ระบบสร้างแล้ว
Group Name: ftp
Group ID: 49

User Login: ftp
Group: ftp
UID: 40

ให้เราทำการสร้าง User และ Group ขี้นมาใหม่สำหรับใช้ใน FTP Viutual Host

ftp user= ftpuser
ftp group= grp_ftp

โค๊ด:
groupadd -g 2011 grp_ftp
useradd -u 2011 -s /bin/false -d /bin/null -c "proftpd user" -g grp_ftp ftpuser

ถ้าตรวจสอบจาก YaST > Security and Users > User and Group Management จะเห็นว่ามี group grp_ftp และ user ftpuser เพิ่มเข้ามา

3. แก้ไขไฟล์ /etc/proftpd/proftpd.conf

โค๊ด:
# ------------------------------
  # Authentication
  # ------------------------------

        ### PAM Authentication
        # AuthPAM: default: on
        #AuthPAM                 on                                                                      #สำหรับ System local user ซึ่งจะตรวจสอบ username กับ password จากไฟล์ /etc/passwd

        # changed AuthPAMConfig file
        AuthPAMConfig           proftpd
        ### PAM Authentication

        #AuthUserFile             /etc/proftpd/auth/passwd                   #สำหรับระบุพาทตามที่เราต้องการ ซึ่ง default  จะจะตรวจสอบ username กับ password จากไฟล์ /etc/proftpd/auth/passwd
        #AuthGroupFile          /etc/group

        ### order of auth modules
        #AuthOrder              mod_auth_unix.c mod_auth_file.c
        AuthOrder              mod_sql.c                                                        #กรณีที่ใช้ฐานข้อมูลสำหรับเก็บ username กับ password  (ต้อง compile ProFTPD หากติดตั้งจาก rpm ไฟล์จะไม่มีโมดูลนี้)

3.  สร้าง MySQL Database สำหรับ ProFTPD

โค๊ด:
mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ให้กำหนดรหัสผ่าน mysql ใหม่ด้วยคำสั่งข้างล่างนี้
โค๊ด:
mysqladmin -uroot password new_password

สร้าง database ใหม่ชื่อ ftp และผู้ใช้ชื่อ proftpd กำหนดรหัสผ่านเป็น password1234 (ใช้สำหรับติดต่อกับฐานข้อมูลที่ชื่อ ftp )
โค๊ด:
mysql -u root -p

โค๊ด:
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password1234';
FLUSH PRIVILEGES;

คุณสามารถระบุรหัสผ่านใหม่ตามที่คุณต้องการ โดยเปลื่ยนตรงข้อความ 'password1234'

โค๊ด:
use ftp;

สร้างตารางชื่อ grp_ftp
โค๊ด:
CREATE TABLE grp_ftp (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';

สร้างตารางชื่อ ftpuser
โค๊ด:
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';

สร้างกลุ่มผู้ใช้
โค๊ด:
INSERT INTO grp_ftp (groupname, gid, members) VALUES ('grp_ftp', 2011, 'ftpuser');

เพิ่มผู้ใช้
โค๊ด:
INSERT INTO ftpuser (id, userid, passwd, uid, gid, homedir, shell, count, accessed, modified) VALUES (1, 'user1', ENCRYPT('user1'), 2011, 2011, '/srv/www/htdocs/testuser1', '/sbin/nologin', 0, '', '');

ผู้ใช้ คือ user1
รหัสผ่าน คือ user1
Home directory =/srv/www/htdocs/testuser1

หรือแบบไม่เข้ารหัส (ENCRYPT)
โค๊ด:
INSERT INTO ftpuser (id, userid, passwd, uid, gid, homedir, shell, count, accessed, modified) VALUES (2, 'use2', 'user2', 2011, 2011, '/srv/www/htdocs/testuser2', '/sbin/nologin', 0, '', '');

ออกจาก mysql
โค๊ด:
quid;

4. สร้างไฟล์ติดต่อกับ mysql database

mysql.conf
โค๊ด:
vi /etc/proftpd/conf.d/mysql.conf

โค๊ด:
#Force the use of mysql backend
SQLBackend                      mysql

# The passwords in MySQL are using its own ENCRYPT function
# There is another SQLAuthTypes you could use called Backend to
# store passwords.  If you choose this make sure you use mysql's
# OLD_PASSWORD() function to store the data.  I couldn't get the

# stand PASSWORD() function to work with it.
SQLAuthTypes                    Crypt
SQLAuthenticate                 users groups

# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo  ftp@localhost proftpd password1234

# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo     ftpuser userid passwd uid gid homedir shell

# Tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
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

# Update modified everytime user uploads or deletes a file
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

ถ้ามีการเปลื่ยนรหัสจากตัวอย่างนี้ คุณต้องระบุรหัสผ่านใหม่ที่บรรทัด SQLConnectInfo  ftp@localhost proftpd password1234

5. สร้างไฟล์ modules.conf

modules.conf
โค๊ด:
vi /etc/proftpd/conf.d/modules.conf

โค๊ด:
## LoadModule
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_sql.c
## End

6.  ติดตั้ง phpmyadmin (หรือจะติดตั้งจาก source ไฟล์ก็ได้)

ซึ่งเราจะใช้ phpMyAdmin เป็นตัวจัดการผู้ใช้บน ProFTPD server

เพิ่ม phpmyadmin repo
โค๊ด:
wger http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.4/server:php:applications.repo

zypper ar server\:php\:applications.repo

zypper ref

zypper in phpmyadmin

หลังติดตั้งเสร็จพาท phpMyAdmin จะอยู่ที่ /srv/www/htdocs/phpMyAdmin/

7. รีสตาร์ท proftpd

โค๊ด:
/etc/init.d/proftpd restar
[code]

หรือ

[code]
rcproftpd restart

8. ทดสอบอับโหลดไฟล์จาก FTP client

FTP User = testuser
FTP Password = secret

หรือใช้ telnet
โค๊ด:
telnet 192.168.1.100 21

โค๊ด:
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
220 FTP server ready
USER testuser
331 Password required for testuser
PASS 1234        

9. ตรวจสอบ log file
โค๊ด:
tail -f /var/log/proftpd/auth.log


#---------------------------------------------------------------------------------------------------------------------------------------------------------
Troubleshooting:
#---------------------------------------------------------------------------------------------------------------------------------------------------------
Error [1]:
โค๊ด:
...
[color=red]support.c:50:29: openssl/crypto.h: No such file or directory
make[1]: *** [support.o] Error 1
make[1]: Leaving directory `/src/proftpd-1.3.2b/src'
make: *** [src] Error 2[/color]

ต้องติดตั้ง OpenSSL library ก่อน ให้ทำการติดตั้งแพ็คเกจ openssl-dev หรือ openSUSE 11.4 จะใช้ชื่อ libopenssl-devel

Solotion:
โค๊ด:
zypper in libopenssl-devel

Error [2]:
โค๊ด:
Fatal: unknown configuration directive 'SQLBackend' on line 7 of '/etc/proftpd/conf.d/mysql.conf'

Solution: ต้องโหลดโมดูล ให้เพิ่ม 2 Module ด้านล่างเข้าไปยังไฟล์ /etc/proftpd/conf.d/modules.conf

โค๊ด:
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

  # ------------------------------
  # Authentication
  # ------------------------------

        ### PAM Authentication
        # AuthPAM: default: on
        AuthPAM                 off

        # changed AuthPAMConfig file
        AuthPAMConfig           proftpd
        ### PAM Authentication

ให้ comment 2 บรรทัดด้านล่างนี้ เนื่องจากเราไม่ได้ใช้ PAM ในการตรวจสอบ

        #AuthUserFile           /etc/proftpd/auth/passwd
        #AuthGroupFile          /etc/group

เพิ่ม
        ### order of auth modules
        AuthOrder               mod_sql.c
[/code][/code][/code][/code]

การติดตั้ง Pure-FTPD (Virtual Users Authentication)
« แก้ไขครั้งสุดท้าย: มิถุนายน 29, 2011, 08:44:47 PM โดย Sontaya » แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ageLOC Technology
Smart
บุคคลทั่วไป


อีเมล์
« ตอบ #1 เมื่อ: ธันวาคม 22, 2011, 11:29:40 AM »


เยี่ยมมากครับ
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า
ageLOC Technology
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

(@)2007 SUSE Linux user community found in Thailand. This site is not an official openSUSE and SUSE website, and is not in any way affiliated with or endorsed by SUSE Linux GmbH or Novell. openSUSE and SUSE are trademarks of Novell, Inc. in the United States and other countries.
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.076 วินาที กับ 20 คำสั่ง (Pretty URLs adds 0.01s, 2q)