Centos5

如何理解 Linux 伺服器的角色?

  • June 3, 2015

我的任務是創建一個 Excel 表,其中包括我們的一個 AWS EC2 環境中的所有 Linux 伺服器,因為主要目標是讓所有伺服器脫離 AWS 並將它們遷移到我們的虛擬環境。這些是感興趣的行標題:伺服器名稱、角色、CPU、記憶體、磁碟、應用程序組件及其版本。

我提取伺服器名稱和伺服器規範沒有問題,但是找到什麼是伺服器角色的最佳方法是什麼?我有一些想法,但我很想听聽你的……這是我的:

  1. 執行rpm -qa --queryformat "%{NAME}\n"以將所有包名稱提取到一個列表中,這可以幫助我了解伺服器的功能。
  2. 執行chkconfig --list |grep on以查看啟用了哪些守護程序。
  3. 執行top以查看正在執行的程序。

您可以做一些事情來嘗試確定係統上正在執行的內容。雖然不能保證,但很可能任何正在執行的生產服務都可以通過本地子網或通過 NAT 訪問網路。考慮到這一點,您可以檢查伺服器正在偵聽的埠,以了解那裡有什麼。一個好的命令是:

alex:~/ $ sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      945/smbd        
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1746/nginx      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1437/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1310/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3746/cupsd  

從上面的範例輸出中可以看出,它向您顯示了協議版本(tcp 或 udp)、正在偵聽的地址、打開的埠和正在偵聽的程序。

在上面截斷的範例(台式機)中,您可以看到 tcp 埠 139、80、53、22 和 631 正在偵聽。這些分別解析為 samba、http、dns、ssh 和 ipp,並在您檢查正在偵聽該埠的程序時得到確認。

此外,大多數基於 Debian 和 Red Hat 的 Linux 發行版都使用 system V 並提供 services 命令。您可以使用它來提供服務列表及其狀態:

alex:~/ $ sudo service --status-all

[ + ]  acpid
[ - ]  anacron
[ + ]  apparmor
[ ? ]  apport
[ ? ]  atieventsd
[ + ]  avahi-daemon
[ ? ]  binfmt-support
[ + ]  bluetooth
[ - ]  brltty
[ ? ]  console-setup
[ + ]  cron
[ ? ]  cryptdisks
[ ? ]  cryptdisks-early
[ + ]  cups
[ + ]  cups-browsed
[ - ]  dbus
[ ? ]  dns-clean
[ + ]  dnsmasq
[ + ]  ebtables
[ + ]  friendly-recovery
[ - ]  grub-common
[ ? ]  irqbalance
[ + ]  kerneloops
[ ? ]  killprocs
[ ? ]  kmod
[ + ]  libvirt-bin
[ ? ]  lightdm
[ ? ]  networking
[ + ]  nginx
[ + ]  nmbd
[ ? ]  ondemand
[ + ]  openvpn
[ ? ]  pppd-dns
[ - ]  procps
[ - ]  pulseaudio
[ ? ]  rc.local
[ + ]  resolvconf
[ - ]  rsync
[ + ]  rsyslog
[ + ]  samba
[ - ]  samba-ad-dc
[ + ]  saned
[ ? ]  sendsigs
[ - ]  smartmontools
[ + ]  smbd
[ ? ]  speech-dispatcher
[ - ]  ssh
[ - ]  sudo
[ + ]  udev
[ ? ]  umountfs
[ ? ]  umountnfs.sh
[ ? ]  umountroot
[ - ]  unattended-upgrades
[ - ]  urandom
[ ? ]  vboxautostart-service
[ + ]  vboxballoonctrl-service
[ + ]  vboxdrv
[ + ]  vboxweb-service
[ + ]  winbind
[ - ]  x11-common

這為您提供了 system v 服務的概述——如果您有手動啟動的自定義應用程序或有自定義啟動腳本,它們可能不在這裡,但這仍然很有用。A + 表示正在執行的服務,a - 表示已停止的服務,而 ? 意味著未知。請務必以提升的使用者身份執行上述兩個命令,否則您的結果將不完整。

上述命令將讓您深入了解伺服器上正在執行的內容,而不是它的配置方式或用途。開放埠 80 表示 Web 伺服器,但這可能意味著面向公眾、內部呈現的 API、意外安裝的 httpd 以及任何此類配置。理想情況下,您需要與架構師討論以更好地了解每台伺服器的用途。

引用自:https://serverfault.com/questions/611154