
幾天前,我開始非常關心我的資料安全,最後我nmap
發現:nmap 127.0.0.1
驚訝,驚訝,我有很多活動服務監聽本地主機:
$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
我唯一一個可能use is ssh
(雖然它可能配置得不好,我將把這個問題留到另一個問題)。
據我所知,ipp
CUPS 使用協定來共用我的印表機,我不需要共用它們,只需從伺服器存取印表機即可。
netstat -lntup
這是root 使用者的輸出,刪除了本機主機位址:
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:22 0.0.0.0:* LISTEN 497/sshd
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 2217/dropbox
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 1021/rpc.statd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 906/rpcbind
tcp6 0 0 :::22 :::* LISTEN 497/sshd
tcp6 0 0 :::42712 :::* LISTEN 1021/rpc.statd
tcp6 0 0 :::445 :::* LISTEN 892/smbd
tcp6 0 0 :::139 :::* LISTEN 892/smbd
tcp6 0 0 :::111 :::* LISTEN 906/rpcbind
udp 0 0 0.0.0.0:51566 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 7362/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 906/rpcbind
udp 0 0 192.168.1.255:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:137 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.255:138 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:655 0.0.0.0:* 906/rpcbind
udp 0 0 0.0.0.0:17500 0.0.0.0:* 2217/dropbox
udp 0 0 0.0.0.0:5353 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:34805 0.0.0.0:* 1021/rpc.statd
udp6 0 0 :::40192 :::* 1021/rpc.statd
udp6 0 0 :::111 :::* 906/rpcbind
udp6 0 0 :::655 :::* 906/rpcbind
udp6 0 0 :::5353 :::* 615/avahi-daemon: r
udp6 0 0 :::42629 :::* 615/avahi-daemon: r
我該如何配置這些服務,以便它們只在我實際使用它們時監聽外界的聲音?
答案1
確定您的曝光度
從命令的輸出來看netstat
,看起來很多服務其實是一個非常短的清單:
$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd
了解狀況
看看這個列表,有幾項服務我不想管。
- dhclient
- 負責取得你的IP位址的DHCP伺服器守護進程,必須要有這個。
- 保管箱
- 顯然 Dropbox,必須有
開始減少它 - 停用 Samba
您可能可以立即停用 Samba,它佔上述服務中的 2 個,nmbd
並且smbd
.值得懷疑的是,您是否真的需要在筆記型電腦上運行它,無論是在本地主機還是面向網路的 IP 上。
要檢查它們是否正在運行,您可以使用以下命令status
:
$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423
關閉服務可能會混淆新貴、/etc/rc.d、業務的所有變化,因此很難弄清楚哪個服務採用哪種技術。對於 Samba,您可以使用以下service
命令:
$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting
現在他們走了:
$ status nmbd
nmbd stop/waiting
$ status smbd
smbd stop/waiting
讓它們遠離......永久
為了讓他們遠離我,我一直在使用這個工具,sysv-rc-conf
從控制台管理服務,它比大多數工具工作得更好。它允許您檢查要運行哪些服務以及應在哪個運行級別啟動/停止它們:
$ sudo apt-get install sysv-rc-conf
停用其餘不需要的內容
現在 Samba 關閉了,我們剩下以下內容:
- avahi 守護程式
- Zeroconf(即插即用)的一部分,將其關閉
- rpc綁定
- NFS 需要 - 將其關閉
- rpc.statd
- NFS 需要 - 將其關閉
對於剩下的 3 個,您也可以執行與 Samba 相同的操作來關閉。
杯?
要關閉 CUPS(順便說一下,您實際上並不需要 CUPS),您可以遵循相同的步驟:關閉該服務,然後停用它啟動。為了能夠列印,您需要在系統上單獨設定每台印表機。您可以透過system-config-printer
GUI 來執行此操作。
按需提供這些服務?
這確實是您問題的核心,但實際上並沒有一個靈丹妙藥的解決方案可以使這些服務變得“智能”,以便它們在使用時運行,而不是一直運行。
#1 - systemd 與新貴部分原因是目前的分裂系統和暴發戶。對兩種競爭技術有很好的概述這裡。
在我看來,兩種技術都試圖做一些略有不同的事情,考慮到它們的功能集,systemd 似乎更適合伺服器,而 upstart 似乎更適合桌面捲。隨著時間的推移,這會自行解決,IMO,並且這兩項服務都將穩定且功能豐富。
最終,這兩項服務都將為它們管理的所有服務提供全面的隨選啟動和停止服務。例如,諸如此類的功能StopWhenUnneeded=yes
已經存在systemd
,因此這些功能的充實只是時間問題。
有些服務根本不支援停止/啟動。諸如此類的服務sshd
按需運作似乎沒有什麼意義,尤其是在大量使用它們的情況下。此外,一些服務(例如 Apache)在其內部提供了機制,以啟動或多或少的監聽器來管理自身。因此,目前還不清楚這些類型的服務如何提供按需服務systemd
或upstart
將如何與這些服務整合。
這真的有必要嗎?
您會聽到雙方都說這太過分了,或者您應該採取極簡主義的方法,只安裝您絕對需要的東西,但這確實是個人選擇。了解這些服務的存在以及它們的作用確實很重要。歸根結底,電腦只是一種工具,透過使用 Unix 系統,您就已經表明您願意窺探幕後並了解電腦的運作方式。
我想說,這種類型的質疑正是人們在處理電腦和 Unix 時應該努力追求的心態。
參考
答案2
答案3
雖然您可以“關閉”個別服務 - 也許設置防火牆可能更容易。幾乎所有常見發行版(Ubuntu、Debian、Centos 等)都內建了對 iptables 的支援。
一個簡單的入門規則集:(您只需在命令提示字元中輸入這些規則;要使它們永久存在,請將它們新增至您的啟動腳本或告訴我們您正在使用什麼發行版。例如在Centos 上:system-config -firewall 是一個很好的用於配置 iptables 規則的 UI)
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
基本上 - 允許 ssh 入站;放下其他一切。
您的 INPUT 鏈現在如下所示:
- 如果資料包通過“ssh”進入我的計算機 - 允許它
- 如果資料包不符合任何先前的規則 - 只需將其丟棄即可。
然後稍後,假設您想要允許“samba”(Windows 檔案共享):您可以運行
iptables -I INPUT-p tcp --dport 465 -j ACCEPT
-I
清單的前置和規則;-A
附加一條規則。所以你的鏈現在看起來像這樣:
- 如果“samba”資料包進入我的電腦 - 允許它
- 如果資料包通過“ssh”進入我的計算機 - 允許它
- 如果資料包不符合任何先前的規則 - 只需將其丟棄即可。
該INPUT
鏈指的是發送到您系統的資料包。其他鏈OUTPUT
用於來自您的電腦的資料包,進入互聯網以及FORWARD
透過您的電腦路由的資料包(即「傳輸」您的電腦的資料包,例如機場的中轉區域 - 不是INPUT
因為它沒有進入您的電腦的東西)。
作為臨別說明:nmap'ing 127.0.0.1 不是很有用;許多服務只能從 127.0.0.1 訪問,而不能從其他地址訪問。如果您沒有另一台可以運行 nmap 的機器 - 嘗試使用 Gibson Research 的 Shields UP! (https://www.grc.com/shieldsup) - 這是一個免費的線上 nmap-lite。或添加您的 IP/電子郵件的評論,我將 nmap 您:)