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
Step-Step:
- Mempersiapkan User dan Group
- Mempersiapkan Directory
- Membuat file init.d untuk sftp
- Membuat file config untuk sftp
- Membuka firewall untuk port sftp
- 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*)SFTP diset mengunakan 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
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 ACCEPTPort yang dibuka mengikuti port SFTP yang sudah diset pada point 4.
6. Akses SFTP dengan user yang sudah dibuat
sftp -oPort=9022 ftransfer@localhostMasukkan 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@localhostKeterangan:
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
"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