Petua Keselamatan Pengerasan PHP Teratas untuk Pelayan Linux
- 4626
- 1166
- Ronnie Hermann
Tidak lebih hebat Php adalah salah satu bahasa pengaturcaraan skrip pelayan yang paling banyak digunakan. Masuk akal bagi penyerang untuk mencari pelbagai cara di mana dia dapat memanipulasi php kerana ia sering dipasangkan Mysql dan membolehkan akses ke data peribadi pengguna anda.
Dengan apa cara, kami tidak menuntut Php terdedah atau mempunyai beberapa masalah serius secara lalai tetapi kita perlu memastikan bahawa kita tweak Php sedemikian rupa sehingga dapat lebih mantap dari sebelumnya.
1. Keluarkan modul PHP yang tidak perlu
Secara lalai, anda mendapat satu set Php modul yang boleh membantu dalam pelbagai tugas tetapi beberapa modul yang tidak perlu mungkin tidak berguna untuk setiap projek. Untuk disenaraikan Php modul, gunakan arahan yang diberikan:
$ php -mSenaraikan modul PHP
Modul terletak di /etc/php.d/
direktori dan dengan mudah boleh mengubah direktori semasa kami ke /etc/php.d/ dengan menggunakan arahan CD berikut.
cd /etc /php.d/
Sebab mengapa kita menukar direktori untuk menghapuskan modul adalah modul dinamakan agak berbeza dalam direktori asal. Sekarang, senarai modul yang tersedia dengan arahan yang diberikan:
$ lsSemak modul PHP
Contohnya, mari kita keluarkan curl modul dengan menggunakan arahan yang diberikan:
$ sudo rm -r 20 -curl.Ini
2. Lumpuhkan Pelaksanaan Kod PHP Jauh
Dalam kebanyakan kes, sambungan jauh tidak boleh dipercayai. Dengan melumpuhkan akses ke fopen pembalut, mereka hanya boleh mengakses fail tempatan. Untuk melumpuhkan Fopen, kita perlu membuka fail konfigurasi PHP dengan menggunakan arahan yang diberikan:
$ sudo nano /etc /php.Ini
Sekarang, gunakan CRTL + W
dan jenis membenarkan_url_fopen
yang akan mendarat kita pada baris tertentu dari mana kita akan melumpuhkan pilihan tersebut.
membenarkan_url_fopen = off allow_url_include = offLumpuhkan Pelaksanaan Kod PHP Jauh
Sebaik sahaja anda selesai dengan perubahan, simpan fail konfigurasi dengan Ctrl + o
dan memukul Masukkan.
3. Lumpuhkan Kebocoran Maklumat PHP
Apabila tidak dilumpuhkan, dunia dapat dengan mudah mengenal pasti versi mana Php kini digunakan oleh pelayan web kami. Ini mungkin tidak terdengar seperti masalah besar tetapi membiarkan penyerang mengetahui versi yang tepat boleh berbahaya.
$ sudo nano /etc /php.Ini
Sekarang, tukar mungkir ke "Mati"
.
Expose_php = OFFLumpuhkan Kebocoran Maklumat PHP
4. Lumpuhkan log ralat PHP
Secara lalai, setiap ralat pelayan web kami dapat dilihat oleh pelawat kami, termasuk penyerang. Untuk memastikan bahawa tiada kesilapan yang dapat dilihat oleh sesiapa sahaja, kita perlu membuat perubahan dalam fail konfigurasi php kami.
$ sudo nano /etc /php.Ini
Dan ubah tetapan lalai memaparkan log ralat ke "Mati"
.
Display_errors = ofLumpuhkan log ralat PHP
Tetapi bagaimana jika anda pemaju dan perlu mempunyai log ralat untuk mengatasi masalah pembangunan? Jangan risau, ada cara untuk mendapatkan fail log anda dengan hanya membuat sedikit perubahan dalam fail konfigurasi yang sama.
Kita hanya perlu membolehkan log_errors dan memberi jalan ke error_log di mana fail log kami akan disimpan.
log_errors = on error_log =/var/log/httpd/php_scripts_error.logDayakan log ralat dalam php
5. Kawalan Sumber PHP
Menurut kami, menguruskan sumber adalah bahagian yang paling penting ketika menjamin Php. Di sini, kami akan memperuntukkan jumlah masa pelaksanaan, masa input, dan had memori yang tetap, jadi jika skrip kami akan dikompromikan, pelaksanaannya akan dihentikan selepas waktu tertentu.
Kami telah memilih 25 detik untuk pelaksanaan dan masa input dan 30MB had ingatan. Pasti anda boleh menyesuaikannya mengikut keperluan anda.
max_execution_time = 25 max_input_time = 25 memori_limit = 30mKawalan Sumber PHP
6. Hadkan akses fail PHP
Untuk menyekat akses fail, kami akan membolehkan Open_basedir
yang akan memastikan bahawa PHP hanya boleh memasukkan fail dari direktori tersenarai kami.
Penting: Ini akan menyenaraikan semua direktori lain dan mengharuskan kami menambah direktori penting secara manual yang juga termasuk menambah fail sementara dan direktori sesi.
open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/sesi"Mengawal akses fail php
7. Konfigurasikan muat naik fail php
Sekiranya aplikasi anda tidak memerlukan memuat naik fail dari hujung pengguna, selalu dinasihatkan untuk melumpuhkan muat naik fail. Ini menghalang penyerang untuk memuat naik skrip berbahaya yang mungkin akan merosakkan keseluruhan aplikasi pada akhirnya.
file_uploads = off
Tetapi bagaimana jika aplikasi anda direka untuk mendapatkan fail dari akhir pengguna? Dalam kes ini, anda perlu mengaktifkan muat naik fail tetapi cuba mengurangkan ruang maksimum dan mengurangkan bilangan fail maksimum yang boleh dimuat naik dari satu permintaan.
file_uploads = pada upload_max_filesize = 1m max_file_uploads = 1Kawal muat naik fail php
Dalam PHP, secara lalai, fail sementara diletakkan dalam direktori yang semua pengguna sistem boleh menulis. Lokasi lalai mesti dihidupkan ke tempat yang lebih selamat dan pastikan ia tidak terletak di dalam akar web.
Seperti yang telah kita gunakan Open_basedir, Kami akan menggunakan lokasi yang sama seperti yang telah kami lalui.
upload_tmp_dir =/var/lib/php/tmp_upload
8. Lumpuhkan fungsi PHP berbahaya
PHP mempunyai pelbagai fungsi yang diaktifkan secara lalai dan boleh membantu untuk tujuan pembangunan. Tetapi banyak fungsi boleh digunakan oleh penggodam untuk mengeksploitasi pelayan web kami dan melumpuhkannya akan menambah lapisan keselamatan.
Kami mempunyai satu set fungsi yang dilumpuhkan dan pastikan untuk menyemak semula mereka sebelum membuat perubahan pada fail konfigurasi.
disable_functions = exec, passthru, shell_exec, sistem, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_sourceLumpuhkan fungsi PHP yang tidak diingini
9. Tukar direktori cache sabun
Semasa kami menukar direktori dan sesi temp lalai, perkara yang sama berlaku pada Sabun cache kerana ia tidak boleh disimpan ke direktori lalai. Pastikan ia diselamatkan ke tempat yang selamat.
sabun.wsdl_cache_dir =/var/lib/php/soap_cacheTukar direktori cache sabun
10. Mengawal saiz pos php
Dengan mengawal Jawatan saiz, kami dapat menjamin pelayan kami dari penggodam yang cuba membekukan sumber pelayan dengan menghantar fail besar. Ini menjimatkan kami dari kemalangan pelayan yang tidak diingini dan masa tindak balas yang perlahan.
post_max_size = 4mHadkan saiz pos php
11. Melindungi konfigurasi PHP
Semasa mengeluarkan fail yang tidak perlu, kami sering mengeluarkan beberapa fail penting atau bahkan direktori. Oleh itu, kita mesti tweak tetapan sedemikian rupa sehingga pengguna akar tidak dapat memadamkannya. Untuk membuat fail dan direktori, kami akan menggunakan chattr dengan bendera yang berbeza.
Sebaik sahaja anda menggunakan arahan yang diberikan, anda tidak lagi boleh mengubah suai fail tertentu atau mengeluarkannya.
$ sudo chattr +i /etc /php.Ini
Semasa cuba mengeluarkan fail yang tidak berubah, ia akan menunjukkan ralat yang mengatakan "operasi tidak dibenarkan".
$ sudo rm -r /etc /php.IniOperasi tidak dibenarkan ralat
Tetapi bagaimana jika anda ingin terus menulis fail tersebut semasa membuatnya tidak berubah? Anda boleh dengan mudah mencapainya dengan menggunakan +a
bendera bukan +i
.
$ sudo chattr +a /etc /php.Ini
Mungkin terdapat beberapa kes di mana anda tidak lagi memerlukan fail konfigurasi lama dan dalam hal ini, kita harus tidak menyentuh atribut.
$ sudo chattr -i /etc /php.Ini
Begitu juga, jika anda pergi +a
Atribut dalam proses membuat fail tidak berubah, anda boleh membalikkannya dengan menggunakan arahan yang diberikan:
$ sudo chattr -a /etc /php.Ini
12. Gunakan sijil SSL untuk HTTPS
Pada masa kini, setiap pelayar moden seperti Google Chrome, Firefox, Opera, dan lain -lain mengesyorkan menggunakan Https untuk pelayan web. Sebagai Https Menyediakan saluran mengakses dan disulitkan untuk laman web yang tidak dipercayai, kami dapat memberikan pengalaman yang boleh dipercayai kepada pengguna kami.
Dengan menambah Https, kita boleh dilindungi XSS serangan termasuk menghalang penggodam membaca data yang diangkut menggunakan kod.
Untuk membolehkan HTTPS, kami akan memasang dan menggunakan secara percuma Mari enkripsi sijil SSL di pelayan.
$ sudo dnf memasang epel-release $ sudo dnf pemasangan certbot python3-certbot-apache mod_ssl $ sudo certbot --apache -d domain.com [untuk Apache] $ sudo certbot --nginx -d domain.com [untuk Nginx]
13. Kemas kini PHP secara teratur
Memandangkan ia adalah bahasa sumber terbuka, ia akan ditambal hampir sehari-hari. Ia mungkin tidak banyak langkah penting tetapi dapat menyelamatkan anda dari kelemahan utama. Oleh itu, pastikan untuk memastikan pakej PHP anda terkini yang akan menjimatkan anda dari banyak kelemahan yang mungkin.
# Yum Update & Yum Upgrade [on rhel-used empedict] # apt update &&pt apt upgrade [on debian berasaskan sistem]
Ini adalah kami mengambil bagaimana anda dapat dengan mudah meningkatkan keselamatan Php Dalam sistem Linux. Sepanjang tutorial ini, kami telah berusaha untuk membuat perkara yang mudah dan jika anda masih mempunyai keraguan, sila beritahu kami dalam komen.
- « 20 Ciri dan Alat Keselamatan Berguna untuk Pentadbir Linux
- Panduan terperinci mengenai cara bekerja dengan dokumen di NextCloud »