Dalam bab ini Server WU-FTPD untuk protokol FTP dijelaskan, dan langkah-langkah yang harus diikuti untuk mengonfigurasinya untuk banyak tugas umum dicantumkan.
Catatan: | Karena klien FTP modern mendukung SSH, pertimbangkan untuk menggunakan Server SSH daripada Server FTP, untuk keamanan (jauh) lebih dari yang dapat dijanjikan oleh server FTP mana pun |
Isi
Pengantar WU-FTPD
WU-FTPD (WU singkatan dari Washington University) mungkin adalah server FTP Unix paling populer di Internet, dan disertakan secara default dengan sebagian besar sistem operasi Unix dan Linux. Banyaknya opsi yang dapat dikonfigurasi membuatnya lebih unggul daripada server FTP 'klasik' atau BSD yang masih digunakan oleh beberapa varian Unix, tetapi menurut saya tidak diimplementasikan secara fleksibel atau bersih seperti ProFTPD, tercakup dalam bab 40. Bab itu juga memiliki pengenalan singkat tentang protokol FTP, yang harus Anda baca sebelum melangkah lebih jauh jika Anda tidak terbiasa dengan konsep seperti klien dan server FTP.
Dalam konfigurasi default normalnya, WU-FTPD akan mengizinkan setiap pengguna Unix (kecuali untuk pengguna sistem) untuk masuk dengan nama pengguna dan kata sandi standar mereka dan mengunggah, mengunduh, dan memanipulasi file di sistem server dengan izin yang sama seperti yang mereka miliki jika terhubung melalui telnet atau SSH. Itu juga dapat diatur untuk mendukung login anonim, sehingga siapa pun dapat terhubung tanpa memerlukan akun Unix yang valid - meskipun klien anonim biasanya dibatasi ke direktori tertentu dan dicegah untuk mengunggah file.
File konfigurasi utama WU-FTPD disebut /etc/ftpaccess, tetapi juga menggunakan beberapa file lain seperti /etc/ftpusers dan /etc/ftphosts. File ftpaccess berisi serangkaian arahan, satu per baris, yang masing-masing memiliki nama dan beberapa nilai. Setiap direktif menetapkan satu opsi seperti jalur ke file pesan, atau alias direktori.
Seperti ProFTPD, WU-FTPD dapat dijalankan baik sebagai proses daemon permanen yang berdiri sendiri atau dari server super seperti inetd atau xinetd. Biasanya opsi yang terakhir digunakan, karena ini menghilangkan kebutuhan akan proses server tambahan untuk dijalankan setiap saat menunggu koneksi FTP. Sejauh menyangkut klien dan file konfigurasi, tidak ada perbedaan antara kedua mode selain dari kinerja.
Modul Server WU-FTPD
Untuk mengkonfigurasi server FTP dari dalam Webmin, klik ikon *WU-FTPD Server* di bawah kategori Server. Jika sudah terpasang dan berfungsi dengan baik, halaman utama modul seperti yang ditunjukkan pada Gambar 41-1 akan ditampilkan. Setiap ikon akan membawa Anda ke formulir untuk menetapkan kelas opsi yang dapat dikonfigurasi, seperti yang terkait dengan pencatatan atau pesan dan spanduk.
Belum selesai
Figure 41-1 “The WU-FTPD Server module”
Jika modul tidak dapat menemukan server WU-FTPD yang dapat dieksekusi, pesan kesalahan seperti *Server FTP /usr/sbin/in.ftpd tidak dapat ditemukan di sistem Anda* atau *File konfigurasi server FTP /etc/ftpaccess tidak ada * akan ditampilkan. Ini biasanya berarti bahwa program tidak terinstal – periksa CD atau situs web distribusi Linux Anda untuk paket wu-ftpd dan instal menggunakan modul Paket Perangkat Lunak, tercakup dalam bab 12. Ini juga dapat berarti bahwa modul mencari di lokasi yang salah untuk program server atau file konfigurasi. Jika Anda yakin bahwa WU-FTPD telah diinstal, lihat bagian “Mengonfigurasi modul Server WU-FTPD” nanti dalam bab ini untuk informasi tentang menyesuaikan jalur yang dicari Webmin.
Terkadang meskipun WU-FTPD diinstal, itu akan dinonaktifkan secara default. Jika Anda menjalankan ftp localhost pada prompt perintah dan mendapatkan kembali pesan kesalahan Sambungan ditolak, tidak ada server FTP yang berjalan. Ini mungkin karena belum ada layanan inetd atau xinetd yang dibuat untuk FTP, atau karena ada layanan tetapi dinonaktifkan. Ikuti petunjuk di bawah ini untuk menjelaskan cara mengatur atau mengaktifkan layanan super-server untuk ProFTPD.
Jika WU-FTPD benar-benar perlu diinstal, Anda harus terlebih dahulu menghapus server FTP lainnya (seperti ProFTPD atau PureFTP) yang saat ini diinstal pada sistem Anda. Pastikan Anda juga mematikan semua prosesnya, sehingga tidak ada yang tertinggal di port FTP. Anda dapat memverifikasi bahwa server lain telah dimatikan sepenuhnya dengan menjalankan ftp localhost pada command prompt – pesan kesalahan Connection ditolak akan ditampilkan, menunjukkan bahwa tidak ada yang mendengarkan pada port 21.
Setelah menginstal WU-FTPD, Anda perlu mengkonfigurasi inetd atau xinetd untuk mendengarkan pada port FTP dan menjalankan program server. Sebelum Anda dapat melakukan ini, cari tahu di mana program tersebut sebenarnya telah diinstal pada sistem Anda – biasanya di /usr/sbin/in.ftpd, tetapi ini mungkin berbeda tergantung pada sistem operasi Anda.
Jika sistem Anda menggunakan server super xinetd yang unggul, ikuti petunjuk ini untuk menyiapkan layanan FTP. Karena banyak paket menyertakan file konfigurasi /etc/xinetd.d untuk server, beberapa bidang yang dijelaskan di bawah ini mungkin sudah diisi dengan benar.
- Buka kategori Jaringan Webmin dan klik ikon *Layanan Internet yang Diperluas*. Jika tidak ada, xinetd tidak diinstal dan Anda harus mengatur server menggunakan inetd sebagai gantinya.
- Pada halaman utama modul, periksa layanan yang ada bernama ftp atau wu-ftpd. Jika ada, klik di atasnya – jika tidak, ikuti Buat layanan internet baru link di atas atau di bawah tabel.
- Dalam Nama layanan bidang, masukkan ftp (kecuali sudah diisi).
- Pastikan Ya opsi dipilih di Layanan diaktifkan? bidang.
- Tinggalkan Ikat ke alamat bidang disetel ke Semua , dan *Nomor port* ke Standar atau 21 .
- Pilih Aliran dari Jenis soket menu, dan Default atau TCP dari Protokol daftar.
- Dalam Layanan yang ditangani oleh bidang, pilih Program server option dan masukkan path ke WU-FTPD yang dapat dieksekusi dengan argumen –l –a (seperti /usr/sbin/in.ftpd –l -a ) ke dalam kotak teks yang berdekatan.
- Dalam Jalankan sebagai pengguna bidang, masukkan root .
- Pilih Tidak untuk Tunggu sampai selesai? bidang.
- Biarkan semua bidang lain disetel ke default, dan tekan tombol Simpan atau Buat tombol di bagian bawah formulir.
- Kembali ke halaman utama modul, klik tombol Terapkan Perubahan tombol di bawah daftar layanan.
Cara lainnya, untuk menyiapkan layanan inetd untuk WU-FTPD menggunakan modul Layanan dan Protokol Internet, ikuti langkah-langkah berikut :
- Buka kategori Jaringan Webmin dan klik ikon *Layanan dan Protokol Internet*. Jika tidak ada, sistem Anda mungkin menggunakan xinetd.
- Pada halaman utama modul, klik ftp di tabel *Layanan Internet*. Jika tidak terlihat, masukkan ftp ke dalam kolom *Edit service* dan tekan tombol. Either way, halaman yang sama untuk mengedit layanan protokol FTP akan ditampilkan.
- Dalam Program Server bagian, pilih Program diaktifkan .
- Di bidang Program , pilih Perintah dan masukkan path lengkap ke server WU-FTPD yang dapat dieksekusi ke bidang di sebelahnya, seperti /usr/sbin/in.ftpd . Dalam Args bidang, masukkan in.ftpd –l -a .
- Setel Mode tunggu untuk Jangan menunggu , dan masukkan root di Jalankan sebagai Pengguna bidang. Semua yang lain dapat dibiarkan tidak berubah.
- Klik tombol Simpan tombol, lalu kembali ke halaman utama modul, tekan Terapkan Perubahan .
Setelah WU-FTPD diatur untuk dijalankan dari inetd atau xinetd, Anda dapat mengujinya dengan menggunakan klien FTP Unix baris perintah untuk terhubung ke sistem Anda sendiri. Jalankan saja ftp localhost, dan pastikan Anda bisa login sebagai pengguna selain root. Jika tidak, periksa file log Anda (menggunakan modul System Logs, yang dibahas dalam bab 13) apakah ada pesan dari inetd atau xinetd yang mungkin menjelaskan apa yang salah.
Membatasi siapa yang bisa login
Dalam konfigurasi normalnya, WU-FTPD akan mengizinkan setiap pengguna Unix untuk login dengan pengecualian akun sistem seperti root, bin dan daemon. Pengguna root hampir selalu ditolak secara default karena protokol FTP tidak mengenkripsi kata sandi saat dikirim melalui jaringan, yang berarti bahwa login jarak jauh sebagai root dapat memaparkan kata sandinya kepada penyerang. Untuk mengubah pengguna dan grup yang dapat masuk ke sistem Anda, ikuti langkah-langkah berikut:
- Pada halaman utama modul, klik Pengguna dan Kelas ikon untuk memunculkan formulir yang ditunjukkan pada Gambar 41-2.
- Tambahkan ke pengguna Unix untuk menolak isikan semua akun yang ingin Anda cegah menggunakan server FTP Anda, atau hapus akun yang ingin Anda izinkan. Ini akan memperbarui file /etc/ftpaccess, yang digunakan oleh server FTP lain seperti ProFTPD jika suatu saat Anda memutuskan untuk beralih.
- Untuk menolak pengguna yang UID-nya berada dalam rentang tertentu, isi pengguna Unix dan UID yang akan ditolak bidang. Anda dapat memasukkan rentang UID seperti %3000-4000 , yang akan memblokir semua pengguna dengan UID antara 3000 atau 4000. Atau Anda dapat memasukkan rentang seperti %-100 atau %5000- yang akan menolak pengguna dengan UID masing-masing kurang dari 100 atau lebih besar dari 5000. Beberapa rentang dapat dimasukkan, dipisahkan oleh spasi. Nama pengguna normal dapat digunakan di bidang ini juga, meskipun ini memiliki efek yang sama dengan menempatkannya di pengguna Unix untuk ditolak bidang.
- Untuk menolak pengguna yang ID grup utamanya berada dalam rentang tertentu, isi Grup Unix dan GID yang akan ditolak bidang. Sekali lagi, Anda dapat memasukkan rentang ID seperti %100-200 atau %-10 , serta nama grup seperti pengguna . Hanya keanggotaan grup utama yang dihitung – jika pengguna adalah anggota sekunder dari salah satu grup yang terdaftar, dia tidak akan diblokir.
- Untuk mengecualikan beberapa pengguna atau grup dari daftar tolak yang ditentukan dalam dua langkah sebelumnya, isi Pengguna Unix dan UID untuk tidak ditolak dan Grup Unix dan GID untuk tidak menyangkal bidang. Bidang pertama akan menerima rentang UID atau nama pengguna, dan rentang ID grup atau nama grup kedua. Bidang ini berguna jika Anda ingin mengizinkan hanya beberapa pengguna sambil memblokir orang lain dengan rentang UID yang mencakup semua akun.
- Tekan tombol Simpan tombol di bagian bawah halaman untuk menyimpan dan mengaktifkan pembatasan pengguna baru.
Belum selesai
Figure 41-2 “The users and classes page”
WU-FTPD juga biasanya akan mencegah pengguna yang shell-nya tidak terdaftar dalam file /etc/shells untuk login. Hal ini biasanya dilakukan untuk memungkinkan pembuatan akun yang dapat login ke server POP3, tetapi tidak dapat terhubung melalui telnet, SSH atau FTP. Sayangnya, tidak ada opsi konfigurasi WU-FTPD yang dapat diubah untuk menonaktifkan pemeriksaan shell ini. Itu dikodekan ke dalam program, atau ditegakkan oleh layanan ftp PAM yang benar-benar digunakan untuk mengotentikasi pengguna.
Jika WU-FTPD pada sistem Anda menggunakan PAM (seperti pada kebanyakan distribusi Linux), ikuti langkah-langkah berikut untuk menonaktifkan pemeriksaan /etc/shells:
- Buka modul Otentikasi PAM, yang dapat ditemukan di bawah kategori Sistem pada menu utama Webmin.
- Klik pada ftp atau wu-ftpd layanan di halaman utama.
- Pada form edit yang muncul, klik pam_shells.so dalam modul PAM kolom di Langkah otentikasi bagian.
- Dari Tingkat kegagalan pilih menu Opsional , sehingga keberhasilan atau kegagalan pemeriksaan file shells diabaikan untuk tujuan otentikasi.
- Klik tombol Simpan tombol. Pengguna dengan shell yang tidak valid tidak akan bisa login ke server FTP Anda.
Pada sistem operasi lain, langkah-langkah di atas tidak berguna, karena modul Otentikasi PAM hanya tersedia di Linux.
Menyiapkan FTP anonim
Mengonfigurasi WU-FTPD untuk menerima login anonim sedikit lebih rumit dari yang Anda harapkan, karena penggunaan perintah ls untuk menghasilkan daftar direktori. Agar perintah ini (dan perintah lain yang digunakan oleh server) tidak dapat keluar dari direktori tempat klien anonim dibatasi, server menggunakan panggilan sistem chroot Unix untuk membatasi dirinya sendiri dan semua program yang dijalankan ke direktori tersebut. Ini berarti bahwa direktori root harus berisi semua program, file, dan pustaka bersama yang harus dijalankan oleh WU-FTPD dan perintah ls.
Secara default, direktori home dari ftp pengguna Unix khusus digunakan sebagai root FTP anonim, tetapi root yang berbeda dapat ditetapkan ke kelas klien yang berbeda. Namun, direktori apa pun yang dipilih harus berisi subdirektori bin dengan perintah ls, gzip, tar, recompress, cpio dan zcat. Itu juga harus memiliki subdirektori lib yang berisi pustaka bersama yang diperlukan oleh perintah-perintah itu, subdirektori etc dengan file passwd dan grup, dan direktori pub tempat file yang dapat diunduh disimpan.
Seperti yang dapat Anda bayangkan, menyalin semua file ini ke tempatnya dan memastikannya berfungsi cukup rumit. Untungnya, banyak distro Linux yang menyertakan paket wu-ftpd juga memiliki paket bernama anonftp yang menempatkan semua file yang diperlukan di direktori home pengguna ftp. Dalam kebanyakan kasus, yang perlu Anda lakukan adalah menginstal paket ini dan WU-FTPD akan memungkinkan klien untuk login secara anonim.
Terlepas dari izin pada direktori root, WU-FTPD akan selalu mencegah klien anonim mengunggah, mengganti nama, atau menghapus file. Yang dapat mereka lakukan hanyalah mengunduh file yang Anda tempatkan di subdirektori pub untuk distribusi publik.
Login anonim dapat dikonfigurasi lebih lanjut dengan mengikuti langkah-langkah berikut:
- Klik FTP Anonim ikon di halaman utama modul.
- Direktori root FTP anonim tabel memungkinkan Anda untuk menentukan akar yang berbeda untuk digunakan untuk kelas klien yang berbeda. Setiap direktori yang ada (selain dari default ~ftp) terdaftar dalam tabel untuk diedit, dan akan selalu ada satu baris kosong untuk menambahkan yang baru. Segera setelah entri ditambahkan, itu akan menggantikan default, jadi pastikan untuk menambahkannya secara eksplisit jika Anda ingin terus bekerja. Jika Anda ingin menambahkan lebih dari satu direktori, Anda harus menyimpan dan membuka kembali halaman ini sehingga baris kosong baru muncul. Setiap baris memiliki dua bidang, yaitu:Directory Di bidang ini Anda harus memasukkan path lengkap ke direktori FTP anonim yang valid (yang berisi subdirektori etc, bin, lib dan pub dan semua program yang diperlukan). Untuk kelas Dari menu ini Anda harus memilih kelas klien ke direktori yang akan digunakan, dengan asumsi bahwa klien di kelas itu login secara anonim. Jika Ada dipilih itu akan digunakan untuk klien yang tidak berada di kelas lain dalam tabel ini. Lihat bagian “Mengelola kelas pengguna” untuk detail tentang cara menentukan kelas Anda sendiri.
- Saat pengguna masuk ke server FTP Anda secara anonim, mereka tetap harus memberikan kata sandi meskipun tidak digunakan untuk otentikasi. Biasanya sandi ini adalah alamat email pengguna, yang dapat digunakan untuk mendapatkan gambaran kasar tentang asal klien domain. Namun, untuk alasan privasi, banyak klien dan browser FTP modern tidak lagi mengirim alamat email asli, melainkan masuk dengan alamat email palsu seperti [email protected]. Anda dapat mengonfigurasi WU-FTPD untuk memeriksa format sandi login anonim guna memastikan bahwa sandi tersebut terlihat seperti alamat email menggunakan pemeriksaan sandi FTP Anonim lapangan di halaman ini. Jika Default dipilih, tidak ada pemeriksaan yang akan dilakukan. Namun, jika opsi kedua dipilih, tingkat pemeriksaan tergantung pada pilihan yang Anda buat dari menunya:Izinkan apa saja Kata sandi apa pun diperbolehkan, bahkan kata sandi kosong (ini sama dengan mode default). Harus berisi @ Kata sandi harus berisi simbol @. Harus berupa alamat email RFC882 Kata sandi harus terlihat seperti alamat email yang valid, dengan huruf dan angka sebelum dan sesudah @. Menu kedua menentukan apakah server FTP hanya memperingatkan klien yang melanggar pemeriksaan (jika Hanya peringatkan dipilih), atau memblokir semuanya (jika Tolak login dipilih).
- Untuk memblokir semua sandi anonim tertentu (walaupun valid), isi Sandi FTP anonim untuk ditolak bidang dengan daftar alamat email lengkap atau sebagian. Ini dapat berguna untuk memblokir klien FTP yang dikonfigurasi secara default untuk menggunakan alamat palsu. Namun, saya sarankan untuk tidak menggunakan fitur ini karena akan memblokir banyak orang, terutama mereka yang menggunakan browser web.
- Tekan tombol Simpan tombol di bagian bawah halaman untuk mengaktifkan pengaturan FTP anonim baru.
Mengelola kelas pengguna
Server FTP mengkategorikan klien ke dalam kelas berdasarkan alamat sumber dan jenis login mereka. Klasifikasi dapat digunakan di beberapa tempat berbeda dalam konfigurasi WU-FTPD untuk menentukan pengaturan yang hanya berlaku untuk klien tertentu. Ini juga dapat digunakan untuk memblokir login non-anonim (atau bahkan semua login) dari luar jaringan Anda. Ini dapat berguna jika Anda hanya ingin mengizinkan host tepercaya tertentu untuk mengunggah data ke server Anda, tetapi membiarkan siapa pun di Internet masuk secara anonim untuk mengunduh.
Setiap kelas memiliki nama, daftar jenis login dan daftar alamat klien, nama host atau jaringan. Hanya klien yang cocok dengan tipe login dan alamat yang dianggap berada di kelas, dan jika lebih dari satu kelas cocok, yang pertama digunakan. Klien yang tidak termasuk dalam kelas apa pun tidak diizinkan menggunakan server FTP.
Tiga jenis login berikut dikenali oleh WU-FTPD:
- Unix
- Pengguna Unix normal yang dapat login melalui telnet atau SSH, dan mengakses semua file pada sistem dengan izin reguler mereka.
- Tamu
- Pengguna Unix yang telah ditetapkan sebagai tamu, dan ini terbatas pada direktori (biasanya rumah mereka) dengan cara yang sama seperti pengguna anonim. Lihat bagian “Menyiapkan pengguna tamu” untuk detail selengkapnya.
- Anonim
- Pengguna yang login secara anonim dan terbatas pada direktori tertentu.
Untuk menentukan dan mengedit kelas menggunakan modul, ikuti petunjuk berikut:
- Klik pada Pengguna dan Kelas ikon di sudut kiri atas halaman utama modul. Formulir yang ditunjukkan pada Gambar 41-2 akan muncul di browser Anda.
- Di bagian atas halaman ada tabel berlabel Kelas pengguna . Setiap baris mendefinisikan sebuah kelas, dan akan selalu ada setidaknya satu yang sudah terdaftar (biasanya semua kelas yang cocok dengan semua klien). Tabel selalu memiliki satu baris kosong di bagian bawah untuk Anda tambahkan kelas baru – jika Anda ingin menambahkan lebih dari satu, Anda harus membuatnya satu per satu. Anda dapat mengedit kelas yang ada dengan mengubah bidangnya, atau menghapus kelas dengan menghapus bidang namanya. Pastikan Anda tidak menghapus semuanya, karena ini akan mencegah semua pengguna masuk. Bidang untuk setiap kelas adalah:Nama kelas Nama pendek untuk kelas ini yang hanya terdiri dari huruf dan angka, seperti homenet atau tepercaya . Lebih dari satu baris dapat memiliki nama kelas yang sama, dan klien yang cocok dengan tipe pengguna dan alamat di baris mana pun akan dianggap sebagai anggota kelas. *Jenis pengguna *Jenis login yang cocok dengan kelas ini, seperti yang dijelaskan di atas. Anda harus memilih setidaknya satu dari tiga kotak centang. Alamat yang cocok Bidang ini adalah tempat Anda bisa memasukkan alamat klien yang cocok dengan kelas. Anda dapat memasukkan satu IP (seperti 192.168.1.1 ), nama host (seperti www.foo.com ), IP karakter pengganti dan nama host (seperti 10.254.1.* atau *.contoh.com ) atau bahkan jalur ke file yang berisi lebih banyak alamat dan nama host seperti itu. Beberapa entri harus dipisahkan dengan spasi. Entri yang dinegasikan seperti !*.foo.com bahkan diizinkan, yang akan cocok dengan semua klien yang hostname-nya berada di luar foo.com domain. Berhati-hatilah saat menggunakan nama host, karena WU-FTPD harus mencari nama host klien dari alamat IP mereka, yang hasilnya dapat dipalsukan oleh penyerang.
- Setelah Anda selesai menentukan kelas, tekan tombol Simpan tombol di bagian bawah formulir. Anda sekarang dapat menggunakannya di halaman lain dalam modul.
Menolak akses ke file
Terkadang berguna untuk membatasi jenis file yang dapat diunduh pengguna, terutama untuk klien anonim yang tidak tepercaya. Anda dapat memblokir akses ke nama file di direktori mana pun (seperti secret.txt ), jalur absolut (seperti /etc/passwd ) atau bahkan direktori dan semua isinya (seperti /var/log ). Karakter karakter pengganti shell * dan ? dapat digunakan dalam nama file dan path juga, yang memberikan fleksibilitas ekstra. Ini dapat berguna jika Anda ingin melindungi file yang berisi informasi rahasia, atau membatasi klien untuk mengunduh dari direktori tertentu (seperti /home ). Namun, tidak ada cara untuk mencegah daftar direktori menggunakan fitur ini.
Untuk mengatur batasan download nama file, langkah-langkah yang harus diikuti adalah:
- Pada halaman utama, klik pada Batas dan Kontrol Akses ikon untuk memunculkan formulir yang ditunjukkan pada Gambar 41-4.
- Setiap baris di Tolak akses ke file tabel mendefinisikan batasan nama file tunggal. Seperti tabel lain dalam modul ini, di bagian bawah tabel terdapat satu baris kosong untuk menambahkan nama file atau jalur baru – dan jika ini adalah pertama kalinya Anda menggunakan fitur ini, satu baris adalah semua tabel yang akan berisi. Jika tidak, pembatasan yang ada akan dicantumkan, memungkinkan Anda untuk mengedit atau menghapusnya. Kolom di setiap baris dan artinya adalah:File untuk ditolak Daftar nama file atau pola relatif atau absolut untuk ditolak aksesnya, dipisahkan oleh spasi. Karakter wildcard * dan ? dapat digunakan untuk keduanya, memungkinkan Anda memasukkan file seperti rahasia.* atau /home/*/public_html . Relatif terhadap chroot? Jika Ya dipilih, setiap jalur absolut yang dimasukkan di bidang pertama dianggap relatif terhadap direktori root FTP anonim. Jika Tidak dipilih, jalur dianggap relatif terhadap direktori root sebenarnya. Tolak untuk kelas Di bidang ini Anda harus memilih kotak centang untuk kelas yang berlaku pembatasan. Lihat bagian “Mengelola kelas pengguna” untuk informasi lebih lanjut tentang cara menambahkan kelas Anda sendiri. Ini dapat berguna jika Anda ingin memblokir akses oleh klien anonim ke beberapa file, tetapi mengizinkan pengguna Unix yang sebenarnya.
- Izinkan akses ke file meskipun ditolak tabel memiliki struktur yang persis sama dengan tabel penolakan, tetapi untuk memasukkan nama file dan jalur yang aksesnya harus diizinkan meskipun ditolak oleh entri dalam tabel di atas. Ini dapat digunakan untuk menolak akses ke semuanya (dengan memasukkan _*_ di File untuk ditolak baris) dan kemudian memberikan kembali hak unduh hanya pada file yang cocok dengan pola (seperti *.html Misalnya).
- Klik tombol Simpan tombol di bagian bawah halaman untuk menyimpan dan mengaktifkan pembatasan file baru. Jika Anda ingin menambahkan lebih dari satu entri di salah satu tabel, klik ikon *Batas dan Kontrol Akses* lagi untuk menampilkan kembali formulir dan mengisi baris kosong baru yang muncul.
Belum selesai
Figure 41-4 “The limits and access control form”
Ada juga fitur serupa untuk membatasi nama file yang dapat diunggah klien. Ini dapat berguna untuk memblokir pembuatan file atau direktori tersembunyi yang namanya dimulai dengan titik, atau sulit untuk memahami nama yang mengandung spasi dan karakter kontrol. Ini sering digunakan oleh orang yang licik untuk menyembunyikan file di server FTP anonim Anda jika Anda mengizinkan pengunggahan. Karena orang tepercaya mungkin memiliki alasan bagus untuk membuat file seperti itu, Anda dapat menentukan batasan yang hanya berlaku untuk pengguna anonim atau tamu.
Untuk menambah dan mengedit batas upload nama file, ikuti langkah-langkah berikut:
- Pada halaman utama modul, klik Izin ikon.
- Pada form yang muncul, Nama file upload yang tidak diizinkan tabel di bagian bawah mencantumkan nama file yang diizinkan dan ditolak untuk berbagai jenis pengguna. Pembatasan yang ada dapat diedit dengan hanya mengubah bidangnya di tabel, dan yang baru dibuat dengan mengisi baris kosong terakhir (yang akan berisi semua tabel jika Anda belum pernah menggunakan formulir ini sebelumnya). Kolom dalam tabel dan arti dari kolomnya adalah:Karakter yang diizinkan Ekspresi reguler Perl tunggal yang harus cocok dengan semua file yang diunggah. Misalnya, jika Anda memasukkan ^[a-z]+$ , hanya nama file yang terdiri dari huruf kecil yang diizinkan. Ajukan regexps untuk ditolak Daftar ekspresi reguler yang dipisahkan oleh spasi yang tidak diizinkan dalam nama file. Contoh yang bagus adalah ^\. , yang memblokir nama apa pun yang dimulai dengan titik, yang menyembunyikan file. Jenis pengguna Jenis pengguna tempat pembatasan ini berlaku. Seringkali Anda ingin menempatkan batasan yang lebih ketat pada klien anonim daripada pengguna nyata atau tamu. File pesan kesalahan Jalur lengkap ke file yang akan dikirim ke klien mana pun yang mencoba mengunggah file yang namanya tidak cocok dengan ekspresi yang diizinkan, atau cocok dengan salah satu ekspresi yang ditolak.
- Seperti biasa, klik tombol Simpan tombol di bagian bawah halaman untuk mengaktifkan batasan baru saat Anda selesai.
Jika lebih dari satu batasan ditentukan untuk jenis pengguna yang sama, semuanya akan diperiksa untuk menentukan apakah nama file yang diunggah diizinkan.
Menyiapkan pengguna tamu
Pengguna FTP tamu adalah pengguna Unix nyata yang dibatasi oleh WU-FTPD ke direktori tertentu, seperti halnya klien anonim dibatasi. Mereka masih memiliki hak penuh dalam direktori itu, termasuk hak untuk mengunggah file, mengganti nama dan file chmod. Membatasi pengguna untuk akses tamu dapat berguna jika Anda ingin mencegahnya melihat bagian dari sistem file Anda di luar direktori home-nya atau beberapa direktori induk seperti /home.
Setiap pengguna yang ditetapkan sebagai tamu oleh konfigurasi server FTP dapat memiliki direktori root yang berbeda, atau beberapa dapat sama. Namun, direktori root yang dipilih harus diatur dengan cara yang sama seperti root FTP anonim – dengan subdirektori bin, lib dan lain-lain yang berisi semua program dan file yang dibutuhkan oleh WU-FTPD. Anda bisa menyalin direktori tersebut di seberang dari root anonim, jadi proses penyiapannya tidak terlalu sulit.
Untuk mengatur pengguna sebagai tamu, direktori home-nya harus dimodifikasi secara khusus. Langkah-langkah di bawah ini menjelaskan cara melakukannya menggunakan Webmin:
- Buka modul Users and Groups (dibahas dalam bab 4) dan klik nama pengguna yang ingin Anda batasi.
- Ubah direktori home menjadi guestroot_/./_homedir , di mana akar tamu adalah direktori root yang telah Anda siapkan, dan homedir subdirektori di bawahnya. Jika Anda menggunakan /home sebagai root, /home/./jcameron bisa menjadi direktori untuk pengguna jcameron. Entri /./ khusus di jalur ini memberi tahu WU-FTPD di mana root berada, tetapi seharusnya tidak membingungkan program lain.
- Klik tombol Simpan tombol di bagian bawah halaman. Webmin akan memindahkan direktori home-nya ke lokasi baru jika perlu.
Tentu saja, Anda juga dapat menentukan rumah seperti itu saat membuat pengguna baru. Ini hanya langkah pertama – untuk mengonfigurasi WU-FTPD agar memperlakukan pengguna tertentu sebagai tamu, Anda harus mengikuti langkah-langkah berikut:
- Pada modul WU-FTPD Server klik tombol Users and Classes ikon untuk memunculkan formulir yang ditunjukkan pada Gambar 41-2.
- Di pengguna Unix dan UID untuk diperlakukan sebagai tamu , masukkan daftar nama pengguna, UID, atau rentang UID yang dipisahkan spasi (seperti %1000-2000 _atau %5000-_) pengguna yang akan ditetapkan sebagai tamu. Anda juga dapat memasukkan daftar nama grup, ID, dan rentang ID di bidang *Grup Unix dan GID untuk diperlakukan sebagai tamu* agar semua anggota utama mereka juga diperlakukan sebagai tamu.
- Untuk menghentikan beberapa pengguna agar tidak dikonversi menjadi tamu meskipun mereka berada dalam daftar atau rentang yang ditetapkan pada langkah 2, isi Pengguna Unix dan UID untuk tidak diperlakukan sebagai tamu dan Grup Unix dan GID untuk tidak diperlakukan sebagai tamu bidang. Ini bisa berguna jika Anda ingin menjadikan semua orang sebagai tamu kecuali beberapa pengguna tepercaya.
- Klik tombol Simpan tombol di bagian bawah halaman untuk mengaktifkan sebutan tamu baru.
Jika pengguna telah dikonfigurasi sebagai tamu tetapi tidak memiliki /./ di direktori home-nya, ia tidak akan dibatasi ke direktori root mana pun.
Mengedit alias direktori
Untuk menyederhanakan kehidupan bagi pengguna yang sering perlu mengakses direktori dengan jalur panjang, WU-FTPD memungkinkan Anda untuk menentukan alias direktori yang dapat digunakan saat berpindah ke direktori lain. Ini berarti bahwa seseorang yang menggunakan klien FTP baris perintah dapat memasukkan cd stuff:alih-alih cd /usr/local/etc/stuff, dengan asumsi bahwa alias yang sesuai telah dibuat.
Untuk menyiapkan alias, ikuti langkah-langkah berikut:
- Pada halaman utama modul, klik Alias dan Paths ikon.
- Alias direktori CD field sebenarnya adalah tabel yang mencantumkan alias yang ada (jika ada) dan selalu memiliki satu baris kosong untuk menambahkan yang baru. Di bidang kosong pertama di bawah Nama alias kolom, masukkan nama untuk alias baru seperti barang: atau sampah: . Tidak ada persyaratan bahwa alias diakhiri dengan titik dua – namun, ini adalah ide yang baik karena mengurangi risiko nama alias sama dengan direktori relatif yang sebenarnya. Di bidang yang sesuai di bawah Alias to directory , masukkan path direktori lengkap seperti /usr/local/junk bahwa alias sama dengan. Jika Anda ingin menambahkan lebih dari satu alias, Anda harus menyimpan dan membuka kembali halaman ini sehingga muncul baris kosong baru. Untuk menghapus satu, cukup kosongkan kedua bidangnya di tabel.
- Jalur pencarian direktori CD kotak teks memungkinkan Anda memasukkan daftar direktori yang akan dicari jika klien mencoba mengubah ke subdirektori relatif yang tidak ada di direktori saat ini. Misalnya, jika /usr/local disertakan dan klien mencoba untuk beralih ke direktori bin, ia akan ditempatkan di /usr/local/bin (dengan asumsi tidak ada subdirektori bin nyata).
- Tekan tombol Simpan tombol di bagian bawah halaman untuk mengaktifkan alias baru.
Alias tidak terlalu berguna dalam klien FTP grafis yang memberi pengguna daftar direktori untuk diklik. Karena pengguna tidak dan sering tidak dapat mengubah ke direktori semu eksplisit seperti stuff:dan alias tidak disertakan dalam daftar, mereka sulit digunakan. Klien FTP seperti perintah seperti ncftp dan program ftp Unix klasik lebih cocok untuk menggunakannya.
File pesan dan readme
WU-FTPD dapat dikonfigurasi untuk mengirim isi dari berbagai file pesan ke klien ketika mereka login atau masuk ke direktori tertentu. Ini berguna untuk menampilkan informasi tentang server FTP Anda (seperti siapa yang menjalankannya dan file apa yang di-host) atau rincian isi direktori tertentu kepada pengguna FTP. Setiap file hanya dikirim sekali ke klien dalam satu sesi, untuk menghindari mengganggu pengguna dengan pesan berulang.
Server juga dapat diatur untuk memberi tahu klien bahwa file tertentu ada dan memberi tahu mereka tentang tanggal modifikasi terakhir mereka. Ini biasanya digunakan untuk file README yang berisi informasi yang sedikit kurang penting tentang direktori atau server, yang mungkin ingin dibaca oleh pengguna. Sekali lagi, klien hanya diberi tahu satu kali per sesi untuk setiap file tersebut.
Untuk menentukan file pesan dan spanduk, ikuti langkah-langkah berikut:
- Klik pada Pesan dan Spanduk ikon pada halaman utama modul, yang akan membawa Anda ke formulir yang ditunjukkan pada Gambar 41-3.
- File pesan bagian adalah tabel untuk menentukan file yang isinya akan dikirim ke klien. Seperti biasa dengan tabel di Webmin, ini mencantumkan file yang ada dan konteksnya, dan memiliki satu baris kosong di bagian bawah untuk menambahkan yang baru. Arti dari field adalah:Path Jalur ke file yang isinya harus dikirim ke klien. Ini bisa berupa jalur absolut seperti /etc/login.message atau nama file relatif seperti message.txt . Dalam kasus terakhir, itu dicari di setiap direktori yang dimasukkan klien. Jika Anda memasukkan path lengkap dan ingin klien anonim dapat melihatnya, itu harus berada di bawah direktori root FTP anonim. Kapan harus ditampilkan Jika Saat masuk dipilih, file akan dikirim ke klien setelah login. Jika Memasukkan direktori apa pun dipilih, file akan dicari dan dikirim saat berpindah ke direktori mana pun. Saat Memasukkan dir dipilih, file hanya akan dikirim ketika direktori yang jalurnya Anda tentukan di kotak teks yang berdekatan dimasukkan. Sekali lagi, ini harus relatif terhadap direktori root untuk klien anonim. Kelas untuk ditampilkan Jika bidang ini dibiarkan kosong, pesan akan dikirim ke semua klien. Namun, jika satu atau lebih kelas klien dimasukkan (dipisahkan dengan spasi) itu hanya akan digunakan untuk klien yang termasuk dalam kelas tersebut. Ini dapat berguna untuk mendefinisikan file pesan hanya untuk pengguna anonim, terutama saat menggunakan jalur absolut.
- Untuk menentukan file yang akan diberitahukan kepada klien tentang keberadaannya, Anda harus mengisi file README meja. Sekali lagi, ini mencantumkan semua file yang ada dan memiliki baris kosong untuk menambahkan satu file baru. Arti dari field dalam kolom tabel ini adalah:Path' Jalur ke file yang keberadaan dan waktu modifikasinya harus dikirim ke klien. Ini bisa berupa jalur absolut seperti /etc/README atau nama file relatif terhadap direktori yang dimasukkan seperti README.txt . Anda bahkan dapat menggunakan karakter wildcard shell seperti * dan ? dalam nama file untuk mencocokkan beberapa file, misalnya README* . Kapan menampilkan tanggal modifikasi terakhir Jika Saat masuk dipilih, informasi akan dikirim ke klien setelah masuk. Jika Memasukkan direktori apa pun dipilih, file akan dicari dan tanggal modifikasinya dikirim saat mengubah ke direktori mana pun. Saat Memasukkan dir dipilih, tanggal modifikasi hanya akan dikirim ketika direktori yang jalurnya Anda tentukan di kotak teks yang berdekatan dimasukkan. Kelas untuk ditampilkan If this field is left blank, the modification is sent to all clients. However, if one or more classes of client is entered (separated by spaces) it will only be used for clients that fall into those classes.
- To change the amount of information that WU-FTPD sends to clients when they connect, adjust the Greeting level bidang. If Hostname and version is selected, both the system's hostname and the FTP server version will be sent. If just Hostname is chosen only the hostname will be displayed, while if Neither is selected no information will be sent. The latter two options are the most secure, as an attacker may be able to use your FTP server's version to find a bug in it that could be exploited to take over your system.
- If you want to have the server sent a message to clients as soon as they connect, put it in a file and select the From file option for the Pre-login banner file bidang. Then enter the full path to the message file into the text box next to it.
- To change the hostname that WU-FTPD sends in the greeting and other messages, select the second option in the Hostname for messages field and enter some alternative name in the text box. This can be useful if your system's real hostname does not match the name the FTP clients use (server5.example.com instead of ftp.example.com for example).
- When you are done with this form, click the Save button to activate your changes. They will apply to all new FTP clients that connect from now on.
On many operating systems, the WU-FTPD configuration will include one or two message and README file definitions by default. Typically the .message file is searched for in every directory and sent to clients, as is the modification time of any file whose name matches the README* pattern.
Any message files that you define that can contain special codes starting with % that are replaced when the file is sent by dynamically generated text. For example, %U is replaced with the client's FTP login name, so a file containing the line _Welcome %U to the example.com FTP server_ would be sent to the client as something like Welcome jcameron to the example.com FTP server . According to the WU-FTPD manual page, the available codes are:
Not done
Configuring logging
In a typical default configuration, WU-FTPD will log all uploads and downloads to the file /var/log/xferlog. However, you can choose the types of users that logging will be done for (Unix, anonymous or guest), have the log written to syslog instead, and select to record commands are security violations for some types of users. Logging to the system log gives you more flexibility, as you can choose which file messages are written to – although they will be mixed in with other daemon facility messages. See chapter 13 and the System Logs module for more information on how syslog works and which files it ultimately writes to.
Enabling logging of all commands allows you to track exactly what clients are doing, but can consume a large amount of disk space. The logging of security violations (attempts to violate WU-FTPD's file restrictions, covered in the “Denying access to files” section) can be useful for detecting hackers, and is unlikely to use up much space as such violations are not usually very frequent.
To edit FTP logging-related options in Webmin, the steps to follow are:
- On the module's main page, click on the Logging icon to bring up the small logging options form.
- To have all FTP commands executed by clients (including trivial ones such as CWD and LIST) recorded in the system log, select types of users for which they should be logged from the Log all commands for bidang.
- To change the types of users that transfer logging is done for, select them from the Log transfers for bidang. The *In directions* sub-field lets you choose whether uploads (Inbound ), downloads (Outbound ) or Both are recorded. On an anonymous FTP server, it may make sense to only record uploads due to the large number of downloads.
- To have transfers written to syslog, select System log in the Log transfers to bidang. Or to tell WU-FTPD to write to the /var/log/xferlog file instead, select XFER log file . If Both is chosen, transfers will be logged to both destinations. If you want to use a program like Webalizer (covered in chapter 39) to analyze your FTP server's logs, they must be written to xferlog as the lines that end up being written out by syslog have additional information added and thus cannot be parsed. Anything written to the system log will use the daemon facility, unless WU-FTPD has been compiled to use a different one, such as local7. This can in fact be quite useful, as it allows you to separate out the FTP messages and have them written to a different file, while still enjoying all the benefits of syslog.
- To enable the logging of attempted filename security violations, select the types of users that this should be enabled for from the Log security violations for bidang. These will always been written to syslog.
- Klik tombol Simpan button at the bottom of the page to save and activate the new logging settings.
Limiting concurrent logins
If your system is configured to allow anonymous FTP logins and you expect to receive a lot of traffic, it makes sense to limit the number of connections that can be open to the FTP server at any one time. This puts a ceiling on the network and CPU load that FTP transfers can generate, which is important if the system is being used for some other purpose (such as running a web server).
WU-FTPD allows you to define limits on a per-class basis, so that anonymous clients can be restricted while real Unix users are not. It also lets you specify the times during which restrictions apply, so that a higher limit can be granted when the server is not as heavily used for other purposes (such as at night).
To set up concurrent login limits, follow these instructions:
- On the module's main page, click on the Limits and Access Control ikon. The form shown in Figure 41-4 will appear in your browser.
- The Concurrent user limits table is where limits on the number of connections can be entered. Each row defines a limit that applies to a certain class at certain times. As usual with tables in this module, there will be one empty row at the bottom for adding a new limit (and if this is the first one, the table will only contain that one row). Existing limits can be edited by changing their fields in the table, or deleted by selecting the empty option from the class menu. The fields in each row should be filled in as follows:Apply to class' You must select the name of the class that this limit will apply to from the menu. Multiple limits can be defined for the same class at different times. Maximum users To set a limit for the chosen class, select the second radio button and enter the maximum number of concurrent connections into the adjacent text box. If the Unlimited button is selected, no limit will apply to the class at the specified times. For example, you could add a row that turns off restrictions at night above another row that sets them for the entire day. At times If Any time is selected, the limit will apply all the time. However, if you choose the second option and enter a UUCP-style time specification into the text box, only connections made during that period will be restricted. For example, Any0900-1700 means 9am to 5pm every day, Mo,Tu,We means Mondays, Tuesdays and Wednesdays, Wk means weekdays and and Wk1700-0900,Sa,Su means times outside office hours. WU-FTPD always checks the table in order for an entry that matches a connecting client's class and the current time, and stops when it finds one. This means that entries that specify times (such as Any0900-1700 ) should be placed above those that have Any time selected so that the specific entry is actually used when appropriate. Error message file The full path to a file containing a message that will be sent to clients whose connections exceed the limit. This should explain why they are being rejected, and suggest other times or FTP servers to try.
- Tekan tombol Simpan button at the bottom of the page to activate the connection limits. To add more than one, you will need to re-visit the form so that a new blank row appears in the table.
Restricting clients by IP address
Even though it is possible to block clients from certain addresses by ensuring that they do not fall into any class, there is a feature in the module dedicated specifically to blocking clients based on their IP addresses or hostnames. This can be used to lock out specific hosts that are abusing your FTP server, or to restrict access to clients from only your own company or home network.
The steps to define banned client systems are:
- Click on the Limits and Access Control icon on the module's main page to open the form shown in Figure 41-4.
- Each row in the Deny access from table specifies an IP address, hostname or pattern to block logins from. As with other tables in this module, it will always an additional empty row for adding a new restricted address. In the Deny from address field you can also enter the full path to a file containing banned addresses, use negated patterns like !192.168.1.* or even the special address !nameserved which matches all clients that do not have a valid reverse DNS address. Only one can be entered though – to block additional addresses, you will need to add more rows. In the Error message file field you must enter the full path to a file containing a message that will be sent to blocked clients. This should explain to connecting users that they have been blocked, and perhaps give a reason why. If you want to add more than one row, you will need to save this form and re-open it so that a new empty row appears at the bottom of the table. Existing restrictions can be edited by just changing their fields, or deleted by clearing out the address.
- When you are done, hit the Save button at the bottom of the form to activate the new address restrictions.
Restricting access to FTP commands
WU-FTPD can be configured to restrict the FTP commands that certain types and classes of users can use. This is useful for stopping anonymous clients modifying files, as on most FTP servers they are only allowed to download, not upload, rename or delete. In fact, in its usual default configuration this is exactly how WU-FTPD is configured.
There are five commands that you can restrict access to, all related to server-side data modification. They are:
- chmod
- Change the Unix permissions of a file on the server (chmod in the Unix FTP client).
- delete
- Delete a file or directory on the server (del or rmdir in the Unix FTP client).
- rename
- Change the name of a file or directory (rename in the FTP client).
- overwrite
- Upload a file with the same name as one that already exists.
- umask
- Change the default Unix permissions for newly created files (umask in the Unix FTP client).
It is not possible to stop clients using directory listing or download commands. Neither is it possible using this feature to prevent the upload of files that do not already exist – however, this can be achieved by setting directory permissions appropriately, or blocking all uploaded filenames as explained in the “Denying access to files” section.
To define which clients can use which commands, follow these steps:
- Click on the Permissions icon on the module's main page.
- On the form that appears, the Command restrictions table lists existing commands and the user types and client classes that are or are not allowed to use them. As usual, you can add a new command using the blank row at the bottom, edit existing entries or delete the restrictions on a command altogether by selecting the blank option from the Command Tidak bisa. The FTP server processes this table in order when a client tries to do something, and uses the selection in the Allow? column for the first entry that matches to decide if it is allowed or not. This means that the order matters, and thus if two entries match the first one will decide what happens. The fields for each row and their meanings are:Command You must select types. The restriction will only apply to the types of user selected in this column. See the “Managing user classes” section earlier in the chapter for details on what each means. For classes Only the client classes selected in this column will be effected by the restriction.
- When you are done editing or adding to the table, hit the Save button to activate your changes.
If a client command does not match any entry in the table, it will be allowed by the FTP server (unless blocked by some other filename restriction set elsewhere).
Configuring the WU-FTPD Server module
To change the paths that the module uses for the WU-FTPD configuration files and programs, you will need to click on the standard Module Config link in the top-left corner of the main page. Unlike other modules there are no options related to the user interface, so you will probably not need to adjust anything on the configuration form if the module is working for you. By default, all the configuration fields are set to match the WU-FTPFD package included with your operating system or Linux distribution.
Even though there are fields for configuration files other than ftpaccess, at the time of writing the module does not actually edit those files yet.