13 Apache Web Security and Hardening Tips

13 Apache Web Security and Hardening Tips

Kita semua sangat akrab dengan Apache Pelayan web, ia adalah pelayan web yang sangat popular untuk menjadi tuan rumah fail web anda atau laman web anda di web. Berikut adalah beberapa pautan yang dapat membantu anda mengkonfigurasi pelayan web Apache di kotak Linux anda.

Petua Keselamatan dan Pengerasan Apache
  1. Pasang pelayan web Apache
  2. Sediakan laman web anda di kotak Linux anda

Di sini dalam tutorial ini, saya akan menampung beberapa petua utama untuk menjamin pelayan web anda. Sebelum anda menggunakan perubahan ini di pelayan web anda, anda harus mempunyai beberapa asas pelayan Apache.

  1. Direktori Root Dokumen: /var/www/html atau /var/www
  2. Fail Konfigurasi Utama: /etc/httpd/conf/httpd.Conf (Rhel/centos/fedora) dan /etc/apache2/apache2.Conf (Debian/Ubuntu).
  3. Port HTTP lalai: 80 TCP
  4. Port https lalai: 443 TCP
  5. Uji tetapan fail konfigurasi anda dan sintaks: httpd -t
  6. Akses fail log pelayan web: /var/log/httpd/access_log
  7. Fail log ralat pelayan web: /var/log/httpd/error_log

1. Cara menyembunyikan versi Apache dan identiti OS dari kesilapan

Semasa anda memasang Apache dengan sumber atau pemasang pakej lain seperti yum, ia memaparkan versi Apache anda Pelayan web dipasang di pelayan anda dengan Nama sistem operasi pelayan anda di Kesalahan. Ia juga menunjukkan maklumat mengenai Modul Apache dipasang di pelayan anda.

Tunjukkan versi Apache

Dalam gambar di atas, anda dapat melihatnya Apache menunjukkannya versi dengan OS dipasang di pelayan anda. Ini juga boleh menjadi ancaman keselamatan utama kepada pelayan web anda serta kotak linux anda juga. Untuk mengelakkan Apache Untuk tidak memaparkan maklumat ini ke dunia, kita perlu membuat beberapa perubahan dalam fail konfigurasi utama Apache.

Buka fail konfigurasi dengan editor vim dan cari "Serversignature", Secara lalai. Kita perlu Mati tandatangan pelayan ini dan baris kedua "Servertokens prod"Memberitahu Apache untuk mengembalikan hanya Apache sebagai produk dalam tajuk Respons Server pada setiap permintaan halaman, ia menindas OS, maklumat versi utama dan kecil.

# vim/etc/httpd/conf/httpd.CONF (RHEL/CENTOS/FEDORA) # VIM/ETC/APACHE2/APACHE2.conf (debian/ubuntu)
Serversignature Off Servertokens Prod
# Perkhidmatan httpd restart (rhel/centos/fedora) # perkhidmatan apache2 restart (debian/ubuntu)
Sembunyikan versi Apache

2. Lumpuhkan Penyenaraian Direktori

Secara lalai senarai Apache semua kandungan direktori akar dokumen tanpa adanya fail indeks. Sila lihat gambar di bawah.

Penyenaraian direktori Apache

Kita boleh matikan Penyenaraian direktori dengan menggunakan Arahan Pilihan dalam fail konfigurasi untuk direktori tertentu. Untuk itu kita perlu membuat kemasukan httpd.Conf atau apache2.Conf fail.

 Pilihan -indeks 
Sembunyikan Penyenaraian Direktori Apache

3. Terus mengemas kini Apache dengan kerap

Komuniti pemaju Apache terus berjalan isu keselamatan dan melepaskannya versi terkini dengan yang baru Pilihan keselamatan. Oleh itu, selalu disyorkan untuk menggunakan versi terkini dari Apache Sebagai pelayan web anda.

Untuk memeriksa Versi Apache: Anda boleh menyemak versi semasa anda dengan httpd -v perintah.

# httpd -v Versi pelayan: Apache/2.2.Pelayan 15 (Unix) Dibina: 13 Ogos 2013 17:29:28

Anda boleh mengemas kini versi anda dengan arahan berikut.

# yum update httpd # apt-get install Apache2

Ia juga disyorkan untuk menjaga anda Kernel dan OS Dikemas kini dengan siaran stabil terkini jika anda tidak menjalankan aplikasi tertentu yang hanya berfungsi pada OS atau kernel tertentu.

4. Lumpuhkan modul yang tidak perlu

Selalu baik untuk kecil peluang menjadi mangsa Serangan Web. Oleh itu, disarankan untuk melumpuhkan semua itu modul yang tidak digunakan sekarang. Anda boleh menyenaraikan semua modul penyusun pelayan web, menggunakan arahan berikut.

# grep loadmodule/etc/httpd/conf/httpd.conf # harus meletakkan garis 'loadmodule' yang sepadan di lokasi ini supaya # loadmodule foo_module modul/mod_foo.jadi loadmodule auth_basic_module modul/mod_auth_basic.jadi loadmodule auth_digest_module modul/mod_auth_digest.jadi loadmodule authn_file_module modul/mod_authn_file.jadi loadmodule authn_alias_module modul/mod_authn_alias.jadi loadmodule authn_anon_module modul/mod_authn_anon.jadi loadmodule authn_dbm_module modul/mod_authn_dbm.jadi loadmodule authn_default_module modul/mod_authn_default.jadi loadmodule authz_host_module modul/mod_authz_host.jadi loadmodule authz_user_module modul/mod_authz_user.jadi loadmodule authz_owner_module modul/mod_authz_owner.jadi loadmodule authz_groupfile_module modul/mod_authz_groupfile.jadi loadmodule authz_dbm_module modul/mod_authz_dbm.jadi loadmodule authz_default_module modul/mod_authz_default.jadi loadmodule modul ldap_module/mod_ldap.jadi loadmodule authnz_ldap_module modul/mod_authnz_ldap.jadi loadmodule termasuk_module modul/mod_include.jadi loadmodule log_config_module modul/mod_log_config.jadi loadmodule logio_module modul/mod_logio.jadi loadmodule env_module modul/mod_env.jadi loadmodule ext_filter_module modul/mod_ext_filter.Jadi… 

Di atas adalah senarai modul yang didayakan secara lalai tetapi sering tidak diperlukan: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Untuk melumpuhkan modul tertentu, anda boleh memasukkan "#"Pada permulaan garis itu dan mulakan semula perkhidmatan.

5. Jalankan Apache sebagai pengguna dan kumpulan yang berasingan

Dengan pemasangan lalai Apache menjalankan prosesnya dengan pengguna tiada siapa atau Daemon. Atas alasan keselamatan, disarankan untuk dijalankan Apache Sendiri tidak istimewa akaun. Sebagai contoh: HTTP-WEB.

Buat pengguna dan kumpulan Apache
# GroupAdd http -web # useradd -d/var/www/-g http -web -s/bin/nologin http -web

Sekarang anda perlu memberitahu Apache Untuk berjalan dengan pengguna baru ini dan berbuat demikian, kita perlu membuat kemasukan /etc/httpd/conf/httpd.Conf dan mulakan semula perkhidmatan.

Buka /etc/httpd/conf/httpd.Conf Dengan editor Vim dan cari kata kunci "Pengguna"Dan"Kumpulan"Dan di sana anda perlu menentukan nama pengguna dan nama kumpulan untuk menggunakan.

Pengguna HTTP-WEB GROUP HTTP-WEB

6. Gunakan membenarkan dan menafikan untuk menyekat akses ke direktori

Kita boleh menyekat akses kepada direktori dengan "Benarkan"Dan"Menafikan"Pilihan dalam httpd.Conf fail. Di sini dalam contoh ini, kami akan mendapat direktori akar, untuk itu dengan menetapkan perkara berikut di httpd.Conf fail.

 Pilihan Tiada pesanan menafikan, biarkan menafikan dari semua 
  1. Pilihan "Tiada" - Pilihan ini tidak akan membenarkan pengguna mengaktifkan ciri pilihan.
  2. Menafikan pesanan, membenarkan - Inilah urutan di mana "Menafikan"Dan"Benarkan"Arahan akan diproses. Di sini ia akan "menafikan"Pertama dan"Benarkan"Seterusnya.
  3. Menafikan dari semua - Ini akan menafikan permintaan dari semua orang ke direktori akar, Tidak ada yang dapat mengakses direktori root.

7. Gunakan mod_security dan mod_vasive modul untuk menjamin Apache

Dua modul ini "mod_security"Dan"mod_evasif"Adalah modul Apache yang sangat popular dari segi keselamatan.

Mod_security

Di mana mod_security berfungsi sebagai a Firewall untuk aplikasi web kami dan membolehkan kami Pantau lalu lintas Pada masa nyata. Ia juga membantu kami melindungi laman web atau pelayan web kami dari serangan kekerasan. Anda hanya boleh memasang mod_security di pelayan anda dengan bantuan pemasang pakej lalai anda.

Pasang mod_security di ubuntu/debian
$ sudo apt-get pemasangan libapache2-modsecurity $ sudo a2enmod mod-security $ sudo /etc /init.D/Apache2-Reload
Pasang mod_security pada rhel/centos/fedora/
# yum memasang mod_security # /etc /init.D/httpd mulakan semula
Mod_evasif

mod_evasif berfungsi dengan sangat cekap, memerlukan satu permintaan untuk memproses dan memprosesnya dengan baik. Ia menghalang Serangan DDOS daripada melakukan kerosakan sebanyak. Ciri ini mod_evasif membolehkannya mengendalikan HTTP Brute Force dan Dos atau DDOS serang. Modul ini mengesan serangan dengan tiga kaedah.

  1. Sekiranya banyak permintaan datang ke halaman yang sama dalam beberapa kali sesaat.
  2. Sekiranya ada proses kanak -kanak yang berusaha membuat lebih daripada 50 permintaan serentak.
  3. Jika ada Ip masih berusaha membuat permintaan baru apabila sementara itu disenarai hitam.

mod_evasif boleh dipasang terus dari sumber. Di sini, kami mempunyai panduan pemasangan dan persediaan modul -modul ini yang akan membantu anda menubuhkan modul Apache ini di dalam kotak Linux anda.

  1. Lindungi Apache Menggunakan Mod_Security dan Mod_evasive

8. Lumpuhkan pautan simbolik berikut Apache

Secara lalai Apache ikut Symlinks, kita boleh matikan ciri ini dengan Followsymlinks dengan Arahan Pilihan. Dan untuk berbuat demikian, kita perlu membuat entri berikut dalam fail konfigurasi utama.

Pilihan -Followsymlinks

Dan, jika ada yang tertentu pengguna atau laman web keperluan Followsymlinks membolehkan, kita hanya boleh menulis peraturan dalam ".Htaccess"Fail dari laman web itu.

# Dayakan pilihan pautan simbolik +berikut

Catatan: Untuk membolehkan menulis semula peraturan di dalam ".Htaccess"Fail"Allowoverride semua"Harus hadir dalam konfigurasi utama di seluruh dunia.

9. Matikan bahagian pelayan termasuk dan pelaksanaan CGI

Kita boleh matikan Sisi pelayan termasuk (mod_include) dan CGI Pelaksanaan jika tidak diperlukan dan berbuat demikian, kita perlu mengubah suai fail konfigurasi utama.

Pilihan -Termasuk Pilihan -Execcgi

Kita boleh melakukan ini untuk direktori tertentu juga dengan tag direktori. Di sini dalam contoh ini, kita mematikan Termasuk dan CGI File Executions untuk "/var/www/html/web1"Direktori.

 Pilihan -termasuk -execcgi 

Berikut adalah beberapa nilai lain yang boleh terangsang atau mati Dengan Arahan Pilihan.

  1. Pilihan semua - Untuk membolehkan semua pilihan sekaligus. Ini adalah nilai lalai, jika anda tidak mahu menentukan sebarang nilai secara eksplisit dalam fail conf Apache atau .Htaccess.
  2. Pilihan termasukNoExec - Opsyen ini membolehkan sisi pelayan termasuk tanpa melaksanakan kebenaran ke fail arahan atau CGI.
  3. Pilihan Multiviews - Membolehkan kandungan multiview yang dirundingkan dengan modul mod_negotiation.
  4. Pilihan SymlinksifownerMatch - Ia serupa dengan berikut. Tetapi, ini akan diikuti hanya apabila pemilik adalah sama antara pautan dan direktori asal yang mana ia dihubungkan.

10. Hadkan saiz permintaan

Secara lalai Apache tidak mempunyai had ke atas jumlah saiz permintaan HTTP i.e. tidak terhad dan apabila anda membenarkan permintaan besar di pelayan web mungkin anda boleh menjadi mangsa Penafian serangan perkhidmatan. Kita boleh mengehadkan saiz permintaan arahan apache "LimitRequestBody"Dengan tag direktori.

Anda boleh menetapkan nilai dalam bait dari 0 (tidak terhad) hingga 2147483647 (2GB) yang dibenarkan dalam badan permintaan. Anda boleh menetapkan had ini mengikut keperluan laman web anda, katakan anda mempunyai tapak di mana anda membenarkan muat naik dan anda ingin mengehadkan saiz muat naik untuk direktori tertentu.

Di sini dalam contoh ini, user_uploads adalah direktori yang mengandungi fail yang dimuat naik oleh pengguna. Kami meletakkan had 500k untuk ini.

 LimitRequestBody 512000 

11. Lindungi serangan DDOS dan pengerasan

Nah, memang benar bahawa anda tidak dapat melindungi laman web anda sepenuhnya Serangan DDOS. Berikut adalah beberapa arahan yang dapat membantu anda mengawalnya.

  1. Masa tamat : Arahan ini membolehkan anda menetapkan jumlah masa pelayan akan menunggu acara tertentu selesai sebelum gagal. Nilai lalai adalah 300 saat. Adalah baik untuk mengekalkan nilai ini rendah di laman web yang tertakluk Serangan DDOS. Nilai ini bergantung sepenuhnya pada jenis permintaan yang anda dapatkan di laman web anda. Catatan: Ia boleh menimbulkan masalah dengan datang CGI Skrip.
  2. MaxClients : Arahan ini membolehkan anda menetapkan had pada sambungan yang akan disampaikan secara serentak. Setiap sambungan baru akan dihadapi selepas had ini. Ia boleh didapati dengan Prefork dan Pekerja kedua -duanya Mpm. Nilai lalai itu adalah 256.
  3. KeepAliveTimeout : Jumlah masa pelayan akan menunggu permintaan berikutnya sebelum menutup sambungan. Nilai lalai adalah 5 saat.
  4. Hadrequestfields : Ini membantu kami menetapkan had pada bilangan medan pengepala permintaan HTTP yang akan diterima dari pelanggan. Nilai lalai adalah 100. Disyorkan untuk menurunkan nilai ini jika Serangan DDOS berlaku akibat daripada banyak tajuk permintaan HTTP.
  5. LimitRequestFieldSize : Ini membantu kami menetapkan had saiz pada header permintaan HTTP.

12. Dayakan Apache Logging

Apache membolehkan anda melayari secara bebas dari anda Pembalakan OS. Adalah bijak untuk membolehkan pembalakan Apache, kerana ia memberikan lebih banyak maklumat, seperti arahan yang dimasukkan oleh pengguna yang berinteraksi dengan pelayan web anda.

Untuk berbuat demikian, anda perlu memasukkan mod_log_config modul. Terdapat tiga arahan berkaitan pembalakan utama yang terdapat dengan Apache.

  1. TransferLog: Membuat fail log.
  2. LogFormat : Menentukan format tersuai.
  3. CustomLog : Membuat dan memformat fail log.

Anda juga boleh menggunakannya untuk laman web tertentu yang anda lakukan Hosting maya Dan untuk itu anda perlu menentukannya di bahagian tuan rumah maya. Contohnya, inilah konfigurasi hos maya laman web saya dengan pembalakan diaktifkan.

 Documentroot/var/www/html/contoh.com/ ServerName www.Contoh.COM DirectoryIndex Index.Indeks HTM.Indeks HTML.Contoh serveralias PHP.com errordocument 404 /cerita.PHP ERRORLOG /var/log/httpd/contoh.com_error_log CustomLog /var/log/httpd/contoh.gabungan com_access_log 

13. Mengamankan Apache dengan Sijil SSL

Terakhir, tetapi tidak sekurang -kurangnya Sijil SSL, Anda boleh menjamin semua komunikasi anda dengan cara yang disulitkan melalui internet dengan sijil SSL. Katakan anda mempunyai laman web di mana orang log masuk dengan membuktikan kelayakan log masuk mereka atau anda mempunyai laman web e-commerce di mana orang menyediakan mereka Butiran bank atau Debit/Kredit Butiran kad untuk membeli produk, secara lalai pelayan web anda hantar butiran ini dalam format teks biasa tetapi semasa anda menggunakan Sijil SSL ke laman web anda, Apache Menghantar semua maklumat ini dalam teks yang disulitkan.

Awak boleh membeli sijil SSL dari begitu banyak penyedia SSL yang berbeza Namecheap.com. Sekiranya anda menjalankan perniagaan web yang sangat kecil dan tidak bersedia Beli sijil SSL anda masih boleh menetapkan a Sijil yang ditandatangani sendiri ke laman web anda. Apache menggunakan mod_ssl modul untuk menyokong Sijil SSL.

# OpenSSL GenRSA -DES3 -OUT Contoh.com.Kunci 1024 # OpenSSL Req -New -key Contoh.com.Key -out exmeple.CSR # OpenSSL X509 -REQ -Days 365 -dalam Contoh.com.com.CSR -SignKey Contoh.com.com.Contoh utama.com.com.Crt

Setelah sijil anda telah dibuat dan ditandatangani. Sekarang anda perlu menambah ini dalam konfigurasi Apache. Buka fail konfigurasi utama dengan editor VIM dan tambahkan baris berikut dan mulakan semula perkhidmatan.

 Sslengine on sslcertificatefile/etc/pki/tls/certs/contoh.com.CRT SSLCertificateSeyFile/etc/pki/tls/certs/contoh.com.Kunci SSLCertificateChainfile/etc/pki/tls/certs/sf_bundle.CRT ServerAdmin [dilindungi e -mel] Contoh ServerName.com dokumen/var/www/html/contoh/errorlog/var/log/httpd/contoh.com-error_log customlog/var/log/httpd/contoh.com-access_log biasa 

Buka penyemak imbas anda, taipkan https: // contoh.com, dan anda akan dapat melihat yang baru Sijil ditandatangani sendiri.

Ini adalah sedikit petua keselamatan yang boleh anda gunakan selamatkan pelayan web Apache anda pemasangan. Untuk petua dan idea keselamatan yang lebih berguna, lihat dokumentasi dalam talian rasmi Apache HTTP Server.