Memulai dengan Server HTTP Apache

Jan Kuparinen Versi F34 onwards Last review: 2020-11-15 Needs Review!
Server HTTP Apache adalah salah satu server web yang paling umum digunakan. Bagian ini bertindak sebagai panduan mulai cepat untuk menerapkan dan mengonfigurasi Apache di Fedora.

Menginstal HTTPD

Prosedur ini menjelaskan langkah-langkah untuk menginstal Apache HTTPD di Fedora.

  1. Instal paket HTTPD.

    sudo dnf install httpd -y
  2. Mulai layanan HTTPD.

    sudo systemctl start httpd.service

Untuk mengaktifkan pengaktifan otomatis layanan HTTPD saat boot, jalankan perintah berikut:

sudo systemctl enable httpd.service

Buka http://localhost untuk mengakses halaman pengujian Apache. Anda mungkin tidak dapat mengakses server dari host lain. Untuk mengakses server dari host lain, lihat Membuka port firewall.

Mengamankan Apache HTTPD

Untuk mengaktifkan dukungan TLS/SSL, unduh dan instal salah satu paket berikut:

Menggunakan mod_ssl

Menginstal mod_ssl

Paket mod_ssl akan secara otomatis diaktifkan setelah instalasi. Lakukan penginstal paket mod_ssl menggunakan perintah berikut:

sudo dnf install mod_ssl -y

Membuat sertifikat baru

Untuk membuat sertifikat baru, lihat Membuat sertifikat menggunakan OpenSSL.

Menginstal sertifikat yang sudah ada

Jika Anda sudah memiliki sertifikat yang dibuat di komputer lain, lakukan hal berikut:

  1. Pindahkan sertifikat dan berkas kunci ke folder yang benar

    sudo mv key_file.key /etc/pki/tls/private/myhost.com.key
    sudo mv certificate.crt /etc/pki/tls/certs/myhost.com.crt
  2. Pastikan bahwa parameter berikut ini sudah benar:

    1. Konteks SELinux

      restorecon /etc/pki/tls/private/myhost.com.key
      restorecon /etc/pki/tls/certs/myhost.com.crt
    2. Kepemilikan

      sudo chown root:root /etc/pki/tls/private/myhost.com.key
      sudo chown root:root /etc/pki/tls/certs/myhost.com.crt
    3. Izin

      sudo chmod 0600 /etc/pki/tls/private/myhost.com.key
      sudo chmod 0600 /etc/pki/tls/certs/myhost.com.crt

Setelah diinstal sertifikat yang ada, siapkan sertifikat menggunakan [MOD_SSL configuration].

konfigurasi mod_ssl

Konfigurasi TLS/SSL default terdapat di dalam berkas /etc/httpd/conf.d/ssl.conf. Di dalam berkas ssl.conf, berikut ini adalah arahan yang menentukan di mana sertifikat dan kunci TLS/SSL berada:

SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

Arahan ini dilampirkan dalam sebuah blok yang mendefinisikan virtual host:

<VirtualHost _default_:443>
...
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
...
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
...
</VirtualHost>

Untuk menentukan lokasi yang berbeda untuk berkas-berkas ini, lakukan hal berikut:

  1. Buat salinan berkas /etc/httpd/conf.d/ssl.conf dan perbarui berkas tersebut menjadi z-ssl-local.conf.

  2. Edit baris berikut pada berkas z-ssl-local.conf:

<VirtualHost _default_:443>
SSLCertificateFile /etc/pki/tls/certs/www.myhost.org.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.myhost.org.key
</VirtualHost>

Berkas ini akan mengganti dua pengaturan untuk host virtual _default_:443; semua pengaturan lain dari ssl.conf akan dipertahankan.

Pengaturan untuk host virtual individual

Untuk menggunakan SSL/TLS untuk host virtual tertentu dengan sertifikat yang berbeda sebagai default, lakukan hal berikut:

  1. Buka berkas konfigurasi host virtual /etc/httpd/conf.d/hostname.conf.

  2. Sisipkan baris ini di antara <VirtualHost hostname:port> dan </VirtualHost>:

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/hostname.crt
    SSLCertificateKeyFile /etc/pki/tls/private/hostname.key

Menginstal aplikasi web

Anda mungkin ingin menjalankan sesuatu di server web Anda. Banyak aplikasi web yang paling populer dipaketkan untuk Fedora. Direkomendasikan untuk menggunakan versi paket aplikasi web. Paket-paket ini akan dikonfigurasi mengikuti praktik terbaik distribusi yang membantu memastikan keamanan instalasi.

Misalnya, dengan menginstal file statis ke lokasi yang tidak dapat ditulis oleh server web, dan melakukan kontrol akses dengan file konfigurasi daripada file .htaccess, yang sedikit lebih rentan terhadap serangan.

Aplikasi web yang dikemas juga akan dikonfigurasi untuk bekerja dengan SELinux, yang memberikan manfaat keamanan yang signifikan.

Anda juga akan menerima pembaruan melalui proses pembaruan Fedora yang biasa, sehingga lebih mudah untuk menjaga agar instalasi Anda tetap mutakhir.

Mereka juga sering kali memiliki konfigurasi default yang diubah sesuai dengan konvensi Fedora, yang berarti Anda harus melakukan lebih sedikit pekerjaan untuk menyiapkan dan menjalankan aplikasi.

Sebagian besar aplikasi web dikemas sesuai dengan namanya. Sebagai contoh, Anda dapat menginstal Wordpress dengan menjalankan perintah berikut:

sudo dnf install wordpress

Aplikasi web yang dipaketkan biasanya akan menyediakan instruksi khusus Fedora dalam berkas dokumentasi. Sebagai contoh, Wordpress menyediakan berkas /usr/share/doc/wordpress/README.fedora dan /usr/share/doc/wordpress/README.fedora-multiuser.

Aplikasi web yang dipaketkan biasanya membatasi akses secara default sehingga Anda hanya dapat mengaksesnya dari host server itu sendiri, untuk memastikan Anda dapat menjalankan semua konfigurasi awal dengan aman dan hal-hal seperti antarmuka administrasi tidak dapat diakses oleh publik. Untuk informasi tentang cara memperluas akses, lihat Mengaktifkan akses ke aplikasi web.

Aplikasi web umumnya membutuhkan penggunaan server basis data. Artikel Dokumen Cepat ini menyediakan informasi tentang cara menginstal dan mengkonfigurasi PostgreSQL dan halaman wiki tentang MariaDB di Fedora.

Mengkonfigurasi Apache HTTPD

/etc/httpd/conf/httpd.conf adalah berkas konfigurasi Apache utama. Berkas konfigurasi khusus ditentukan di bawah /etc/httpd/conf.d/*.conf. Jika pengaturan yang sama ditentukan dalam /etc/httpd/conf/httpd.conf dan berkas .conf dalam /etc/httpd/conf.d/, pengaturan dari berkas /etc/httpd/conf.d/ akan digunakan.

Berkas dalam /etc/httpd/conf.d/ dibaca sesuai urutan abjad: pengaturan dari /etc/httpd/conf.d/z-foo.conf akan digunakan daripada pengaturan dari /etc/httpd/conf.d/foo.conf. Demikian pula, pengaturan dari /etc/httpd/conf.d/99-foo.conf, akan digunakan di atas pengaturan dari /etc/httpd/conf.d/00-foo.conf.

Sebagai praktik terbaik, jangan memodifikasi /etc/httpd/conf/httpd.conf atau berkas /etc/httpd/conf.d yang dikirimkan oleh paket Fedora secara langsung. Jika Anda membuat perubahan lokal pada berkas-berkas ini, maka perubahan apa pun pada versi paket yang lebih baru tidak akan langsung diterapkan. Sebagai gantinya, berkas .rpmnew akan dibuat, dan Anda harus menggabungkan perubahan secara manual.

Direkomendasikan untuk membuat berkas baru di /etc/httpd/conf.d/ yang akan didahulukan dari berkas yang ingin Anda modifikasi, dan mengedit pengaturan yang diperlukan. Sebagai contoh, untuk mengubah pengaturan yang ditentukan dalam /etc/httpd/conf.d/foo.conf, Anda dapat membuat berkas /etc/httpd/conf.d/z-foo-local.conf, dan letakkan pengaturan Anda di berkas tersebut.

Setelah membuat perubahan apa pun pada konfigurasi server Anda, jalankan perintah berikut:

sudo systemctl reload httpd.service

Perubahan tertentu mungkin mengharuskan Apache untuk di-restart sepenuhnya. Untuk memulai ulang Apache secara penuh, jalankan perintah berikut:

sudo systemctl restart httpd.service

Mengaktifkan akses ke aplikasi web

Secara default, aplikasi web yang dipaketkan dengan Fedora biasanya dikonfigurasi sedemikian rupa sehingga akses hanya diperbolehkan dari localhost. Hal ini ditentukan oleh berkas /etc/httpd/conf.d/webapp.conf yang berisi pengaturan berikut:

<Directory /usr/share/webapp>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require local
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        Allow from ::1
    </IfModule>
</Directory>

Sebelum mengizinkan akses umum ke aplikasi web, pastikan untuk melakukan hal berikut:

  • Webapp telah dikonfigurasi dengan benar

  • Antarmuka administrasi dan area sensitif lainnya tidak dapat diakses tanpa autentikasi yang sesuai

  • Konfigurasi basis data aman, jika aplikasi menggunakan basis data

Untuk memperluas akses ke aplikasi, buat berkas /etc/httpd/conf.d/z-webapp-allow.conf. Untuk mengizinkan akses ke semua sistem di jaringan lokal, tambahkan baris berikut ke dalam berkas:

<Directory /usr/share/webapp>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require local
        Require ip 192.168.1
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        Allow from ::1
        Allow from 192.168.1
    </IfModule>
</Directory>

Setelah aplikasi dikonfigurasi dengan benar, tambahkan konfigurasi berikut ini untuk mengizinkan akses dari host mana pun:

<Directory /usr/share/webapp>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order Deny,Allow
        Allow from all
    </IfModule>
</Directory>

Membuka port firewall

Hal ini akan mengekspos komputer Anda ke Internet dan penyerang potensial. Amankan sistem dan instalasi Apache Anda dengan benar sebelum mengekspos server Anda ke Internet.

Apache menggunakan port 80 untuk koneksi http biasa dan port 443 untuk koneksi TLS/SSL secara default. Untuk membuat layanan ini tersedia dari komputer lain atau Internet, izinkan Apache melalui firewall menggunakan salah satu perintah berikut:

Untuk mengizinkan Apache melewati firewall pada setiap boot:

  • Untuk koneksi HTTP biasa:

    sudo firewall-cmd --permanent --add-service=http
  • Untuk koneksi TLS/SSL:

    sudo firewall-cmd --permanent --add-service=https

Untuk mengizinkan Apache melewati firewall secara instan:

  • Untuk koneksi HTTP biasa:

    sudo firewall-cmd --add-service=http
  • Untuk koneksi TLS/SSL:

    sudo firewall-cmd --add-service=https
Jika server Anda berjalan dalam jaringan dengan router NAT, Anda juga perlu mengonfigurasi router Anda untuk meneruskan port HTTP dan HTTPS ke server Anda, jika Anda ingin mengizinkan akses dari luar jaringan lokal Anda.

Menonaktifkan Halaman Tes

Untuk menonaktifkan halaman pengujian, komentari semua baris pada berkas /etc/httpd/conf.d/welcome.conf dengan menggunakan # sebagai berikut:

# <LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /.noindex.html
# </LocationMatch>

# <Directory /usr/share/httpd/noindex>
#    AllowOverride None
#    Require all granted
# </Directory>

# Alias /.noindex.html /usr/share/httpd/noindex/index.html

Sumber daya tambahan