Selamat Siang,

Posting kali ini, setelah mencoba untuk membuat akses SFTP user hanya bisa di folder yang kita berikan.

User tersebut tidak boleh maen ke folder-folder lainnya.

Requirement:
  • RHEL 6 atau OpenSSH 5.1

*) Kenapa saya menulis requirement tersebut, hal inilah yang menjadi landasan ane mencari tutorial dan bisa mencoba cara ini. Yaitu karena server saya masih menggunakan RHEL 5.5 sedangkan ada kebutuhan user untuk akses SFTP :)

Step-Step:
    1. Mempersiapkan User dan Group
    2. Mempersiapkan Directory
    3. Membuat file init.d untuk sftp
    4. Membuat file config untuk sftp
    5. Membuka firewall untuk port sftp
    6. Akses SFTP

1. Mempersiapkan User dan Group
useradd -G sftpusers -d /ftransferdata -s /sbin/nologin ftransfer

    Keterangan:
       useradd: command untuk membuat user baru
       -G: Parameter untuk  memasukkan user yang baru dibuat ke Group tertentu
       -d: lokasi home direktory,
       -s: Shell option, set ke nologin, agar user tersebut tidak bisa login menggunakan SSH
       ftransfer: nama user yang dibuat

2. Mempersiapkan Directory
-- Jail Directory
(1) cd /home
(2) mkdir datasftp datasftp/ftransfer
(3) chown -R root.root datasftp
(4) chmod -R 755 datasftp/
 
-- User Directory
(5) cd /home/datasftp/ftransfer
(6) mkdir ftransferdata
(7) chown ftransfer.sftpusers ftransferdata/
(8) chmod 755 ftransferdata/


   Keterangan:
   -- Jail Directory: Directory milik root, directory ini yang akan menjadi "/"-nya user SFTP
   (2) : Membuat directory datasftp dan directory user SFTP di dalam folder datasftp,
           dalam hal ini directory yang dibuat adalah "ftransfer"
   (3) : Merubah kepemilikan directory atas datasftp dan directory user (ftransfer) menjadi root
   (4) : Merubah akses folder atas dadtasftp dan folder user (ftransfer)
   -- User Directory: Directory yang akan diakses user (full akses)
   (6) : Membuat directory sesuai dengan home directory user yang dibuat pada step pertama
   (7) : Merubah kepemilikan atas directory menjadi milik user ftransfer dan group sftpusers
   (8) : Merubah hak akses atas directory


3. Membuat file init.d untuk sftp
vi /etc/init.d/sftpd

Isi file tersebut dengan:
#!/bin/bash
#
# chkconfig: 35 60 25
# description: OpenSSH chrooted sftp only daemon
#
# Note that /usr/sbin/sftpd is simply a symlink to /usr/sbin/sshd;
# You are going to need to CREATE that symlink before using this script.
#

pidfile='/var/run/sftpd.pid'

case "${1}" in

start  ) exec -a /usr/sbin/sftpd /usr/sbin/sshd -f /etc/ssh/sftpd_config
         ;;
stop   ) kill -9 $(cat ${pidfile})
         ;;
restart) ${0} stop
         sleep 3
         ${0} start
         ;;
*      ) echo "Usage: ${0} (start|stop|restart)"
         ;;

esac

exit 0

 Rubah kepemilikan dan akses file tersebut:
chown root.root /etc/init.d/sftpd
chmod 755 /etc/init.d/sftpd

4. Membuat file config untuk sftpd
vi /etc/ssh/sftpd_config

    Isikan dengan:
Port 9022
Protocol 2
AddressFamily inet

SyslogFacility AUTHPRIV
LogLevel INFO

PermitRootLogin no

RSAAuthentication no
PubkeyAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

UsePAM no

PidFile /var/run/sftpd.pid

ChrootDirectory /home/datasftp/%u
Subsystem sftp internal-sftp
    *)SFTP diset mengunakan port 9022.
    Rubah kepemilikan dan akses file tersebut:
chown root.root /etc/ssh/sftpd_config
chmod 600 /etc/ssh/sftpd_config

5.  Membuka Firewall untuk akses sftp
     -A INPUT -p tcp -m state --state NEW -m tcp --dport 9022 -j ACCEPT
     Port yang dibuka mengikuti port SFTP yang sudah diset pada point 4.

6. Akses SFTP dengan user yang sudah dibuat
sftp -oPort=9022 ftransfer@localhost
    Masukkan password jika diminta
    Keterangan:
    sftp: Akses sftp
    -oPort: Parameter untuk menggunakan port
    9022: Port SFTP yang sudah diset pada point 4.
    ftransfer: User SFTP
    localhost: Alamat server, jika diakses dari server lain bisa menggunakan hostname/IP

    Tampilan:
[root@APPZBXTST02 ~]# sftp -oPort=9022 ftransfer@localhost
Connecting to localhost...
ftransfer@localhost's password:
sftp> pwd
Remote working directory: /ftransferdata
sftp> ls
sftp> cd /home
Couldn't canonicalise: No such file or directory
sftp> exit
    Keterangan:
    "Remote working directory: /ftransferdata" : working directory hanya sesuai yang diset di awal
    "Couldn't canonicalise: No such file or directory" : tidak dapat keluar dari home directory

Demikian pengalaman ane hari ini, semoga tulisan ane bisa bermanfaat terutama untuk ane disaat ane lupa, hehe..



Sumber:
Article by:
http://www.linuxquestions.org/questions/blog/anomie-152469/running-an-sftp-only-daemon-on-rhel5-3495/ 

Picture by:
http://cliparts.co/cliparts/ATb/Ko6/ATbKo65Mc.jpg

0 comments:

Post a Comment