Bagaimana Anda bisa tahu apa yang sebenarnya dilakukan server? [Tutup]

42

Saya telah menyerahkan 3 kotak Linux, 1 depan menghadap dengan apache di atasnya dan 2 lainnya yang, sejauh yang saya tahu, tidak melakukan banyak hal buruk. Semua berjalan di Redhat.

Pertanyaannya sederhana: Bagaimana saya bisa tahu apa yang sebenarnya dilakukan server? Dokumentasi nol tersedia dari pencipta.

Bizmark
sumber
7
Daftar proses, pendengar jaringan (mungkin dibandingkan dengan seharusnya dijalankan berdasarkan skrip init) ...
HBruijn
5
mengutuk! pasti seseorang tahu untuk apa mereka? jadi mereka ingin Anda mendukung mereka tetapi tidak tahu apa yang mereka lakukan ?!
Digital Lightcraft
11
Matikan mereka. Seseorang akan memberi tahu Anda, segera , apa yang tidak berfungsi.
jscott
58
JANGAN MATIKAN. Cabut kabel Ethernet, jika Anda ingin menjerit-tes. Jika Anda belum pernah memiliki kotak dengan uptime dua tahun gagal untuk reboot, Anda akan pada suatu titik. Ini bukan saatnya untuk menambahkan frustrasi itu ke dalam campuran.
Aaron Copley
7
Apa yang orang lain katakan, tetapi juga: jalankan nmap melawan mereka.
Katherine Villyard

Jawaban:

42

Cabut kabel ethernet dan lihat siapa yang marah.

Serius meskipun, mesin misteri seperti ini menciptakan banyak overhead mental untuk tim dan sering kali sama sekali tidak memberikan nilai bisnis. Bicaralah dengan atasan Anda, jika tidak ada yang tahu apa fungsinya, mungkin tidak ada yang peduli.

Josh Rumbut
sumber
43
JANGAN MATIKAN. Cabut kabel Ethernet, jika Anda ingin menjerit-tes. Jika Anda belum pernah memiliki kotak dengan uptime dua tahun gagal untuk reboot, Anda akan pada suatu titik. Ini bukan saatnya untuk menambahkan frustrasi itu ke dalam campuran. (Menyalin ini di sini karena itu perlu dibaca.)
Aaron Copley
3
Anda 100% benar, saya telah mengedit posting untuk mencerminkan hal itu. Saya menjadi sedikit ceroboh tetapi saya masih bisa bercanda tanpa mempromosikan bencana.
Josh Rumbut
8
Sebelum jaringan dicabut itu adalah ide yang baik untuk menyimpan daftar proses yang berjalan dan membuka soket pada setiap server - kalau-kalau ada sesuatu yang mengandalkan koneksi TCP antara server yang kebetulan tetap ESTABLISHED selama berbulan-bulan tanpa ada yang memikirkan mengotomatiskan langkah apa pun yang diperlukan untuk membukanya dalam kasus pertama. (Sebagai contoh jika seseorang membutuhkan penerusan port ssh sementara dan kemudian melupakannya.)
kasperd
4
Jangan lakukan ini. Nasihat konyol apa. Orang-orang TI bodoh yang melakukan hal ini menghabiskan banyak waktu dan pekerjaan saya. BERTANYA DAHULU. Jika Anda tidak tahu harus bertanya siapa, TANYAKAN SEMUA ORANG .
Lightness Races with Monica
4
Pastikan Anda memberikan waktu yang cukup bagi seseorang untuk berteriak - saat saya melakukan ini dengan mesin berdebu atau desktop yang duduk di rak ruang server - tidak ada yang tahu apa yang harus dilakukan, butuh satu bulan penuh bagi seseorang untuk memperhatikan ketika kita mencabutnya. . Ternyata itu adalah bagian dari sistem penggajian, tanpa server itu, Akuntansi tidak dapat menghasilkan penggajian bulanan. Itu telah berjalan tanpa pengawasan selama setidaknya 3 tahun tanpa ada yang memperhatikannya - jadi "tes berteriak" sukses, jika kita tidak melakukannya, server akhirnya akan mati sendiri. Kami akhirnya p2v'ing ke cluster vmware kami.
Johnny
30

Ini adalah pertanyaan yang cukup luas untuk format Serverfault, tapi ini awal yang bagus:

  • Periksa proses yang sedang berjalan dan yang dijadwalkan untuk dijalankan saat startup sistem.
    • Tinjau konfigurasi yang sedang berjalan masing-masing.
    • Lihatlah ke direktori data yang ditentukan. (Mungkin seseorang menginstal MySQL dan menyalakannya, tetapi tidak ada database.)
  • Periksa tugas yang dijadwalkan.
  • Periksa log untuk melihat;
    • yang telah masuk baru-baru ini (dan bertanya kepada mereka)
    • dan untuk mendapatkan ide tentang apa yang sedang berjalan.

Anda tidak menyebutkan versi, jadi saya telah menghilangkan spesifiknya.

Aaron Copley
sumber
8
Ada sesuatu yang lebih penting daripada layanan mana yang dikonfigurasi untuk memulai ketika sistem melakukan booting. Layanan mana yang berjalan sekarang? Memulai layanan dan lupa mengkonfigurasinya untuk memulai saat boot bukanlah kesalahan yang sulit untuk dilakukan. Pada catatan yang terkait, itu ide yang baik untuk melihat status sistem lain seperti: titik mount, tabel routing, aturan iptables. Semua itu adalah hal-hal yang dapat dengan mudah diubah saat sistem berjalan tanpa mengingat untuk memperbarui file konfigurasi yang digunakan saat boot.
kasperd
Selain itu saya akan menggunakan pemindai port untuk melihat port mana yang terbuka, kemudian mencoba untuk menghubungkannya menggunakan alat yang biasa. Untuk contoh (sederhana) jika port 443 terbuka, Anda dapat mencoba menggunakan browser web untuk menghubungkannya. Saya harus sering menjelajahi server yang sepertinya ditinggalkan dan salah satu alat favorit saya untuk menelusuri file konfigurasi dengan cepat di / etc dan tempat-tempat lain adalah menggunakan "lynx" atau "tautan" jika Anda mau. Ini adalah browser web berbasis karakter yang melakukan pekerjaan yang cukup baik sebagai browser file juga, dengan navigasi tombol kursor yang nyaman.
aseq
1
@kasperd Fair play menjalankan layanan persisten. Tapi, saya berpikir tentang aturan firewall, titik mount, dll. Bagi saya itu tampak sebagai komponen tambahan yang sudah terikat dengan salah satu poin-poin yang ada. YMMV.
Aaron Copley
Silakan tambahkan - Periksa koneksi jaringan yang aktif, dan tuliskan nama layanan dan nomor port. Metode terbaik untuk melakukan ini bervariasi berdasarkan sistem operasi. Stat bersih EG. Juga, letakkan semacam jejak di komputer agar Anda dapat melihat apa yang dilakukannya sepanjang hari. Anda mungkin juga ingin menambahkan pertimbangan untuk skenario ketika hal-hal yang berjalan di server BISA menjadi berbahaya.
IceMage
19

Ada beberapa hal yang dapat Anda lakukan untuk mencoba dan memastikan apa yang berjalan pada sistem Anda.

Anda dapat memeriksa port mana yang didengarkan server Anda untuk mengetahui apa yang ada di sana. Perintah yang baik untuk digunakan adalah:

 [root@server ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat    e       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LIST    EN      1880/smbd
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LIST    EN      1911/nrpe
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LIST    EN      1759/sshd

Seperti yang Anda lihat dari contoh output di atas, ia menyajikan Anda dengan versi protokol (tcp atau udp), alamat yang sedang didengarkan, port yang terbuka dan program yang mendengarkan.

Dalam contoh terpotong di atas (mesin server) Anda dapat melihat port tcp 139, 5666, dan 22 sedang mendengarkan. Keputusan ini untuk masing-masing samba, nrpe (agen Nagios) dan ssh, dan dikonfirmasi ketika Anda memeriksa program yang mendengarkan pada port itu.

Selain itu, Anda dapat memeriksa daftar daemon yang dikonfigurasikan untuk mulai saat boot, untuk melakukannya, jalankan: chkconfig --list | grep "3:on"

Contoh:

[root@server ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off
x2gocleansessions       0:off   1:off   2:on    3:on    4:on    5:on    6:off
.
.
.

atau :

service --status-all

Itai Ganot
sumber
5
Saya menemukan netstat -pluntlebih mudah untuk diingat.
Abligh
2
Juga, tcpdumpsemoga bermanfaat untuk menentukan siapa yang sebenarnya menggunakan setiap layanan.
Abligh
18

Metode lain melibatkan memeriksa /etcdirektori dan melihat tanggal modifikasi. Setelah baru menginstal semua file dalam direktori ini seharusnya memiliki tanggal / waktu yang kira-kira sama. Dan karena instalasi biasanya menginstal banyak hal yang biasanya tidak digunakan orang, hanya file yang memiliki tanggal modifikasi nanti yang mencerminkan tujuan sebenarnya dari server . Jika ini ext4 Anda juga harus dapat mengekstrak tanggal lahir direktori, sehingga tugasnya bisa sangat mudah.

Namun metode lain akan melibatkan memeriksa .bash_historyfile untuk melihat apa yang dilakukan admin. File ini dapat memberikan banyak pengetahuan.

Konrad Gajewski
sumber
7

Periksa aturan firewall. Dengan sedikit keberuntungan, ini dikonfigurasi untuk default-deny. Itu berarti ada aturan eksplisit untuk setiap layanan yang diizinkan.

Ini lebih baik netstatkarena itu juga dapat menunjukkan port yang terbuka misalnya untuk cadangan malam.

MSalters
sumber
6

Satu jawaban yang belum saya lihat: Periksa file yang paling baru dimodifikasi. Log, file basis data, file output lain, dll. Dapat ditulis tetap yang dapat memberikan petunjuk:

find . -mtime -3 

Itu akan menemukan file yang dimodifikasi dalam direktori saat ini dan lebih dalam, diubah dalam 3 hari terakhir. Tingkatkan angka 3 menjadi tebakan yang berpendidikan sampai Anda mendapatkan beberapa hasil yang dapat Anda selidiki.

Bukan bukti bodoh, karena kotak hanya dapat memproses beberapa panggilan layanan web, mengembalikan beberapa data tanpa pernah menulis apa pun. Tetapi ditambahkan ke campuran hebat yang disebutkan di atas, itu mungkin hanya menghasilkan beberapa petunjuk.

JayMcTee
sumber