Salah satu prinsip dasar keamanan komputer adalah tidak pernah menjalankan apa pun yang tidak Anda butuhkan.
Saya melakukan pgrep
ping untuk suatu proses hari ini ketika saya perhatikan bahwa mesin Ubuntu 9.04 (desktop) saya menjalankan daemon git server. Setelah bersumpah cepat, saya menemukan bahwa git-daemon-run
paket itu telah (mungkin tidak sengaja) diinstal, dan menghapusnya menghilangkan proses itu (dan memastikan bahwa itu tidak akan dimulai lagi nanti).
Tetapi dalam kasus lain, saya ingin paket server diinstal, tetapi tidak ingin server daemon berjalan. Sebagai contoh, saya gunakan lighttpd
untuk pengujian internal (dimulai dengan skrip pengujian khusus untuk beberapa aplikasi, dan hanya mendengarkan pada localhost dalam konfigurasi tersebut) tetapi saya tidak ingin mendengarkan koneksi luar dengan beberapa file konfigurasi acak. (Jika saya ingin menjalankan satu mendengarkan untuk koneksi luar, saya akan mengkonfigurasi dan menjalankannya sendiri.)
Saya benar-benar tidak suka menjalankan semua jenis server acak yang tidak saya butuhkan pada mesin yang terpajan Internet, karena siapa yang tahu lubang keamanan apa yang mereka buka. Dan saya lebih memilih untuk tidak perlu mempermasalahkan firewall, karena itu merupakan sumber kesalahan dan kesalahan konfigurasi yang dapat membuka celah keamanan. Tidak terlalu sulit untuk memiliki mesin Unix yang dikonfigurasi untuk tidak memulai server apa pun kecuali diminta secara khusus oleh admin; NetBSD (dan OpenBSD, juga, saya pikir) datang dengan cara ini secara default.
Bagaimana cara mengkonfigurasi sistem Ubuntu saya untuk tidak memulai daemon server apa pun kecuali saya secara khusus memberi tahu bahwa saya ingin memulai?
(Meminta untuk menginstal paket tidak, dalam buku saya, meminta untuk memulai server. Jika memang seharusnya, itu adalah antarmuka pengguna yang mengerikan, karena banyak instalasi paket bahkan tidak memiliki server untuk memulai, sehingga membuat terlalu mudah untuk secara tidak sengaja memulai server tanpa menyadari Anda telah melakukannya.)
EDIT: Hanya untuk memperjelas, masalahnya bukan bahwa saya ingin dapat menghentikan server yang ada. Masalahnya adalah saya tidak ingin server baru dimulai tanpa permintaan eksplisit. Ini berarti saya harus dapat melakukan tugas sysadmin, seperti menginstal paket, dan yakin bahwa tidak ada server yang telah dimulai. Sebagian besar tanggapan tidak membahas hal ini.
Jawaban:
Instal sysv-rc-conf dan matikan saja layanan yang tidak ingin Anda jalankan.
sumber
Sebagai seseorang dengan masalah yang sama, saya merasa sangat kuat bahwa tidak masuk akal bagi daemon untuk menganggap bahwa pengguna menginginkannya dimulai per default: Ada banyak kasus penggunaan yang benar-benar valid di mana ini bukan masalahnya. (Belum lagi bahwa tidak selalu jelas instalasi mana yang benar-benar menyertakan daemon.) Daemon dapat dimatikan per default, pengguna dapat secara eksplisit ditanyai, atau mungkin ada pengaturan pusat. Yang lainnya adalah alasan Microsoft yang sepenuhnya tidak layak untuk Linux.
Selain itu, saya menemukan beberapa komentar di atas untuk poster asli menjadi kasar, merendahkan, dan kurang konstruktif. Menyarankan, misalnya, bahwa ia harus menerima perilaku default atau mengubah distribusi benar-benar luar biasa. Pertama, tidak ada distribusi yang cocok, dan melompat ke distribusi baru dengan pekerjaan tambahan yang terkait tidak mungkin menjadi solusi realistis atas hal yang satu ini. Kedua, pengguna Linux / Unix yang mahir digunakan untuk setiap perilaku yang dapat diubah: Masalah mungkin membutuhkan waktu dua jam dari penggalian, tetapi kemudian diperbaiki. Hal alami yang harus dilakukan pengguna seperti itu, ketika standarnya tidak sesuai, adalah mengasumsikan adanya solusi dan mencoba mencari tahu apa itu. Ketiga, dalam etiket sumber terbuka dan perangkat lunak bebas,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., maka lakukan pendakian! '' Tidak.sumber
Harapan dari sistem pengemasan adalah ketika Anda menginstal paket server, Anda ingin menjalankan server itu. Ini harapan yang masuk akal.
Roy telah menjawab pertanyaan ini untuk Anda. Ketika Anda menginstal paket server baru, Anda menghentikan server itu dan kemudian menggunakan alat seperti sysv-rc-conf untuk mencegah server itu dimulai pada reboot berikutnya atau perubahan runlevel. Ya, Anda harus melakukan beberapa pekerjaan sendiri, dan itu masuk akal karena Anda mengonfigurasi sistem Anda secara berbeda untuk kebanyakan orang yang menggunakan Ubuntu.
Anda harus meluangkan waktu untuk mempelajari cara mengkonfigurasi lighttpd sehingga dikonfigurasi secara permanen untuk hanya mendengarkan di localhost. Kemudian, ketika Anda memulai server, Anda tahu itu sudah dikonfigurasi sesuai dengan keinginan Anda.
sumber
Saya menemukan hal berikut bermanfaat untuk menginstal Ubuntu di lingkungan chroot, seperti debootstrapping tamu xen baru. Kredit sebenarnya diberikan ke skrip xen-tools untuk mengajari saya ini:
gema '#! / bin / sh'> /usr/sbin/policy-rc.d
gema 'keluar 101' >> /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
Dengan skrip ini terpasang, apt tidak akan memulai layanan setelah pemasangan. Namun, ini hanya setengah dari masalah Anda, karena symlink masih diberlakukan, layanan akan mulai setelah boot berikutnya. Saya tidak tahu bagaimana menghentikan secara otomatis :(
sumber
invoke-rc.d nginx rotate
di bagian postrotate Saya menggunakan versi yang sedikit berbeda gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Barry Brown, dalam komentar tentang pertanyaan itu, memberikan petunjuk untuk kemungkinan jawaban.
Sistem pengemasan menggunakan
invoke-rc.d
program untuk memulai server setelah paket diinstal. [1] Program ini akan berjalan/usr/sbin/policy-rc.d
untuk menentukan kebijakan memulai server itu.Paket
policyrcd-script-zg2
termasukpolicy-rc.d
skrip, yang berjalan/etc/policy-rc.d
dengan parameternya jika ada, dan keluar dengan kode kesalahan skrip itu, atau keluar dengan 0 (sukses) jika tidak. Antarmukapolicy-rc.d
yang diharapkan untuk ditawarkan didokumentasikan secara singkat dalaminvoke-rc.d
pengelolaan, dan jauh lebih luas di/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.Langkah berikutnya, saya kira, adalah bagi saya untuk menguji ini.
Hal-hal yang tersisa untuk dijawab:
[1] Apa bagian lain dari sistem yang digunakan
invoke-rc.d
? [2] Apakah ini benar-benar berfungsi?sumber
Bagaimana kalau menonton di direktori di mana skrip init berada? Anda mungkin dapat membuat direktori-direktori itu tidak dapat dimodifikasi dengan perintah chatr.
sumber
Idealnya, ini masalah
post-inst
naskah. Pada awal proyek Ubuntu, upaya yang disengaja dibuat untuk memaksa default waras ke skrip konfigurasi dpkg, sehingga Anda dan saya tidak harus menjawab setiap pertanyaan sialan yang mungkin muncul, atau membuang waktu meneliti opsi. Sekarang Ubuntu telah mengatur ini, banyak orang tidak menyadarinya. Seharusnya dimungkinkan untuk mengajukan pertanyaan tentang apakah menginstal sebagai daemon atau tidak, tetapi saya tidak melihat pertanyaan seperti itu dalam beberapa paket yang saya periksa.Mungkin Anda harus terlibat dengan Tim Server Ubuntu dan mungkin bahkan Kebijakan Debian untuk memperbaiki keadaan.
sumber
Anda dapat mencoba membuat skrip yang akan memeriksa daftar layanan yang diinstal dan memverifikasi mereka terhadap beberapa daftar layanan yang diizinkan. Jika layanan tidak ada dalam daftar maka skrip akan mematikannya. Script harus dijalankan pada awal sebelum layanan umum. Dan mungkin berjalan seperti daemon untuk menutup layanan yang baru diinstal. Atau jika memungkinkan untuk berjalan secara otomatis setelah setiap pemasangan untuk memeriksa layanan baru.
PS Saya bisa memikirkan dua kemungkinan penyebab layanan mulai setelah paket diinstal. Itu adalah fitur paket, atau itu adalah fitur manajer paket. Jika itu fitur paket, saya rasa tidak ada cara untuk mengubah perilaku layanan. Jika itu adalah fitur manajer paket, mungkin ada beberapa opsi konfigurasi untuk mencegah layanan dimulai setelah menginstal. Saya tidak tahu sekarang jadi hanya melempar ide.
sumber
Jika Anda mengatur iptables dengan kebijakan default DROP untuk rantai INPUT, maka Anda tidak perlu terlalu khawatir tentang mendengarkan port karena mereka akan diblokir oleh iptables. Server Ubuntu dilengkapi dengan antarmuka yang ramah pengguna untuk iptables jika Anda baru mengenal iptables.
Dari posting Anda, sepertinya saya lebih senang dengan distribusi Linux yang berbeda seperti CentOS. Proses instalasi default untuk CentOS akan memungkinkan Anda untuk menginstal paket meta yang berbeda, dan dengan memilih tidak ada, Anda mungkin lebih bahagia dengan instalasi basis Anda.
Juga, saya pikir pertanyaan Anda mungkin sedikit lebih jelas jika Anda mengganti 'layanan' atau 'daemon' untuk kata 'server' ketika Anda bermaksud sesuatu yang berjalan di server. Orang-orang cenderung menggunakan 'server' untuk merujuk ke kotak fisik atau VM. Meskipun saya kira itu tidak salah secara teknis.
sumber
Lihatlah level run yang Anda
<
gunakan dengan perintah 'runlevel', dan hapus semua symlink di / etc / rc runlevel> .d /. Anda mungkin ingin beberapa daemon berjalan, tetapi sebagian besar mungkin bisa dihapus.Anda dapat menambahkannya kembali dengan symlink dari skrip di /etc/init.d.
Saya pikir ada perintah yang akan melakukan trik yang sama, dan menambahkan semua symlink untuk semua runlevel, tetapi saya hanya melakukannya secara manual.
sumber
Atau, Anda bisa menggunakan
update-rc.d
perintah.Untuk menonaktifkan
apache2
layananEDIT:
Perilaku ini dikendalikan oleh skrip di dalam paket .deb. Ketika Anda menginstal paket, skrip ini dijalankan secara otomatis. IIRC, kita tidak bisa melewati skrip ini.
sumber
Pada dasarnya kamu tidak bisa.
Jika Anda menginstal paket dan memulai layanan maka itulah yang terjadi. Jika Anda tidak suka maka ajukan bug di https://launchpad.net/ .
Anda seharusnya tidak main-main dengan paket deb. Hal semacam ini bisa kembali dan menggigitmu keledai nanti.
Jika Anda ingin gaya OpenBSD 'tidak ada yang berjalan secara default', maka jalankan OpenBSD. Tidak semua distro cocok untuk semua orang. Pasti ada hal-hal di Ubuntu yang tidak Anda sukai. Jika Anda masih ingin menjalankan ubuntu, maka Anda harus memeriksa layanan yang berjalan dan mematikannya.
sumber
Anda dapat mengaktifkan dan menonaktifkan beberapa layanan di menu System> Services di GNOME
sumber