GNU/Linux >> Belajar Linux >  >> Linux

Apakah menjalankan apt-get upgrade cukup sering untuk menjaga keamanan server Web?

Anda telah menghapus banyak masalah yang biasanya menyulitkan Anda (yaitu, dengan asumsi bahwa aplikasi yang Anda hosting benar-benar aman). Dari perspektif praktis, Anda benar-benar harus mempertimbangkannya.

Tetapi mungkin karena Anda menyadarinya, Anda memiliki beberapa tindakan perlindungan. Kalau begitu mari kita bicarakan sisanya.

Sebagai permulaan, Anda mungkin tidak boleh menjalankan pembaruan "sering sekali". Sebagian besar distro mengoperasikan milis pengumuman keamanan, dan segera setelah kerentanan diumumkan di sana, itu agak publik (yah, sering kali sebelum itu, tetapi dalam situasi Anda, Anda tidak dapat benar-benar memantau semua daftar keamanan di dunia). Ini adalah daftar dengan lalu lintas rendah, jadi Anda harus benar-benar berlangganan ke distro Anda dan memutakhirkan saat Anda mendapatkan pemberitahuan darinya.

Seringkali, server yang dipelihara dengan santai dapat dipaksa atau kamus diserang dalam jangka waktu yang lama, karena pengelola tidak benar-benar mencari tanda-tandanya. Sebaiknya terapkan tindakan balasan yang biasa - tidak ada otentikasi kata sandi ssh, fail2ban pada ssh dan apache - dan idealnya untuk mengatur peringatan pemantauan ketika aktivitas mencurigakan terjadi. Jika itu di luar anggaran pemeliharaan (waktu) Anda, biasakan masuk secara teratur untuk memeriksa hal-hal tersebut secara manual.

Meskipun secara tradisional tidak dianggap sebagai bagian dari keamanan, Anda ingin memastikan bahwa Anda dapat membuka server baru dengan cepat. Ini berarti skrip konfigurasi server (alat seperti Ansible, Chef, dll. Berguna dalam administrasi sistem) dan sistem pencadangan otomatis yang telah Anda uji. Jika server Anda dibobol, Anda harus menganggap server itu disusupi selamanya dan hapus saja, dan itu menyebalkan jika Anda belum mengambil cadangan data secara teratur.


Tidak. Ini tidak cukup untuk membuat Anda tetap aman.

Ini mungkin akan membuat Anda tetap aman untuk beberapa waktu tetapi keamanannya kompleks dan bergerak cepat sehingga pendekatan Anda benar-benar tidak cukup baik untuk keamanan jangka panjang . Jika semua orang membuat asumsi yang sama seperti yang Anda buat dalam pertanyaan Anda, internet akan menjadi salah satu botnet besar sekarang.

Jadi tidak, jangan batasi pertanyaan ini pada paket. Mari kita lihat keamanan server secara holistik sehingga siapa pun yang membaca ini dapat mengetahui berapa banyak bagian bergerak yang sebenarnya ada.

  • APT (misalnya repo Ubuntu) hanya mencakup sebagian dari tumpukan perangkat lunak Anda. Jika Anda menggunakan (mis.) Wordpress atau pustaka PHP populer lainnya dan tidak dikontrol repo, Anda perlu memperbaruinya juga. Kerangka kerja yang lebih besar memiliki mekanisme untuk mengotomatiskan ini, tetapi pastikan Anda mengambil cadangan dan memantau status layanan karena tidak selalu berjalan dengan baik.

  • Anda menulis semuanya sendiri sehingga Anda pikir Anda aman dari script kiddies? Ada injeksi SQL otomatis dan bot eksploit XSS yang berkeliaran, menusuk setiap string kueri dan bentuk yang sama.

    Ini sebenarnya adalah salah satu tempat di mana kerangka kerja yang baik membantu melindungi dari pemrogram yang tidak memadai yang tidak menghargai nuansa serangan ini. Memiliki programmer yang kompeten mengaudit kode juga membantu menghilangkan ketakutan di sini.

  • Apakah PHP (atau Python, atau apa pun yang Anda jalankan) benar-benar harus bisa menulis di mana saja? Perkuat konfigurasi Anda dan Anda akan mengurangi banyak serangan. Idealnya, satu-satunya tempat yang mampu adalah aplikasi web untuk menulis adalah basis data, dan tempat di mana skrip tidak akan pernah dieksekusi (mis. aturan nginx yang hanya mengizinkan menyajikan file statis).

    Default PHP (setidaknya bagaimana orang menggunakannya) memungkinkan PHP untuk membaca dan menulis PHP di mana saja di webroot. Itu memiliki implikasi serius jika situs web Anda dieksploitasi.

  • Dan jadwal pembaruan Anda secara aktif berbahaya. Apa sih yang "sering" itu? Bug keamanan jarak jauh yang kritis memiliki waktu paruh yang singkat tetapi sudah ada penundaan antara 0 hari dan ketersediaan patch, dan beberapa eksploit juga direkayasa terbalik dari patch (untuk mengetahui celah yang lambat).

    Jika Anda hanya menerapkan pembaruan sebulan sekali, kemungkinan besar Anda akan menjalankan perangkat lunak yang dapat dieksploitasi secara liar. TL;DR:Gunakan pembaruan otomatis.

  • Versi distribusi tidak bertahan selamanya. Jika Anda bijaksana dan memilih versi LTS dari Ubuntu, Anda memiliki waktu 5 tahun sejak rilis awal. Dua versi LTS lainnya akan keluar dalam waktu tersebut dan itu memberi Anda opsi.

    Jika Anda mengamuk "BARU LEBIH BAIK" dan menggunakan 16.10 saat menyiapkan server, Anda memiliki waktu 9 bulan . Ya. Kemudian Anda harus meningkatkan melalui 17,04, 17,10 sebelum dapat bersantai di 18,04 LTS.

    Jika versi Ubuntu Anda kedaluwarsa, Anda dapat melakukan dist-upgrade sepanjang hari, meskipun Anda tidak mendapatkan peningkatan keamanan apa pun.

  • Dan tumpukan LAMP itu sendiri bukan satu-satunya vektor serangan ke server web standar.

    • Anda perlu keraskan konfigurasi SSH Anda:hanya gunakan kunci SSH, nonaktifkan kata sandi, shunt port, nonaktifkan login root, pantau upaya kasar dan blokir dengan fail2ban .
    • Firewall matikan semua layanan lain dengan ufw (dan lain-lain).
    • Jangan pernah memaparkan database (kecuali jika Anda membutuhkan ke, lalu kunci IP masuk di firewall).
    • Jangan biarkan skrip PHP acak terpasang atau Anda akan lupakan mereka dan mereka akan diretas.
  • Tidak ada pemantauan dalam deskripsi Anda. Anda buta. Jika sesuatu terjadi di sana, dan mulai mengeluarkan spam, menginfeksi laman web Anda, dll, bagaimana Anda bisa tahu bahwa sesuatu yang buruk telah terjadi? Pemantauan proses. Perbandingan file terjadwal dengan git (pastikan akses hanya baca dari server).

  • Pertimbangkan keamanan (fisik dan jarak jauh) ISP Anda. Apakah "host" sepeser pun (alias bajak laut CPanel) —menghabiskan paket hosting tak terbatas $2/bulan— menginvestasikan sumber daya yang sama dalam keamanan seperti fasilitas server khusus? Bertanyalah dan selidiki riwayat pelanggaran.

  • Lalu ada kamu . Keamanan komputer tempat Anda mengkodekan semua hal ini hampir sama pentingnya dengan server. Jika Anda menggunakan kata sandi yang sama, Anda bertanggung jawab. Amankan kunci SSH Anda dengan kunci fisik FIDO-UF2.

Saya telah melakukan devops selama ~15 tahun dan itu adalah sesuatu yang dapat Anda pelajari di tempat kerja, tetapi hanya perlu satu pelanggaran —satu remaja, satu bot— untuk merusak seluruh server dan menyebabkan pekerjaan selama berminggu-minggu mendisinfeksi produk kerja.

Hanya sadar tentang apa yang berjalan dan apa yang terungkap, membantu Anda membuat keputusan yang lebih baik tentang apa yang Anda lakukan. Saya hanya berharap ini membantu seseorang memulai proses mengaudit server mereka.

Namun jika Anda —pemrogram aplikasi web rata-rata—tidak mau mempelajari hal-hal semacam ini, haruskah Anda menjalankan server? Itu pertanyaan serius. Saya tidak akan memberi tahu Anda bahwa Anda seharusnya tidak melakukannya, tetapi apa yang terjadi pada Anda ketika Anda mengabaikan semua ini, server Anda diretas, klien Anda kehilangan uang dan Anda mengungkapkan informasi pelanggan pribadi (misalnya data penagihan) dan Anda dituntut ? Apakah Anda diasuransikan untuk tingkat kerugian dan paparan kewajiban tersebut?

Tapi ya, inilah mengapa layanan terkelola harganya jauh lebih mahal daripada server bodoh.

Berdasarkan cadangan...

Pencadangan sistem lengkap mungkin adalah hal terburuk yang dapat Anda pertahankan —untuk keamanan — karena Anda akan tergoda untuk menggunakannya jika Anda diretas. Satu-satunya tempat mereka adalah memulihkan diri dari kegagalan perangkat keras.

Masalah dengan menggunakannya dalam peretasan adalah Anda mengatur ulang ke titik waktu yang lebih awal. Namun lebih banyak kekurangan dalam tumpukan Anda terlihat sekarang, bahkan lebih banyak eksploit ada untuk lubang yang membuat Anda. Jika Anda membuat server itu kembali online, Anda dapat langsung diretas. Anda dapat mem-firewall lalu lintas masuk dan melakukan peningkatan paket dan mungkin membantu Anda, tetapi pada titik ini Anda masih tidak tahu apa yang membuat Anda, atau kapan Anda mendapatkannya. Anda mendasarkan semua asumsi Anda dari gejala yang Anda lihat (injeksi iklan di halaman Anda, spam dipentalkan di mailq Anda). Peretasan mungkin terjadi berbulan-bulan sebelumnya.

Mereka jelas lebih baik daripada tidak sama sekali, dan baik-baik saja jika disk mati, tetapi sekali lagi, itu sampah untuk keamanan .

Cadangan yang baik adalah resep

Anda menginginkan sesuatu —hanya dokumen berbahasa sederhana atau sesuatu yang teknis seperti rutinitas Ansible/Puppet/Chef—yang dapat memandu seseorang untuk memulihkan seluruh situs ke server baru. Hal-hal yang perlu dipertimbangkan:

  • Daftar paket untuk dipasang
  • Daftar perubahan konfigurasi yang harus dilakukan
  • Cara memulihkan sumber situs web dari kontrol versi.
  • Cara memulihkan dump database*, dan file statis lainnya yang mungkin tidak Anda kontrol versinya.

Semakin banyak Anda berada di sini, semakin baik karena ini juga berfungsi sebagai cadangan pribadi . Klien saya tahu bahwa jika I mati, mereka telah diuji berencana untuk memulihkan situs mereka ke perangkat keras yang mereka kontrol secara langsung.

Pemulihan skrip yang baik seharusnya tidak lebih dari 5 menit. Jadi, delta waktu antara pemulihan skrip dan pemulihan citra disk pun minimal.


Kemungkinan besar Anda mempertahankan server kebanyakan aman jika Anda sering menjalankan pembaruan (yaitu setidaknya setiap hari, bukan hanya "sering sekali").

Namun, bug kritis terjadi dari waktu ke waktu, seperti Shellshock atau ImageTragick. Juga konfigurasi server yang tidak aman mungkin membuat serangan menjadi mungkin. Artinya, Anda juga harus mengambil tindakan lebih dari sekadar menjalankan pembaruan rutin, seperti:

  • kurangi permukaan serangan dengan menjalankan sistem minimal, yaitu jangan memasang perangkat lunak yang tidak perlu
  • kurangi permukaan serangan dengan membatasi layanan apa pun yang dapat diakses dari luar, yaitu tidak mengizinkan login SSH berbasis kata sandi (hanya berbasis kunci), tidak menjalankan layanan yang tidak diperlukan, dll
  • pastikan Anda memahami dampak pembaruan penting
  • perkirakan sistem akan diserang dan coba kurangi dampaknya, misalnya dengan menjalankan layanan yang dapat diakses dari luar di dalam chroot, jail, atau wadah
  • catat peristiwa penting seperti login yang gagal, pahami log, dan benar-benar analisis log

Namun, vektor serangan awal yang paling sering digunakan mungkin adalah aplikasi web yang tidak aman seperti Wordpress atau CMS lainnya. Namun asumsi Anda adalah bahwa aplikasi web sepenuhnya aman, jadi semoga memang demikian.


Linux
  1. Ssh – Biarkan Proses Tetap Berjalan Setelah Sesi Ssh Terputus?

  2. Entri Crontab Mencurigakan Menjalankan 'xribfa4' Setiap 15 Menit?

  3. Apakah ide yang buruk untuk melakukan peningkatan apt-get dalam wadah OpenVZ?

  1. menjalankan perintah terhadap setiap baris dalam file teks

  2. Seberapa Sering Saya Harus Memperbarui Server Linux kami?

  3. Menjalankan Cron setiap 2 jam

  1. Jadikan Apt-get Update Dan Upgrade Otomatis Dan Tanpa Pengawasan?

  2. Menjalankan Skrip Setiap Kali Kernel Baru Diinstal?

  3. Menjalankan tugas cron di Linux setiap enam jam