Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
Bab 4
Konfigurasi FTP Server pada Linux
1. FTP server
Ada banyak metode untuk mengkonfigurasi FTP server. Salah satunya
adalah user-ftp, yaitu ftp server yang hanya membolehkan user yang terdaftar untuk melakukan akses ftp ke server.
Jenis ftp server yang lain adalah anonymous FTP server. Anonymous
FTP server mengijinkan semua user untuk melakukan akses ftp dengan
menggunakan user anonymous. Dengan cara ini maka user tidak perlu terdaftar sebagai anggota untuk melakukan proses ftp. Anonymous ftp sangat populer diimplementasikan pada banyak server di seluruh dunia antara lain untuk server yang mengijinkan seorang user pada jaringan untuk terhubung dengannya dan mentransfer file tanpa memiliki account. Sehubungan dengan resiko yang bisa ditimbulkannya maka perlu diatur perijinan agar hanya directory-direktory tertentu yang bisa diakses.
Konfigurasi yang akan dibahas disini adalah FTP server yang
memungkinkan FTP untuk melakukan pengamanan tidak penuh
(semi-secure) dari sistem file Unix, Guest FTP access. Konfigurasi ini
mengijinkan user untuk memiliki akses ke direktory dari FTP server
tanpa perlu memberikan perijinan untuk bisa masuk ke level yang lebih tinggi. Cara ini merupakan setup pengamanan yang paling
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
Pada instalasi berikut ini diasumsikan :
• Perintah (commands) kompatibel dengan Unix
(Unix-compatible).
• Source path yang digunakan adalah /var/tmp, bisa dilakukan
setting dengan path yang lain.
• Proses instalasi diuji pada Red Hat Linux 6.1 atau lebih
baru
• Semua tahapan dalam proses instalasi dilakukan dengan
account super-user atau root.
• Versi dari wu-ftpd adalah 2.6.0
Paket-paket yang digunakan:
Wu- ftpd Homepage:http://www.wu-ftpd.org/
Wu- ftpd FTP Site:205.133.13.68
Lakukan download pada : wu- ftpd-2.6.0.tar.gz
Untuk proses kompilasi, perlu melakukan decompress terhadap
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
# c p wu-ftpd-version.tar.gz /var/tmp # c d /var/tmp
# t a r xzpf wu-ftpd-version.tar.gz
2. Melakukan proses Setup user FTP
Perlu kiranya untuk memberi user FTP shell account yang sifatnya tidak real pada
sistem Linux. Dengan cara ini, maka jika seorang user dapat keluar dari FTP
chrooted environment, maka user tersebut tidak mungkin bisa menjalankan task-task yang dibuatnya tanpa memiliki sebuah bash shell. Maka sehubungan dengan itu, langkah pertama yang dilakukan adalah membuat user- user baru yang diijinkan untuk melakukan akses ftp.
Lakukan perintah berikut ini untuk membuat user baru di file /etc/passwd. Langkah-langkah berikut ini harus selalu dikerjakan untuk setiap penambahan user baru.
# m k d i r /home/ftp
# u s e r a d d -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > /dev/null 2>&1 # p a s s w d ftpadmin
Changing password for user ftpadmin New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
• Perintah mkdir akan membuat direktori baru bernama ftp yang
berada di dalam direktori /home. Direktori /home/ftp digunakan sebagai home direktori dari ftp user dan cukup dibuat sekali saja.
• Perintah useradd digunakan untuk menambah user baru ke
server linux
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
Edit file /etc/shells, vi /etc/shells dan tambahkan shell baru
yang tidak dikenali oleh linux (shell semu) dan beri sembarang nama, misalnya null. (Shell yang umum digunakan di unix antara lain c shell atau csh, bourne shell atau bash, korn shell atau ksh, dll). Shell semu /dev/null akan membatasi akses sistem yang dilakukan oleh ftp user.
Setelah itu, edit file /etc/passwd dan secara manual tambahkan
/./ untuk memisahkan direktori /home/ftp dengan direktori
/ftpadmin.
ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null ^^
3. Menentukan user environment
Pada instalasi ftp server yang bertipe user-ftp, user yang
melakukan akses ftp harus dibatasi hanya pada direktori yang telah ditentukan. Hal ini dimaksudkan agar user tidak dapat masuk ke direktori lain sehingga keamanan lebih terjaga. Pada contoh dibawah ini, user ftp hanya diperbolehkan mengakses direktori /home/ftp.
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
Setelah direktori /home/ftp dibuat, berikutnya adalah menjalankan perintah-perintah sbb. :
# m k d i r /home/ftp/dev # m k d i r /home/ftp/etc # m k d i r /home/ftp/bin # m k d i r /home/ftp/lib
Kemudian direktori-direktori tersebut modenya diset menjadi 0511
untuk alasan keamanan. Dengan cara tersebut maka root mempunyai hak baca dan eksekusi, sedangkan user lainnya hanya mempunyai hak eksekusi saja.
# c h m o d 0511 /home/ftp/dev/ # c h m o d 0511 /home/ftp/etc/ # c h m o d 0511 /home/ftp/bin # c h m o d 0511 /home/ftp/lib
1. Copykan file binary /bin/ls ke /home/ftp/bin dan ubahlah
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
dapat dieksekusi saja tetapi tidak dapat dibaca maupun dimodifikasi.
# c p /bin/ls /home/ftp/bin # c h m o d 0111 /bin/ls /home/ftp/bin/ls
2. Carilah shared library file yang berhubungan dengan file ls
dengan perintah :
# ldd /bin/ls
libc.so.6 => /lib/libc.so.6 (0x00125000)
/lib/ld-linux.so.2 =7gt; /lib/ld-linux.so.2 (0x00110000)
Setelah itu copykan file di atas ke direktori /home/ftp/lib :
# c p /lib/libc.so.6 /home/ftp/lib/ # c p /lib/ld-linux.so.2 /home/ftp/lib/
File library tersebut diperlukan agar file ls dapat bekerja secara normal pada sistem jaringan.
Setelah itu buatlah file /home/ftp/dev/null
# m k n o d /home/ftp/dev/null c 1 3 # c h m o d 666 /home/ftp/dev/null
3. Copykan file /etc/group dan /etc/passwd ke /home/ftp/etc. Setelah hapuslah semua user kecuali yang dibutuhkan saja yaitu user yang diperbolehkan untuk mengakses ftp.
a.
# c p /etc/passwd /home/ftp/etc/ # c p /etc/group /home/ftp/etc/
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
b. Editlah file /home/ftp/etc/passwd dengan perintah v i
/home/ftp/etc/passwd , kemudian hapuslah semua user yang
tidak dibutuhkan sehingga user yang tertinggal hanya seperti berikut ini :
root:x:0:0:root:/:/dev/null
ftpadmin:x:502:502::/ftpadmin/:/dev/null
c. Edit file /home/ftp/etc/group dengan perintah, v i
/home/ftp/etc/group dan hapus semua baris sehingga
menjadi seperti berikut ini :
root:x:0:root ftpadmin:x:502:
4. Untuk keamanan data yang lebih baik, file passwd dan group diubah attributnya . # c d /home/ftp/etc/ # c h a t t r +i passwd # c d /home/ftp/etc/ # c h a t t r +i group
4. Konfigurasi
Semua file konfigurasi yang dibutuhkan untuk tiap software
disediakan dalam bentuk file gzipped file, floppy.tgz untuk
kemudahan. Dan dapat di-download dari alamat web : http://www.openna.com/books/floppy.tgz File tersebut dapat
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
diekstrak (unpack) ke sembarang lokasi pada mesin lokal anda,
misalnya /tmp, asumsikan anda telah mengerjakan hal tersebut
dan sekarang struktur direktory menjadi /tmp/floppy. Dengan
directory floppy seperti ini, maka tiap file konfigurasi memiliki directory-nya sendiri-sendiri untuk tiap software. Sebagai contoh, file konfigurasi FTP diorganisasikan seperti ini :
total 32
-rw-r--r-- 1 iwanarif iwanarif 419 Jun 8 13:00 Compile-Wuftpd
-rw--- 1 iwanarif iwanarif 1036 Jun 8 13:00 ftpaccess -rw--- 1 iwanarif iwanarif 538 Jun 8 13:00
ftpconversions
-rw--- 1 iwanarif iwanarif 39 Jun 8 13:00 ftpgroups -rw--- 1 iwanarif iwanarif 188 Jun 8 13:00 ftphosts -rw--- 1 iwanarif iwanarif 79 Jun 8 13:00 ftpusers
drwxr-xr-x 2 iwanarif iwanarif 4096 Jun 8 13:00 logrotate.d/ drwxr-xr-x 2 iwanarif iwanarif 4096 Jun 8 13:00 pam.d/
Anda bisa melakukan cut dan paste secara langsung dengan mengikuti instruksi yang diberikan atau secara manual mengeditnya untuk dimodifikasi sesuai dengan kebutuhan anda. Fasilitas ini sangat mudah, akan tetapi jangan lupa untuk melakukan pengujian, verifikasi, dsb, sebelum anda menggunakannya untuk memastikan apakah perlu dimodifikasi atau tidak.
Untuk menjalankan FTP server, file-file berikut ini akan
dibutuhkan dan harus dibuat atau dikopikan ke directory pada server anda.
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
• Copikan file ftpusers ke dalam directory /etc/.
• Copikan file ftphosts ke dalam directory /etc/.
• Copikan file ftpgroups ke dalam directory /etc/.
• Copikan file ftpconversion ke dalam directory /etc/.
• Copikan file ftp ke dalam directory /etc/pam.d/.
• Copikan file ftpd ke dalam directory /etc/logrotate.d/.
4.1. Configurasi file /etc/ftphosts
File /etc/ftphosts digunakan untuk mendefinisikan apakah user
diijinkan untuk melakukan log in dari suatu host atau apakah terdapat akses yang diabaikan (denied access).
1. Buat file ftphosts, touch /etc/ftphosts dan tambahkan (sebagai
contoh) baris-baris berikut ke dalam file ini :
# Example host access file #
# Everything after a '#' is treated as comment, # empty lines are ignored
allow ftpadmin 208.164.186.1 208.164.186.2 208.164.186.4 deny ftpadmin 208.164.186.5
2. Pada contoh dibawah ini, user ftpadmin untuk terhubung via
FTP dari daftar alamat secara eksplisit 208.164.186.1
208.164.186.2 208.164.186.4, dan abaikan koneksi user ftpadmin
dari site 208.164.186.5.
3. Sekarang, perubahan secara default diijinkan adalah 600:
[root@deep ] /# c h m o d 600 /etc/ftphosts
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
4.2. Konfigurasi file /etc/ftpusers
File /etc/ftpusers/ menentukan bahwa user-user yang bersangkutan
TIDAK diijinkan untuk terhubung ke FTP server.
1. Buat file ftpusers, touch /etc/ftpusers dan tambahan dalam file
ini user-user berikut untuk tujuan pengamanan :
Root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
2. Sekarang, perubahan yang secara default diijinkan adalah 600:
[root@deep ] /# c h m o d 600 /etc/ftpusers
4.3. Konfigurasi file /etc/ftpconversions
File /etc/ftpconversions berisi instruksi yang mengijinkan anda untuk
melakukan compress files sesuai kebutuhan sebelum ditransfer.
1. Edit file ftpconversions, v i /etc/ftpconversions dan tambahkan
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
:.Z: : :/bin/compress -d -c %s:T_REG│T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG│T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP : : :.tar:/bin/tar -c -f - %s:T_REG│T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG│T_DIR:O_COMPRESS│O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG│T_DIR:O_COMPRESS│O_TAR:TAR+GZIP : : :.crc:/bin/cksum %s:T_REG::CKSUM : : :.md5:/bin/md5sum %s:T_REG::MD5SUM
2. Sekarang, perubahan yang diijinkan secara default adalah 600:
[root@deep ] /# c h m o d 600 /etc/ftpconversions
4.4. Konfigurasi file /etc/pam.d/ftp
Konfigurasi file /etc/pam.d/ftp untuk keperluan autentifikasi pam
dengan membuat file /etc/pam.d/ftp dan menambahkan baris perintah
berikut :
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_shells.so
account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so
4.5. Konfigurasi file /etc/logrotate.d/ftpd
Konfigurasi file /etc/logrotate.d/ftpd untuk melakukan rotate secara
otomatis file log anda setiap minggu dengan membuat file /etc/logrotate.d/ftpd dan menambahkan baris perintah berikut :
/var/log/xferlog {
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
nocompress }
4.6. Konfigurasi ftpd menggunakan tcp-wrappers inetd
Tcp-wrappers harus diset enable untuk memulai dan mengakhiri ftpd server. Selama proses eksekusi, inetd membaca informasi konfigurasi dari file konfigurasi, secara default ada pada /etc/inetd.conf. Harus ada entri untuk tiap field dari file konfigurasi, dengan entri tiap field yang terpisah dengan tanda tab atau spasi.Edit file inetd.conf, vi /etc/inetd.conf dan tambahkan atau lakukan
verifikasi terhadap keberadaan dari baris perintah berikut :
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
Ubah file inetd.conf dengan mengirimkan sinyal SIGHUP, killall -HUP
inetd, setelah menambahkan baris perintah diatas dalam file tersebut.
[root@deep ] /# killall -HUP inetd
Edit file hosts.allow, v i /etc/hosts.allow dan tambahkan, sebagai
contoh, baris perintah berikut :
in.ftpd: 192.168.1.4 win.openna.com
Yang mana berarti client IP 192.168.1.4 dengan host name
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
5. Pengamanan FTP
File ftpusers. Penting artinya untuk memastikan bahwa telah
dilakukan setup terhadap file /etc/ftpusers untuk menentukan
user-user yang mana yang tidak diijingkan untuk terhubung ke FTP
server. Minimum, entri-entri berikut: root, bin, daemon, adm, lp,
sync, shutdown, halt, mail, news, uucp, operator, games, tidak seorangpun dan semua default vendor memiliki account dalam file /etc/passwd.
Anonymous F T P program. Untuk men-disable anonymous FTP, hapus
anonymous user ftp dari file password dan lakukan pembuktian
(verifikasi) bahwa paket anonftp-version.i386.rpm tidak diinstall pada sistem anda.
Untuk menghapus user user ftp dari file password, gunakan perintah
berikut :
[root@deep ] /# userdel ftp
Untuk membuktikan bahwa paket RPM dari anonymous FTP program tidak
diinstal pada sistem Linux, gunakan perintah berikut :
[root@deep ] /# r p m -q anonftp
package anonftp is not installed
Perintah upload. Secara default, server Wu-ftpd server akan menjamin kewenangan (privileges) upload untuk semua user. Parameter upload mengijinkan remote clients untuk me-load dan
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
menempatkan file-file pada FTP server. Untuk pengamanan yang
optimal, kita tidak mengijinkan user untuk dapat melakukan upload
ke dalam sub directory bin, etc, dev, dan lib dalam directory
/home/ftp. Dalam file /etc/ftpaccess kita telah mempunyai chroot'd
users untuk /home/ftp dan user-user tersebut tidak dapat melakukan
akses pada daerah filesystem diluar upload file ke dalam /home/ftp/, /home/ftp/bin, /home/ftp/etc, /home/ftp/dev, dan /home/ftp/lib.
Lakukan edit pada file ftpaccess, vi /etc/ftpaccess dan tambahkan
baris perintah berikut untuk mengabaikan upload privileges.
# We don't want users being able to upload into these areas. upload /home/ftp/* / no
upload /home/ftp/* /etc no upload /home/ftp/* /dev no upload /home/ftp/* /bin no upload /home/ftp/* /lib no
Perintah diatas dibutuhkan untuk mengabaikan perintah upload ke dalam directory /, /etc, /dev, /bin dan /lib dari struktur directory chroot /home/ftp.
6. File spesial .notar
Apakah anda mengijinkan untuk mentar-kan directory atau tidak, harus dipastikan. End-run tidak dapat dibuat dengan menggunakan perintah tar pada semua area dimana parameter upload tidak diijinkan. Untuk maksud tersebut, buatlah direktory khusus untuk
file .notar dalam tiap directory dan dalam directory FTP.
[root@deep ] /# t o u c h /home/ftp/.notar [root@deep ] /# t o u c h /home/ftp/etc/.notar [root@deep ] /# t o u c h /home/ftp/dev/.notar [root@deep ] /# t o u c h /home/ftp/bin/.notar [root@deep ] /# t o u c h /home/ftp/lib/.notar
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
[root@deep ] /# c h m o d 0 /home/ftp/.notar [root@deep ] /# c h m o d 0 /home/ftp/etc/.notar [root@deep ] /# c h m o d 0 /home/ftp/dev/.notar [root@deep ] /# c h m o d 0 /home/ftp/bin/.notar [root@deep ] /# c h m o d 0 /home/ftp/lib/.notar
File Zero-length .notar akan bisa tercampur dengan beberapa web
clients dan FTP proxies, sehingga perlu ditandai agar tidak
terjadi kemungkinan yang tidak diinginkan. Tambahkan baris
perintah berikut ke dalam file /etc/ftpaccess.
noretrieve .notar
Perintah noretrieve. Parameter noretrieve dari Wu-ftpd server mengijinkan anda untuk mengabaikan transfer dari directory atau file yang sudah dipilih. Ini merupakan cara yang bagus untuk
mencegah downloads dari subdirectori seperti bin, etc, dev, dan lib
dalam directory /home/ftp dengan memberikan perintah noretrieve
pada file /etc/ftpaccess.
# We'll prevent downloads with noretrieve. noretrieve /home/ftp/etc
noretrieve /home/ftp/dev noretrieve /home/ftp/bin noretrieve /home/ftp/lib
7. Instalasi Anonymous FTP dengan wu-ftp
Pada instruksi berikut ini, /home/ftp adalah home dari anonymous FTP user
seperti yang tertulis dalam file /etc/passwd. File FTP daemon, ftpd mengenali
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
Direktori utama untuk mengakses anonymous ftp adalah /home/ftp. Hal ini berarti bahwa semua user yang login sebagai anonymous hanya mempunyai akses ke direktori /home/ftp.
Struktur direktori untuk anonymous ftp adalah sbb. :
• /home/ftp—hanya dimiliki oleh root, hak tulis hanya dimiliki oleh root
• /home/ftp/etc—dimiliki oleh root, hak tulis hanya dimiliki oleh root
• /home/ftp/bin—dimiliki oleh root dan berisi beberapa program misalnya: compress, cpio, gzip, ls, sh, tar, dan zcat. Semua file
tersebut harus mempunyai mode ---x--x--x; chmod 111 ~ftp/bin/*
• /home/ftp/lib—berisi file ld-linux.so.2, libc.so.6, libnsl.so.1, and libnss_files.so.1.
• /home/ftp/pub – dimiliki oleh root/ftp, dan dapat keduanya diberi akses untuk menulis (write)
• /home/ftp/pub/incoming – direktori ini dapat ditulisi oleh siapa saja. Hal ini bisa berakibat berbahaya jika pada saat menginstall anonymous ftp setting securitynya tidak bagus.
Direktori /etc harus diset 111 dan harus berisi file groups, passwd dan ld.so.cache
Direktori upload dan download harus dibuat dibawah direktori /home/ftp/pub. Untuk seorang user anonymous ftp yang akan mengirimkan/menuliskan file ke direktori “upload”, direktori ini harus dimiliki oleh FTP dan diset ‘writable’ buat pemiliknya.
FTP user harus sudah terdaftar di file /etc/passwd seperti baris dibawah ini:
ftp:*:14:50:FTP User:/home/ftp:
FTP adalah service yang diatur oleh inet dan harus tertulis pada file /etc/services. Untuk mengcek apakah ftp sudah tertulis pada file /etc/services, ketikkan perintah
Praktikum Jaringan Komputer PENS ITS Iwan Syarif & Ferry Astika
$ cat services |grep ftp ftp-data 20/tcp ftp 21/tcp tftp 69/udp sftp 115/tcp
Jika belum ada, maka tambahkan baris ini : ftp 21/tcp
Referensi :
• http://www.tldp.org/LDP/solrhe/Securing-Optimizing- Linux-
RH-Edition-v1.3/index.html
• Official wu-ftp Site, www.wu-ftpd.org
• Official Redhat Site, www.redhat.com
• Linux Documentation Project, www.ldp.org