Instalasi ProFTP Server

From OnnoWiki
Jump to navigation Jump to search

Sumber: http://melengo.wordpress.com/2011/02/25/komfigurasi-ftp-server-proftpd-version-1-3-2-di-ubuntu/

Sebelum memulai untuk komfigurasi kita pahami sedikit tentang Ftp server dari wikipedia.org menjelaskan tentang ftp server. FTP (singkatan dari File Transfer Protocol) adalah sebuah protokol Internet yang berjalan di dalam lapisan aplikasi yang merupakan standar untuk pentransferan berkas (file) komputer antar mesin-mesin dalam sebuah internetwork.

FTP merupakan salah satu protokol Internet yang paling awal di kembangkan, dan masih digunakan hingga saat ini untuk melakukan pengunduhan (download) dan penggugahan (upload) berkas-berkas komputer antara klien FTP dan server FTP. Sebuah Klien FTP merupakan aplikasi yang dapat mengeluarkan perintah-perintah FTP ke sebuah server FTP, sementara server FTP adalah sebuah Windows Service atau daemon yang berjalan di atas sebuah komputer yang merespons perintah-perintah dari sebuah klien FTP. Perintah-perintah FTP dapat digunakan untuk mengubah direktori, mengubah modus transfer antara biner dan ASCII, menggugah berkas komputer ke server FTP, serta mengunduh berkas dari server FTP.

FTP menggunakan protokol Transmission Control Protocol (TCP) untuk komunikasi data antara klien dan server, sehingga di antara kedua komponen tersebut akan dibuatlah sebuah sesi komunikasi sebelum transfer data dimulai. Sebelum membuat koneksi, port TCP nomor 21 di sisi server akan “mendengarkan” percobaan koneksi dari sebuah klien FTP dan kemudian akan digunakan sebagai port pengatur (control port) untuk :

  • Membuat sebuah koneksi antara klien dan server,
  • Untuk mengizinkan klien untuk mengirimkan sebuah perintah FTP kepada server dan juga
  • Mengembalikan respons server ke perintah tersebut. Sekali koneksi kontrol telah dibuat, maka server akan mulai membuka port TCP nomor 20 untuk membentuk sebuah koneksi baru dengan klien untuk mentransfer data aktual yang sedang dipertukarkan saat melakukan pengunduhan dan penggugahan.

FTP hanya menggunakan metode autentikasi standar, yakni menggunakan username dan password yang dikirim dalam bentuk tidak terenkripsi. Pengguna terdaftar dapat menggunakan username dan password-nya untuk mengakses, men-download, dan meng-upload berkas-berkas yang ia kehendaki. Umumnya, para pengguna terdaftar memiliki akses penuh terhadap beberapa direktori, sehingga mereka dapat membuat berkas, membuat direktori, dan bahkan menghapus berkas. Pengguna yang belum terdaftar dapat juga menggunakan metode anonymous login, yakni dengan menggunakan nama pengguna anonymous dan password yang diisi dengan menggunakan alamat e-mail.

Dari penjelasan di atas bisa dipahami kan sedikit tentang konsep cara kerja ftp server untuk lebih mendalam lagi anda bisa mencari sendiri.

Nah untuk selanjutnyah berikut cara komfigurasi ftp server mengunakan Virtual hosting ProFTPD Version 1.3.2 dan mysql.

langkah pertama install aplikasi yang dibutuhkan caranyah.

aptitude install proftpd proftpd-mod-mysql proftpd-doc proftpd-mod-ldap proftpd-mod-odbc proftpd-mod-pgsql proftpd-mod-sqlite phpmyadmin

Setelah itu membuat ftpgroup dan ftpuser

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd user” -g ftpgroup ftpuser

Setelah membuat group dan user untuk proftpd sekarang tinggal membuat databases untuk proftpd si sini data bases yang saya gunakan mysql, untuk membuat databases mysql ikuti langkah di bawah ini.

mysql -u root -p
CREATE DATABASE ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO ‘proftpd’@'localhost’ IDENTIFIED BY ‘admin’;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO ‘proftpd’@'localhost.localdomain’ IDENTIFIED BY ‘admin’;
FLUSH PRIVILEGES;
USE ftp;
CREATE TABLE ftpgroup (
   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’;
CREATE TABLE ftpquotalimits (
   name varchar(30) default NULL,
   quota_type enum(‘user’,'group’,'class’,'all’) NOT NULL default ‘user’,
   per_session enum(‘false’,'true’) NOT NULL default ‘false’,
   limit_type enum(‘soft’,'hard’) NOT NULL default ‘soft’,
   bytes_in_avail int(10) unsigned NOT NULL default ’0′,
   bytes_out_avail int(10) unsigned NOT NULL default ’0′,
   bytes_xfer_avail int(10) unsigned NOT NULL default ’0′,
   files_in_avail int(10) unsigned NOT NULL default ’0′,
   files_out_avail int(10) unsigned NOT NULL default ’0′,
   files_xfer_avail int(10) unsigned NOT NULL default ’0′
   ) TYPE=MyISAM;
CREATE TABLE ftpquotatallies (
   name varchar(30) NOT NULL default ”,
   quota_type enum(‘user’,'group’,'class’,'all’) NOT NULL default ‘user’,
   bytes_in_used int(10) unsigned NOT NULL default ’0′,
   bytes_out_used int(10) unsigned NOT NULL default ’0′,
   bytes_xfer_used int(10) unsigned NOT NULL default ’0′,
   files_in_used int(10) unsigned NOT NULL default ’0′,
   files_out_used int(10) unsigned NOT NULL default ’0′,
   files_xfer_used int(10) unsigned NOT NULL default ’0′
   ) TYPE=MyISAM;
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’;
 quit

langkah selanjutnyah mengkomfigurasi file proftpd.conf file nyah berada di /etc/proftpd/proftpd.conf caranyah buka terminal kemudian gunakan editor kesayangan anda kebetulan di sini saya mengunakan nanao jadi cukup mengetikan.

nano /etc/proftpd/proftpd.conf

Ikuti komfigurasi file di bawah ini tapi jangan lupa untuk mem becup file aslinyah jika nanti terjadi eror caranyah.

cp /etc/proftpd/proftpd.conf proftpd.conf.asli

Kemudian ikuti komfigurasi di bawah ini.

#
# /etc/proftpd/proftpd.conf — This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off
# If set on you can experience a longer connection delay in many cases.
IdentLookups off

ServerName “Debian”
ServerType standalone
DeferWelcome off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions “-l”

DenyFilter \*.*/

# Use this to jail all users in their homes
DefaultRoot ~

# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell off

# Port 21 is the standard FTP port.
Port 21

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts 49152 65534

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress 1.2.3.4

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours

# DynMasqRefresh 28800

# 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 that the server normally runs at.
User proftpd
Group nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# Normally, we want files to be overwriteable.
AllowOverwrite on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd off 

# This is required to use both PAM-based authentication and local passwords
# AuthOrder mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile off

TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log

QuotaEngine off

Ratios off

# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.

DelayEngine on

ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock

AdminControlsEngine off

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf

# A basic anonymous configuration, no upload directories.

#
# User ftp
# Group nogroup
# # We want clients to be able to login with “anonymous” as well as “ftp”
# UserAlias anonymous ftp
# # Cosmetic changes, all files belongs to ftp user
# DirFakeUser on ftp
# DirFakeGroup on ftp
#
# RequireValidShell off
#
# # Limit the maximum number of anonymous logins
# MaxClients 10
#
# # We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed
# # in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
#
#
# DenyAll
#
#
#
# # Uncomment this if you’re brave.
# #
# # # Umask 022 is a good standard umask to prevent new files and dirs
# # # (second parm) from being group and world writable.
# # Umask 022 022
# #
# # DenyAll
# #
# #
# # AllowAll
# #
# #
#
#

Kemudian Simpan hasil dari komfigurasi tadi jika anda mengunaka nano cukup menekan CTRL + O maka file komfigurasi berhasil di simpan langkah selanjutnyah buka file modules.conf seperti yang tadi file nyah satu polder ama proftpd.conf kemudian ikuti komfigurasi di bawah nih.

#
# This file is used to manage DSO modules and features.
#

# This is the directory where DSO modules reside

ModulePath /usr/lib/proftpd

# Allow only user root to load and unload modules, but allow everyone
# to see which modules have been loaded

ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *

LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c

# Install one of proftpd-mod-mysql, proftpd-mod-pgsql or any other
# SQL backend engine to use this module and the required backend.
# This module must be mandatory loaded before anyone of
# the existent SQL backeds.
LoadModule mod_sql.c

# Install proftpd-mod-ldap to use this
#LoadModule mod_ldap.c

#
# ‘SQLBackend mysql’ or ‘SQLBackend postgres’ directives are required
# to have SQL authorization working. You can also comment out the
# unused module here, in alternative.
#

# Install proftpd-mod-mysql and decomment the previous
# mod_sql.c module to use this.
LoadModule mod_sql_mysql.c

# Install proftpd-mod-pgsql and decommen the previous
# mod_sql.c module to use this.
#LoadModule mod_sql_postgres.c

# Install proftpd-mod-sqlite and decomment the previous
# mod_sql.c module to use this
#LoadModule mod_sql_sqlite.c

# Install proftpd-mod-odbc and decomment the previous
# mod_sql.c moduleto use this
#LoadModule mod_sql_odbc.c

LoadModule mod_radius.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c

# Install proftpd-mod-ldap to use this
#LoadModule mod_quotatab_ldap.c

# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
LoadModule mod_quotatab_sql.c
LoadModule mod_quotatab_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
#LoadModule mod_wrap2_sql.c
LoadModule mod_dynmasq.c

# keep this module the last one
LoadModule mod_ifsession.c

Kemudian tinggal Satu file lagi nih namanyah sql.conf sama seperti yang tadi kemudian ikuti komfigurasi di bawah ini.

#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#

#
#
# Choose a SQL backend among MySQL or PostgreSQL.
# Both modules are loaded in default configuration, so you have to specify the backend
# or comment out the unused module in /etc/proftpd/modules.conf.
# Use ‘mysql’ or ‘postgres’ as possible values.
#
#SQLBackend mysql
#
#SQLEngine on
#SQLAuthenticate on
#
# Use both a crypted or plaintext password
#SQLAuthTypes Crypt Plaintext
#
# Use a backend-crypted or a crypted password
#SQLAuthTypes Backend Crypt
#
# Connection
#SQLConnectInfo proftpd@sql.example.com proftpd_user proftpd_password
#
# Describes both users/groups tables
#
#SQLUserInfo users userid passwd uid gid homedir shell
#SQLGroupInfo groups groupname gid members
#
#

#mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups

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

# 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

# Here we 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

# set min UID and GID – otherwise these are 999 each
SQLMinID 500

# create a user’s home directory on demand if it doesn’t exist
#SQLHomedirOnDemand
CreateHome on

# 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

# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

SQLNamedQuery get-quota-limit SELECT “name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”

SQLNamedQuery get-quota-tally SELECT “name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”

SQLNamedQuery update-quota-tally UPDATE “bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = ‘%{6}’ AND quota_type = ‘%{7}’” ftpquotatallies

SQLNamedQuery insert-quota-tally INSERT “%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}” ftpquotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

RootLogin off
RequireValidShell off

langkah selanjutnyah tinggal restart proftpd

service proftpd restart

Maka akan tamfile seperti di bawah ini jika cara komfigurasinyah udah bener.

service proftpd restart
Stopping ftp server proftpd [ OK ]
Starting ftp server proftpd [ OK ]

Kemudia sekarang tingagal Inser user untuk mysql supaya ftp nyah bisa di akses. caranyah masuk ke mysql seperti yang tadi pertama mysql -u root -p kemudian masukan password untuk mysql dan ikuti langkah di bawah ini.

USE ftp;
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES (‘ftpgroup’, 2001, ‘ftpuser’);
INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`) VALUES (‘melengo’, ‘user’, ‘true’, ‘hard’, 15728640, 0, 0, 0, 0, 0);
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, ‘melengo’, ‘admin’, 2001, 2001, ‘/home/melengo’, ‘/sbin/nologin’, 0, ”, ”);
quit;

Untk percobaan apakah komfigurasi udah bener / belom gunakan filezila / celien ftp server yang lainnyah untuk mencoba. ato cara sederhanayah untuk mencoba hasil komfigurasi di atas Cukup meketikan.

ftp localhost

Kemudian masukan user ama password yang udah di buat tadi Lihat di databasesnya untuk user ama password nyah. kebetulan di data bases yang di inpukan di atas nama user = melengo dan pass=admin.

sekian semoga berhasil untuk lebih jelas nyah anda bisa mencari di bang google. dan sumber dari tutorial ini kelik di Sini


Referensi

Pranala Menarik