Petua Keselamatan Pengerasan PHP Teratas untuk Pelayan Linux

Petua Keselamatan Pengerasan PHP Teratas untuk Pelayan Linux

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 -m 
Senaraikan 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:

$ ls 
Semak 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 = off 
Lumpuhkan 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 = OFF 
Lumpuhkan 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 = of 
Lumpuhkan 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.log 
Dayakan 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 = 30m 
Kawalan 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 = 1 
Kawal 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_source 
Lumpuhkan 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_cache 
Tukar 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 = 4m 
Hadkan 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.Ini 
Operasi 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.