為你的 Linux 伺服器加把鎖
啊哈!你已經設置好了你的第一台 Linux 伺服器並且已經準備發車了!是么?嗯,慢著。
默認情況下,你的 Linux 系統對攻擊者來說並非是足夠安全的。當然,它比 Windows XP 要安全多了,但這說明不了什麼。
想要使你的 Linux 系統真正穩固,你需要按照 Linode 的 伺服器安全指南 來操作。
總的來說,首先你必須關閉那些你不需要的服務。當然要這樣做的話,你先要知道你正在使用哪些網路服務。
你可以使用 shell 命令來找到是哪些服務:
netstat -tulpn
netstat 將會告訴你正在運行哪些服務和這些服務正在使用的埠是什麼。如果你不需要其中的某項服務或埠,你就應該關閉它。例如,除非你正在運行一個網站,否則你是不需要運行中的 Apache 或 Nginx 伺服器,也不需要開啟 80 或 8080 埠。
總之一句話,不確定的話,就關了它先。
在一個最簡單的,沒有做過任何額外更改的 Linux 伺服器上,你會看到 SSH、 RPC 和 NTPdate 運行在它們的公開埠上。不要添加像 telnet 這樣陳舊而不安全的 shell 程序,否則老司機就會在你不經意間將你的 Linux 小跑車開走了。也許,在上世紀 80 年代的時候你喜歡把 telnet 當作你 SunOS 機器上的備份登錄方式,但是那早已成為了過去。
就 SSH 來說,你應該使用 RSA 密鑰 和 Fail2Ban 來加固。除非你需要 RPC,否則就卸載它——如果你不知道需要不需要它的話,那就是不需要。
關於如何關門已經說的夠多了;讓我們來聊聊利用 iptables 來鎖定進來的流量吧。
當你啟動 Linux 伺服器的時候它是沒有任何規則的。這就意味著所有的流量都是被允許的。這當然是不好的。因此,你需要及時的設置你的防火牆。
Iptables 是一種用來給 netfilter 設置網路策略規則的 shell 工具,netfilter 是Linux 系統下的默認防火牆,它利用一組規則來允許或禁止流量。當有人嘗試連接上你的系統——有些人無時不刻地嘗試這麼干,而且從不氣餒——iptables 就會檢查這些請求是否與規則列表相匹配。如果沒有匹配到任何的規則,它就會採取默認操作。
這個默認操作應該是將連接「Drop」掉,即禁掉這些意圖闖入者。而且這不會讓他們知道這些網路探測行為發生了什麼。(你也可以將鏈接「Reject」掉,但是這會同時讓他們知道你有一個正在運行的 Linux 防火牆。就目前而言,讓陌生人能獲取到我們系統的信息越少越好。至少,我是這麼認為的。)
現在,你可以用 iptables 來設置你的防火牆了。我已經這麼做了。就像以前,我騎著自行車去六英里外上班,並且兩邊都是上坡。而現在,我開車去。
這其實比喻的是我使用 Fedora 發行版的 FirewallD 和 Debian 系發行版的 UFW(Uncomplicated Firewall)。這些都是易用的 iptables 的 shell 前端。你可以在以下的 Linode 指南中找到適合的使用方式:FirewallD 和 UFW。
從本質上來說設置這些規則就是在你的伺服器上放置「非請勿入」的告示牌。用起來吧。
但是也別太興奮地把所有的鏈接都關閉了。例如:
sudo ufw default deny incoming
看起來是個好主意哦。別忘了,它禁止了所有鏈接,包括你自己哦!
很好,它就是這麼乾的。這意味著它也同樣禁止了 SSH 的登錄。也就是說你再也不能登錄你那新伺服器了。哇哦!
不過,如果你犯了錯,錯誤的將更多的鏈接都禁止了。你看,老司機也同樣被你擋在門外了。
或者,更準確得說,這不是你或你的伺服器所遇到的個別現象。當然,你也不是每天受到 3 億多次攻擊嘗試的美國國家安全局(NSA)。但是攻擊腳本根本不在乎你是誰。它只是不斷的檢查尋找網路中存在已知漏洞的伺服器。在平常的一天中我自己的小伺服器就會受到數以百計的攻擊。
都這樣了,你還在等什麼呢?去吧,加固你的網路服務吧。安裝 FirewallD 或者 UFW 來加固你的伺服器吧。你會願意去做的。
關於作者:
Steven J. Vaughan-Nichols 是一位資深的 IT 專欄作家,他的作品出現在許多行業領袖媒體上,包括 ZDNet.com、PC Magazine、InfoWorld、ComputerWorld、Linux Today 和 eWEEK 等。Steven 在 IT 專業方面的見解犀利,雖然他的觀點和雲計算方面的認識,並不代表 Linode 觀點,但是我們仍然非常感謝他的貢獻。你可以在 Twitter 上關注他 (@sjvn)。
via: https://medium.com/linode-cube/locking-down-your-linux-server-24d8516ae374#.qy8qq4bx2
作者:Steven J. Vaughan-Nichols 譯者:wcnnbdk1 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive