Seri RHCSA: Menginstal, Mengonfigurasi, dan Mengamankan Server Web dan FTP - Bagian 9


Server web (juga dikenal sebagai server HTTP) adalah layanan yang menangani konten (umumnya halaman web, tetapi juga jenis dokumen lainnya) ke klien dalam jaringan.

Server FTP adalah salah satu sumber daya tertua dan paling umum digunakan (bahkan hingga hari ini) untuk membuat file tersedia bagi klien di jaringan jika autentikasi tidak diperlukan karena FTP menggunakan nama pengguna dan kata sandi tanpa enkripsi.

Server web yang tersedia di RHEL 7 adalah versi 2.4 dari Apache HTTP Server. Sedangkan untuk server FTP, kami akan menggunakan Daemon Ftp Sangat Aman (alias vsftpd) untuk membuat koneksi yang diamankan oleh TLS.

Pada artikel ini kami akan menjelaskan cara menginstal, mengkonfigurasi, dan mengamankan server web dan server FTP di RHEL 7.

Menginstal Apache dan Server FTP

Dalam panduan ini kita akan menggunakan server RHEL 7 dengan alamat IP statis 192.168.0.18/24. Untuk menginstal Apache dan VSFTPD, jalankan perintah berikut:


yum update && yum install httpd vsftpd

Ketika instalasi selesai, kedua layanan akan dinonaktifkan pada awalnya, jadi kita perlu memulainya secara manual untuk sementara waktu dan mengaktifkannya untuk memulai secara otomatis dimulai dengan boot berikutnya:


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

Selain itu, kita harus membuka port 80 dan 21, tempat masing-masing daemon web dan ftp mendengarkan, untuk memungkinkan akses ke layanan tersebut dari luar:


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Untuk memastikan bahwa server web berfungsi dengan baik, jalankan browser Anda dan masukkan IP server. Anda akan melihat halaman pengujian:

Sedangkan untuk server ftp, kami harus mengkonfigurasinya lebih lanjut, yang akan kami lakukan sebentar lagi, sebelum mengonfirmasi bahwa server berfungsi seperti yang diharapkan.

Mengonfigurasi dan Mengamankan Server Web Apache

File konfigurasi utama untuk Apache terletak di /etc/httpd/conf/httpd.conf, namun mungkin bergantung pada file lain yang ada di dalam /etc/httpd /conf.d.

Meskipun konfigurasi default sudah cukup untuk sebagian besar kasus, ada baiknya Anda memahami semua opsi yang tersedia seperti yang dijelaskan dalam dokumentasi resmi.

Seperti biasa, buat salinan cadangan file konfigurasi utama sebelum mengeditnya:


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Kemudian buka dengan editor teks pilihan Anda dan cari variabel berikut:

  1. ServerRoot: direktori tempat penyimpanan konfigurasi server, kesalahan, dan file log.
  2. Dengarkan: memerintahkan Apache untuk mendengarkan alamat IP dan/atau port tertentu.
  3. Sertakan: memungkinkan penyertaan file konfigurasi lain, yang harus ada. Jika tidak, server akan gagal, berbeda dengan arahan IncludeOptional, yang diabaikan secara diam-diam jika file konfigurasi yang ditentukan tidak ada.
  4. Pengguna dan Grup: nama pengguna/grup yang akan menjalankan layanan httpd.
  5. DocumentRoot: Direktori tempat Apache akan menyajikan dokumen Anda. Secara default, semua permintaan diambil dari direktori ini, namun tautan simbolik dan alias dapat digunakan untuk menunjuk ke lokasi lain.
  6. NamaServer: perintah ini menetapkan nama host (atau alamat IP) dan port yang digunakan server untuk mengidentifikasi dirinya.

Tindakan keamanan pertama akan terdiri dari pembuatan pengguna dan grup khusus (yaitu tecmint/tecmint) untuk menjalankan server web dan mengubah port default ke yang lebih tinggi (< kuat>9000 dalam hal ini):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Anda dapat menguji file konfigurasi dengan.


apachectl configtest

dan jika semuanya OK, restart server web.


systemctl restart httpd

dan jangan lupa untuk mengaktifkan port baru (dan menonaktifkan yang lama) di firewall:


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

Perhatikan bahwa, karena kebijakan SELinux, Anda hanya dapat menggunakan port yang dihasilkan


semanage port -l | grep -w '^http_port_t'

untuk server web.

Jika Anda ingin menggunakan port lain (yaitu port TCP 8100), Anda harus menambahkannya ke konteks port SELinux untuk layanan httpd:


semanage port -a -t http_port_t -p tcp 8100

Untuk lebih mengamankan instalasi Apache Anda, ikuti langkah-langkah berikut:

1. Pengguna yang menjalankan Apache seharusnya tidak memiliki akses ke shell:


usermod -s /sbin/nologin tecmint

2. Nonaktifkan daftar direktori untuk mencegah browser menampilkan konten direktori jika tidak ada index.html di direktori tersebut.

Edit /etc/httpd/conf/httpd.conf (dan file konfigurasi untuk host virtual, jika ada) dan pastikan bahwa direktif Options, di bagian atas dan di tingkat blok Direktori, disetel ke Tidak Ada:


Options None

3. Sembunyikan informasi tentang server web dan sistem operasi dalam respons HTTP. Edit /etc/httpd/conf/httpd.conf sebagai berikut:


ServerTokens Prod 
ServerSignature Off

Sekarang Anda siap untuk mulai menyajikan konten dari direktori /var/www/html Anda.

Mengonfigurasi dan Mengamankan Server FTP

Seperti dalam kasus Apache, file konfigurasi utama untuk Vsftpd (/etc/vsftpd/vsftpd.conf) diberi komentar dengan baik dan meskipun konfigurasi default sudah cukup untuk sebagian besar aplikasi , Anda harus memahami dokumentasi dan halaman manual (man vsftpd.conf) untuk mengoperasikan server ftp dengan lebih efisien (saya tidak bisa cukup menekankannya!).

Dalam kasus kami, ini adalah arahan yang digunakan:


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Dengan menggunakan chroot_local_user=YES, pengguna lokal (secara default) akan ditempatkan di jail yang di-chroot di direktori home mereka segera setelah login. Ini berarti bahwa pengguna lokal tidak akan dapat mengakses file apa pun di luar direktori home terkait.

Terakhir, untuk mengizinkan ftp membaca file di direktori home pengguna, setel boolean SELinux berikut:


setsebool -P ftp_home_dir on

Anda sekarang dapat terhubung ke server ftp menggunakan klien seperti Filezilla:

Perhatikan bahwa log /var/log/xferlog mencatat pengunduhan dan pengunggahan, yang sesuai dengan daftar direktori di atas:

Baca Juga: Batasi Bandwidth Jaringan FTP yang Digunakan oleh Aplikasi di Sistem Linux dengan Trickle

Ringkasan

Dalam tutorial ini kami telah menjelaskan cara mengatur web dan server ftp. Karena luasnya subjek, tidak mungkin mencakup semua aspek dari topik ini (yaitu host web virtual). Oleh karena itu, saya menyarankan Anda juga memeriksa artikel bagus lainnya di situs web ini tentang Apache.