Minggu lalu saya mendapat telepon dari pelanggan yang ketakutan karena dia pikir situsnya diretas. Ketika saya melihat situs webnya, saya melihat apache2
halaman default. Malam itu server saya ( Ubuntu 16.04 LTS
) telah ditingkatkan dan di-boot ulang. Biasanya ketika terjadi kesalahan saya akan mendapat peringatan di malam hari. Kali ini tidak, karena sistem pemantauan memeriksa kode status HTTP 200, dan apache2
halaman default dilengkapi dengan kode status 200.
Apa yang terjadi adalah bahwa selama startup apache2
lebih cepat untuk mengikat ke port 80 dan 443 daripada server web saya yang sebenarnya nginx. Saya tidak menginstal apache2 sendiri. Melalui aptitude why apache2
saya menemukan paket php7.0 memerlukannya.
Menghapus saja apache2
tidak akan berhasil karena tampaknya php7.0 memerlukannya. Apakah mungkin membuat pembatasan sehingga hanya nginx yang diizinkan untuk mengikat ke port 80 dan 443?
Solusi lain lebih dari diterima juga.
This time not, because the monitoring system checks for HTTP status code 200
. Anda dapat meningkatkan sistem pemantauan dengan membuatnya memeriksa konten aktual halaman web (beberapa string tertentu di badan atau header), ini akan lebih dapat diandalkan.Jawaban:
Anda tidak dapat mencegah port terikat oleh layanan yang salah. Dalam kasus Anda, hapus saja apache dari autostart dan Anda akan menjadi baik.
Untuk 16,04 dan lebih baru:
Untuk versi Ubuntu yang lebih lama:
sumber
systemctl disable apache2
Jika Anda benar-benar tidak menggunakan
apache2
, dan PHP 7.0 yang mengharuskannya, maka sepertinya Anda telahlibapache2-mod-php7.0
menginstalnya. Paket itu tidak berguna tanpa Apache. Karena Anda menggunakan nginx, Anda mungkin juga memilikiphp7.0-fpm
atauphp7.0-cgi
diinstal, baik yang cukup untuk memuaskanphp7.0
's persyaratan ketergantungan:Jika Anda telah
php7.0-{fpm,cgi}
menginstal salah satu , Anda dapat melanjutkan dan menghapus instalasi Apache.sumber
php7.0-fpm
dan bukanphp7.0
paket. Ini juga disarankan oleh Ondřej Surý github.com/oerdnj/deb.sury.org/wiki/…Untuk menjawab pertanyaan Anda, Anda mungkin dapat membatasi port ke aplikasi tertentu dengan menggunakan SElinux. Saya belum menggunakannya sendiri dan hanya memiliki pengetahuan yang dangkal tentang kemampuannya, tetapi di sini adalah sebuah pointer yang saya temukan di situs ini:
/server//a/257056/392230
Dalam jawaban itu, wzzrd tampaknya menunjukkan cara memberi izin aplikasi tertentu (foo) untuk mengikat ke port tertentu (803). Anda hanya perlu memiliki pengaturan kebijakan sehingga hanya aplikasi Anda (nginx) yang diizinkan port yang Anda tentukan (80 dan 443).
Mendasarkan diri pada jawaban wzzrd, mungkin semudah menambahkan ini ke kebijakan
dan menjalankan ini
Meskipun, saya membayangkan Anda juga akan memerlukan garis dalam kebijakan yang menentukan bahwa tidak ada program lain yang dapat mengikat port tersebut.
Pada akhirnya, saya hanya menebak konfigurasi yang tepat.
Lagi pula, saya tidak berpikir sudah ada Ubuntu yang telah menginstal dan mengaktifkan SElinux secara default. Karena saya percaya ini membutuhkan penerapan tambalan tertentu ke berbagai utilitas dan opsi kernel, mungkin lebih mudah untuk menggunakan Centos yang memang telah menginstal dan mengaktifkan SElinux sejak awal.
Maaf, saya tidak bisa membantu lagi. Mungkin lain kali, saya akan mengunduh gambar Centos dan mencoba ini; itu akan menjadi langkah pembelajaran yang baik. Saya akan memperbarui jawaban ini jika saya melakukannya.
sumber
Sesuatu yang belum saya lihat di jawaban, tetapi masih ada kemungkinan:
Ubah konfigurasi Apache untuk mendengarkan port lain, untuk berjaga-jaga. Anda dapat melakukannya dengan membuka file konfigurasi Apache, dan mengubah jalur yang ada
Listen 80
ke port lain.sumber
Saya tidak punya jawaban untuk pertanyaan persis Anda, tetapi mungkin Anda perlu melihat distro Anda. Saya akan mempertimbangkan distro apa pun yang memungkinkan layanan (apache2 di sini) pada instalasi menjadi tidak aman. Pertimbangkan untuk melihat distro yang tidak melakukannya. Saya tidak bisa mengatakan saya pernah melihat perilaku itu di Archlinux, saya yakin ada orang lain.
sumber