15 tips keamanan terbaik untuk tumpukan lampu

15 tips keamanan terbaik untuk tumpukan lampu

Banyak administrator sistem baru lupa menerapkan keamanan saat mengkonfigurasi lingkungan hosting web untuk penggunaan produksi dengan Apache, MySQL, dan PHP. Saya mencoba untuk memasukkan semua tips keamanan yang harus kami pertimbangkan saat mempersiapkan sistem baru untuk penggunaan produksi atau pengaturan lampu yang ada.

Semua perubahan konfigurasi yang digunakan dalam artikel ini akan diperbarui dalam file konfigurasi berikut sesuai sistem operasi Anda. Dalam beberapa kasus, jalur file konfigurasi dapat berubah. Jadi buat perubahan file yang tidak pantas. Setelah melakukan perubahan restart layanan terkait untuk perubahan berlaku.

Untuk Ubuntu, Debian & Linuxmint:
  • Apache2: /etc/apache2/apache2.conf
  • PHP: /etc/php/[versi]/apache2/php.ini
  • Mysql: /etc/mysql/my.cnf atau/etc/mysql/mysql.conf.d/mysqld.CNF
Untuk Centos, Redhat & Fedora:
  • Apache: /etc/httpd/conf/httpd.conf
  • PHP: /etc/php.ini
  • Mysql: /etc/my.CNF

#1. Versi Bersembunyi dan Identitas OS (Apache)

Itu Servertokens Kontrol Petunjuk apakah bidang header respons server yang dikirim kembali ke klien. ServerIgnature mengkonfigurasi footer pada dokumen yang dihasilkan server. Edit file konfigurasi Apache dan perbarui arahan berikut sebagai berikut.

  • ServerSignature - Menampilkan versi Apache
     Servertokens Prod 
  • Servertokens - menyediakan versi OS bersama dengan detail server rahasia lainnya.
     Server Signature Off 

#2. Nonaktifkan Daftar Direktori (Apache)

Jika daftar direktori diaktifkan di Apache. Maka semua daftar file dan direktori akan ditampilkan di halaman web jika tidak ada dokumen default. Tambahkan konfigurasi berikut di Apache untuk menonaktifkan server daftar direktori di seluruh.

 Opsi -Indexes   

Setelah itu, Anda dapat mengaktifkan listing per-direktori jika diperlukan.

#3. Membatasi file dan akses Direktori (Apache)

Membatasi akses berdasarkan direktori, ajukan lokasi di Apache.

Batasi Direktori

Untuk membatasi direktori dan file akses dari pengguna, itu hanya akan memungkinkan IP ditentukan dengan izin dari.

 Pesanan disangkal, Izinkan DENY dari semua izin dari 192.168.1.0/24 Izinkan dari .contoh.com  

Batasi file

Kami juga dapat membatasi file tertentu menggunakan arahan file seperti di bawah ini.

 Pesanan disangkal, biarkan menyangkal dari semua  

Batasi lokasi

Petunjuk lokasi membatasi ruang lingkup arahan tertutup oleh URL.

 Pesanan disangkal, Izinkan DENY dari semua izin dari 192.168.1.0/24 Izinkan dari .contoh.com  

#4. Nonaktifkan Sisi Server Termasuk dan CGI (Apache)

Kami dapat menonaktifkan sisi server termasuk dan eksekusi CGI dengan mendefinisikan tag direktori. Tambahkan di bawah ini di file konfigurasi host virtual Apache.

 Opsi -Menjata -Execcgi  

#5. Batasi Kebocoran Informasi PHP (PHP)

Secara default, instalasi PHP mengekspos ke dunia bahwa PHP diinstal pada server, yang mencakup versi PHP dalam header HTTP (misalnya: X-Powered-by: PHP/5.4.20). Baca selengkapnya

Untuk menyembunyikan nilai ini dari header edit php.ini dan perbarui di bawah arahan ke OFF

Expose_php = OFF 

#6. Nonaktifkan Eksekusi Kode Jarak Jauh (PHP)

Jika allow_url_fopen diaktifkan pada pengaturan Anda, ini memungkinkan fungsi seperti file_get_contents () dan pernyataan termasuk dan memerlukan yang dapat mengambil data dari lokasi jarak jauh HTTP atau FTP dan menjalankan kode mereka.

allow_url_fopen = off allow_url_include = off 

#7. Nonaktifkan Fungsi PHP Berbahaya (PHP)

Kami dapat menonaktifkan fungsi PHP menggunakan Petunjuk Disable_Functions dalam file konfigurasi PHP. Nonaktifkan semua fungsi yang bisa berbahaya dan tidak digunakan dalam aplikasi.

disable_functions = exec, shell_exec, passthru, sistem, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, proc_open, pcntl_exec 

#8. Batasi Akses PHP ke Sistem File (PHP)

Arahan open_basedir mengatur direktori dari mana php diizinkan untuk mengakses file

open_basedir = "/home/user/public_html" 

#9. Nonaktifkan Modul PHP yang tidak digunakan (PHP)

PHP mendukung "ekstensi dinamis" untuk memuat di lingkungan PHP. Kami dapat menonaktifkan modul yang tidak digunakan untuk dimuat dalam sistem dengan mengubah nama file konfigurasi.

CD /etc /php.D/ MV OCI8.ini oci8.ini.cacat 

#10. Mengaktifkan Batas dalam PHP (PHP)

Untuk memungkinkan pengguna mengunggah file dengan ukuran maksimum, perbarui nilai konfigurasi berikut.

 unggah_max_filesize = 2m #maximum 2MB pengguna file dapat mengunggah 

Waktu eksekusi maksimum dari setiap skrip

 max_execution_time = 30 # detik 

Jumlah waktu maksimum setiap skrip dapat menghabiskan data permintaan parsing

max_input_time = 60 # detik 

#11. Batasi Akses MySQL Jarak Jauh (MySQL)

Jika lingkungan aplikasi Anda tidak perlu mengakses database dari jarak jauh, maka nonaktifkan semua koneksi jarak jauh untuk server database. Cara yang lebih mudah untuk melakukannya memaksa server MySQL hanya mendengarkan pada 127.0.0.1 (Localhost).

Edit file konfigurasi mySQL dan perbarui nilai berikut.

Bind-address = 127.0.0.1 

#12. Nonaktifkan Penggunaan Infile Lokal (MySQL)

Mengaktifkan infile lokal bisa berbahaya bagi keamanan sistem Anda. Jika infile lokal diaktifkan di server, pengguna dapat memuat file apa pun (seperti /etc /passwd, /etc /shadow) ke tabel dengan mudah.

Untuk menonaktifkan file konfigurasi Edit MySQL ini dan menambahkan nilai berikut di bawah bagian [MySQLD].

[mysqld] infile lokal = 0 

#13. Buat Pengguna Spesifik Aplikasi di MySQL (MySQL)

Jangan gunakan pengguna mySQL 'root' untuk mengakses database melalui aplikasi. Ini bisa berbahaya bagi sistem Anda. Jadi pastikan untuk membuat dan menggunakan pengguna khusus aplikasi dengan akses terbatas ke database aplikasi saja. Untuk membuat akun MySQL Gunakan perintah berikut.

[email dilindungi]: ~# mysql -u root -p mysql> buat pengguna 'myusr'@'localhost' diidentifikasi oleh 'kata sandi'; mysql> hibah pilih, masukkan, perbarui, hapus di mydb.* Ke 'myusr'@'localhost' yang diidentifikasi oleh 'kata sandi'; mysql> hak istimewa flush; 

#14. Tingkatkan keamanan dengan mysql_secure_installation (mysql)

Setelah menginstal perintah mysql mysql_secure_installation sangat berguna untuk mengamankan server mysql. Perintah ini juga akan mengaktifkan perlindungan kata sandi pada pengguna root.

[Email Dilindungi]: ~# mysql_secure_installation "Hanya output yang diperlukan ditunjukkan di bawah ini. Sebenarnya, Anda akan melihat lebih banyak output di layar "Ubah kata sandi root? [Y/n] y Kata sandi baru: ********** Masukkan kembali kata sandi baru: ********** Hapus pengguna anonim? [Y/n] y melarang login root dari jarak jauh? [Y/n] y Hapus database tes dan akses ke sana? [Y/n] y Muat ulang tabel hak istimewa sekarang? [Y/n] y 

#15. Tulis File Konfigurasi Lindungi (Apache/MySQL/PHP)

Di bagian ini kami melindungi semua file konfigurasi server kami yang digunakan dalam tumpukan lampu, sehingga tidak ada yang dapat mengubah file ini.

obrolan +ai /etc /php.INI chattr +ai /etc /php.d/* chattr +ai/etc/my.cnf chattr +ai/etc/httpd/conf/httpd.conf 

Ingatlah bahwa setelah mengaktifkan perlindungan menulis, tidak ada pengguna termasuk root dapat memperbarui file -file ini. Jika Anda perlu memperbarui salah satu file yang menonaktifkan perlindungan tulis terlebih dahulu menggunakan perintah berikut.

chattr -Ai nama file 

Kami akan terus memperbarui tips keamanan lampu yang berguna untuk artikel ini. Kami juga meminta Anda untuk menyarankan tips dengan menambahkannya di komentar.