Server LAMP aman untuk penggunaan produksi

10

Bagaimana prosedur untuk mengamankan Linux, Apache, MySQL, PHP Server (atau bahkan Perl) untuk penggunaan produksi?

Selain mengatur kata sandi MySQL dan kata sandi root untuk Linux apa langkah lain (mungkin tidak begitu jelas) yang harus diambil?

Juga langkah apa yang bisa saya ambil, jika saya akan menjadi paranoid ekstra, yang biasanya tidak diperlukan?

Ini untuk penggunaan situs tunggal dasar tetapi harus aman.

WalterJ89
sumber
Apache Mengeras di situs saudara perempuan.
Marcin

Jawaban:

13

Rekomendasi ini tidak masuk akal dan tidak dimaksudkan untuk komprehensif.

Lihat Bastille, ini adalah serangkaian skrip yang mengimplementasikan praktik terbaik di Linux.

Jangan mengirim data autentikasi melalui protokol plaintext. Misalnya, nonaktifkan FTP. Jika Anda mengirim data otentikasi melalui Apache, gunakan SSL.

Nonaktifkan dan hapus semua perangkat lunak yang tidak perlu termasuk antarmuka GUI.

Audit semua file dengan bit SUID yang diatur dan dihapus. (Ini akan sangat membatasi kemampuan non-root. Memahami implikasi untuk setiap perubahan individu.)

Audit direktori publik yang dapat ditulis dan hapus bit yang dapat ditulis. (Biarkan / tmp sendirian.)

Hindari menjalankan daemon apa pun sebagai root.

Teliti semua perangkat lunak multi-pengguna yang mendengarkan pada soket secara terperinci untuk praktik terbaik keamanan.

Menghindari menambahkan pengguna ke sistem adalah salah satu pendekatan terbaik. Sistem multi-pengguna membutuhkan perhatian yang lebih besar terhadap detail.

Menegakkan standar kata sandi. Misalnya: minimal 10 karakter, karakter non-alfanumerik, menggunakan huruf dan angka. Ini untuk membuat brute memaksa lebih sulit dalam hal kompromi file kata sandi. Terapkan ini melalui sistem.

Mengunci pengguna setelah 5 upaya otentikasi gagal dengan minimal 10 menit penguncian. Pertahankan riwayat kata sandi sehingga pengguna tidak dapat menggunakan 5 kata sandi yang lalu.

Jika Anda memiliki lingkungan yang lebih besar, menggunakan segregasi jaringan dengan beberapa subnet untuk mengisolasi risiko adalah persyaratan mutlak. Jika lingkungan yang lebih kecil, disarankan untuk menjalankan firewall pada sistem lokal untuk membatasi paparan. Misalnya, hanya mengizinkan SSH ke IP Anda. tcpwrappers dapat digunakan juga untuk lapisan tambahan. (/etc/hosts.allow, /etc/hosts.deny)

Dan, tentu saja, memperbarui semua perangkat lunak. Terutama menghadapi dasmon publik.

Dengan SSH:

  • Nonaktifkan protokol SSH 1
  • Hanya izinkan otentikasi root without-password(hanya keypair)

Dengan Apache:

  • Nonaktifkan semua modul yang tidak diperlukan
  • Nonaktifkan .htaccess dan direktori publik
  • Nonaktifkan FollowSymlink dan opsi yang tidak perlu
  • Jangan menginstal PHP jika Anda tidak membutuhkannya.

Dengan MySQL:

  • Nonaktifkan pengguna default.
  • Jangan gunakan host wildcard.
  • Pastikan untuk mengatur host unik untuk setiap pengguna.
  • Jangan dengarkan di tcp kecuali diperlukan. (Tidak bisa dihindari.)
  • Batasi hak pengguna aplikasi sebanyak mungkin. (SELECT, INSERT, UPDATE, DELETE ideal untuk menulis dan SELECT untuk dibaca)

Saya akan merekomendasikan meneliti penyetelan php.ini untuk keamanan secara khusus. Ini perangkat lunak yang berisiko secara default.

Benteng

Warner
sumber
Saya akan menyarankan untuk membaca cyberciti.biz/tips/php-security-best-practices-tutorial.html untuk
penyetelan
2

Berikut ini adalah artikel bagus yang dapat Anda gunakan sebagai basis untuk pengaturan Anda dan mengubahnya sesuai dengan pembagian Anda: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- server-dengan-centos-5-36786

Alexandre Nizoux
sumber
Tetapi pada dasarnya, jangan memuat modul yang tidak Anda perlukan secara eksplisit, sembunyikan semua nomor versi dan halaman debug / informasi, buat pengguna mysql untuk setiap aplikasi dengan kata sandi yang diperkeras, selalu minta orang-orang bekerja di server Anda menggunakan akun pengguna biasa dan menjadikannya sudo jika mereka membutuhkan izin root, gunakan firewall seperti iptables dan hanya buka port berdasarkan apa yang Anda benar-benar perlu masukkan ke dalam kotak Anda ... Ditambah patch terbaru itu sudah memberi Anda pengaturan yang cukup aman.
Alexandre Nizoux
Artikel ini tidak bagus. Menonaktifkan selinux, apa-apa tentang pengerasan mysql, menonaktifkan modul apache yang tidak perlu ...
sumar