Tip Keamanan Pengerasan PHP Teratas untuk Server Linux
- 2207
- 538
- Dwayne Hackett
Itu tidak lebih aneh Php adalah salah satu bahasa pemrograman skrip server yang paling banyak digunakan. Masuk akal bagi penyerang untuk menemukan berbagai cara yang dengannya dia dapat memanipulasi PHP karena sering dipasangkan Mysql dan memungkinkan akses ke data pribadi pengguna Anda.
Dengan cara apa pun, kami tidak mengklaim Php rentan atau memiliki beberapa masalah serius secara default tetapi kami harus memastikan bahwa kami mengubah Php sedemikian rupa sehingga bisa lebih kuat dari sebelumnya.
1. Hapus modul php yang tidak perlu
Secara default, Anda mendapatkan satu set Php modul yang dapat membantu dalam berbagai tugas tetapi beberapa modul yang tidak perlu mungkin tidak berguna untuk setiap proyek. Untuk daftar tersedia Php modul, gunakan perintah yang diberikan:
$ php -mDaftar modul PHP
Modul terletak di /etc/php.D/
direktori dan dapat dengan mudah mengubah direktori kami saat ini /etc/php.D/ dengan menggunakan perintah CD berikut.
CD /etc /php.D/
Alasan mengapa kami mengubah direktori untuk menghapus modul adalah modul dinamai sangat berbeda di direktori asli. Sekarang, daftar modul yang tersedia dengan perintah yang diberikan:
$ lsPeriksa modul PHP
Misalnya, mari kita hapus keriting modul dengan memanfaatkan perintah yang diberikan:
$ sudo rm -r 20 -curl.ini
2. Nonaktifkan Eksekusi Kode PHP Jarak Jauh
Dalam kebanyakan kasus, koneksi jarak jauh tidak dapat dipercaya. Dengan menonaktifkan akses ke fopen pembungkus, mereka hanya dapat mengakses file lokal. Untuk menonaktifkan Fopen, kita perlu membuka file konfigurasi PHP dengan memanfaatkan perintah yang diberikan:
$ sudo nano /etc /php.ini
Sekarang, gunakan Crtl + w
dan ketik allow_url_fopen
yang akan mendaratkan kita di jalur tertentu dari mana kita akan menonaktifkan opsi -opsi itu.
allow_url_fopen = off allow_url_include = offNonaktifkan Eksekusi Kode PHP Jarak Jauh
Setelah Anda selesai dengan perubahan, simpan file konfigurasi Ctrl + o
dan memukul Memasuki.
3. Nonaktifkan Kebocoran Informasi PHP
Saat tidak dinonaktifkan, dunia dapat dengan mudah mengidentifikasi versi mana Php saat ini digunakan oleh server web kami. Ini mungkin tidak terdengar seperti masalah besar tetapi membiarkan penyerang tahu versi yang tepat bisa berbahaya.
$ sudo nano /etc /php.ini
Sekarang, ubah default menjadi "Mati"
.
Expose_php = OFFNonaktifkan Kebocoran Informasi PHP
4. Nonaktifkan log kesalahan PHP
Secara default, setiap kesalahan server web kami terlihat oleh pengunjung kami, termasuk penyerang. Untuk memastikan bahwa tidak ada kesalahan yang terlihat oleh siapa pun, kami harus membuat perubahan dalam file konfigurasi PHP kami.
$ sudo nano /etc /php.ini
Dan ubah pengaturan default menampilkan log kesalahan menjadi "Mati"
.
display_errors = ofNonaktifkan log kesalahan PHP
Tetapi bagaimana jika Anda seorang pengembang dan perlu memiliki log kesalahan untuk mengatasi masalah pembangunan? Jangan khawatir, ada cara untuk mendapatkan file log Anda hanya dengan membuat sedikit perubahan dalam file konfigurasi yang sama.
Kami hanya perlu mengaktifkan log_errors dan memberi jalan untuk catatan eror Dimana file log kami akan disimpan.
log_errors = on error_log =/var/log/httpd/php_scripts_error.catatanAktifkan log kesalahan dalam php
5. Kontrol Sumber Daya PHP
Menurut kami, mengelola sumber daya adalah bagian yang paling penting saat mengamankan Php. Di sini, kita akan mengalokasikan jumlah waktu eksekusi yang tetap, waktu input, dan batas memori jadi jika entah bagaimana skrip kita dikompromikan, eksekusi akan dihentikan setelah waktu tertentu.
Kami telah memilih 25 detik untuk waktu eksekusi dan input dan 30MB batas memori. Yakin Anda dapat menyesuaikannya sesuai kebutuhan Anda.
max_execution_time = 25 max_input_time = 25 memory_limit = 30mKontrol Sumber Daya PHP
6. Batasi akses file php
Untuk membatasi akses file, kami akan mengaktifkan Open_basedir
yang akan memastikan bahwa PHP hanya dapat menyertakan file dari direktori kami yang terdaftar.
Penting: Ini akan memblokir semua direktori lainnya dan mengharuskan kami untuk menambahkan direktori penting secara manual yang juga termasuk menambahkan file sementara dan direktori sesi.
open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/sesi"Kontrol Akses File PHP
7. Konfigurasikan Upload File PHP
Jika aplikasi Anda tidak memerlukan pengunggahan file dari akhir pengguna, selalu disarankan untuk menonaktifkan unggahan file. Ini mencegah penyerang untuk mengunggah skrip berbahaya yang mungkin berakhir merusak seluruh aplikasi pada akhirnya.
file_uploads = off
Tetapi bagaimana jika aplikasi Anda dirancang untuk mendapatkan file dari ujung pengguna? Dalam hal ini, Anda harus mengaktifkan unggahan file tetapi cobalah untuk mengurangi ruang maksimum dan mengurangi jumlah file maksimum yang dapat diunggah dari satu permintaan.
file_uploads = on unggah_max_filesize = 1m max_file_uploads = 1Kontrol unggahan file php
Dalam PHP, secara default, file sementara ditempatkan di direktori yang dapat ditulis oleh semua pengguna sistem. Lokasi default harus dialihkan ke tempat yang lebih aman dan pastikan tidak terletak di dalam root web.
Seperti yang telah kami gunakan Open_basedir, Kami akan menggunakan lokasi yang sama seperti yang telah kami daftar putih daftar putihnya.
unggah_tmp_dir =/var/lib/php/tmp_upload
8. Nonaktifkan fungsi PHP berbahaya
PHP memiliki berbagai fungsi yang diaktifkan secara default dan dapat membantu untuk tujuan pengembangan. Tetapi banyak fungsi dapat digunakan oleh peretas untuk mengeksploitasi server web kami dan menonaktifkannya akan menambah lapisan keamanan.
Kami memiliki serangkaian fungsi yang dinonaktifkan dan pastikan untuk memeriksa silang sebelum membuat perubahan pada file konfigurasi.
disable_functions = exec, passthru, shell_exec, sistem, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_sourceNonaktifkan fungsi PHP yang tidak diinginkan
9. Ubah Direktori Cache Soap
Saat kami mengubah direktori dan sesi temp default, hal yang sama berlaku untuk SABUN MANDI cache karena tidak boleh disimpan ke direktori default. Pastikan itu disimpan ke tempat yang aman.
sabun mandi.wsdl_cache_dir =/var/lib/php/soap_cacheUbah Direktori Cache Soap
10. Kontrol ukuran pos PHP
Dengan mengendalikan POS Ukuran, kami dapat mengamankan server kami dari peretas yang mencoba membekukan sumber daya server dengan mengirim file besar. Ini menyelamatkan kita dari server yang tidak diinginkan crash dan waktu respons yang lambat.
POST_MAX_SIZE = 4MBatasi ukuran pos php
11. Lindungi konfigurasi PHP
Saat menghapus file yang tidak perlu, kami sering menghapus beberapa file penting atau bahkan direktori. Jadi kita harus mengubah pengaturan sedemikian rupa sehingga bahkan pengguna root tidak dapat menghapusnya. Untuk membuat file dan direktori, kami akan memanfaatkan chattr dengan bendera yang berbeda.
Setelah Anda menggunakan perintah yang diberikan, Anda tidak dapat lagi memodifikasi file tertentu atau menghapusnya.
$ sudo chattr +i /etc /php.ini
Saat mencoba menghapus file yang tidak dapat diubah, itu akan menunjukkan kesalahan yang mengatakan “Operasi tidak diizinkan".
$ sudo rm -r /etc /php.iniOperasi tidak diizinkan kesalahan
Tetapi bagaimana jika Anda ingin terus menulis file -file itu sambil membuatnya tidak berubah? Anda dapat dengan mudah mencapainya dengan menggunakan +A
bendera bukannya +Saya
.
$ sudo chattr +a /etc /php.ini
Mungkin ada beberapa kasus di mana Anda tidak lagi memerlukan file konfigurasi lama dan dalam hal ini, kami harus unset atribut.
$ sudo chattr -i /etc /php.ini
Demikian pula, jika Anda pergi +A
Atribut dalam proses membuat file tidak berubah, Anda dapat membalikkannya dengan memanfaatkan perintah yang diberikan:
$ sudo chattr -a /etc /php.ini
12. Gunakan sertifikat SSL untuk https
Saat ini, setiap browser modern seperti Google Chrome, Firefox, Opera, dan lainnya merekomendasikan penggunaan Https untuk server web. Sebagai Https Memberikan saluran mengakses yang diamankan dan dienkripsi untuk situs yang tidak dipercaya, kami dapat memberikan pengalaman yang dapat diandalkan kepada pengguna kami.
Dengan menambahkan Https, kita bisa dilindungi dari XSS Serangan termasuk mencegah peretas untuk membaca data yang diangkut menggunakan kode.
Untuk mengaktifkan HTTPS, kami akan menginstal dan menggunakan gratis Ayo mengenkripsi sertifikat SSL di server.
$ sudo dnf menginstal epel-release $ sudo dnf menginstal certbot python3-certbot-apache mod_ssl $ sudo certbot --apache -d domain.com [untuk Apache] $ sudo certbot ---nginx -d domain.com [untuk Nginx]
13. Perbarui PHP secara teratur
Karena ini adalah bahasa open-source, ia ditambal hampir sehari-hari. Ini mungkin tampaknya bukan langkah penting tetapi dapat menyelamatkan Anda dari kerentanan besar. Jadi pastikan untuk memperbarui paket PHP Anda yang akan menghemat banyak kerentanan yang mungkin terjadi.
# YUM UPDATE & YUM Upgrade [On RHEL Systems] # APT UPDATE && APT Upgrade [On Debian Based Systems]
Ini adalah pendapat kami tentang bagaimana Anda dapat dengan mudah meningkatkan keamanan Php dalam sistem Linux. Sepanjang tutorial ini, kami telah mencoba membuat hal -hal sederhana semampu kami dan jika Anda masih memiliki keraguan, beri tahu kami di komentar.
- « 20 fitur keamanan dan alat yang berguna untuk admin Linux
- Panduan terperinci tentang cara bekerja dengan dokumen di NextCloud »