使用ssh訪問防火墻后的Linux服務(wù)器的方法是什么
防火墻借由監(jiān)測所有的封包并找出不符規(guī)則的內(nèi)容,可以防范電腦蠕蟲或是木馬程序的快速蔓延。這篇文章主要介紹了使用ssh訪問防火墻后的Linux服務(wù)器的方法, 即在Linux上設(shè)置反向 ssh隧道的相關(guān)方法,需要的朋友可以參考下
使用ssh工具訪問Linux服務(wù)器的基本方法
第一步,開啟工作站上防火墻的相應(yīng)端口,SSH是22。
第二步,開啟SSH服務(wù)。
先查看ssh的狀態(tài)。
復(fù)制代碼代碼如下:
service sshd status
開啟服務(wù),
復(fù)制代碼代碼如下:
service sshd start
當(dāng)然也可以關(guān)閉了,
復(fù)制代碼代碼如下:
service sshd stop
重啟服務(wù),
復(fù)制代碼代碼如下:
sshd restart
第三步,修改配置文件,/etc/ssh/sshd_config
打開這個文件,在最后的地方AllowUsers,添加用戶名,多個就用空格隔開,當(dāng)然也可以添加root。如果想禁用root 登錄也可以,這里不添加。同時可以在這個文件中找到一個語句: Permitrootlogin yes。將yes改為no就可以了。
第四步,設(shè)置ssh隨機啟動
復(fù)制代碼代碼如下:
chkconfig --level xxxx sshd on //xxxx表示你要的等級(應(yīng)該這么說吧),例如2345等
第五步,遠程登錄
復(fù)制代碼代碼如下:
ssh usrname@hostname //hostname或者Ip
然后就是要你輸入密碼了。登錄后,也可以更改用戶(su 命令)。如何希望有圖形,也不是不可以,在登錄的時候加上 -X (大寫的X):ssh -X usrname@hostname。
這樣勉強可以吧,也有圖形界面了,就是反映比較慢,應(yīng)急可以。
通過反向 SSH 隧道訪問 NAT 后面的 Linux 服務(wù)器
什么是反向 SSH 隧道?
SSH 端口轉(zhuǎn)發(fā)的一種替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常簡單。使用這種方案,在你的受限的家庭網(wǎng)絡(luò)之外你需要另一臺主機(所謂的“中繼主機”),你能從當(dāng)前所在地通過 SSH 登錄到它。你可以用有公網(wǎng) IP 地址的 VPS 實例 配置一個中繼主機。然后要做的就是從你的家庭網(wǎng)絡(luò)服務(wù)器中建立一個到公網(wǎng)中繼主機的永久 SSH 隧道。有了這個隧道,你就可以從中繼主機中連接“回”家庭服務(wù)器(這就是為什么稱之為 “反向” 隧道)。不管你在哪里、你的家庭網(wǎng)絡(luò)中的 NAT 或 防火墻限制多么嚴格,只要你可以訪問中繼主機,你就可以連接到家庭服務(wù)器。
在 Linux 上設(shè)置反向 SSH 隧道
讓我們來看看怎樣創(chuàng)建和使用反向 SSH 隧道。我們做如下假設(shè):我們會設(shè)置一個從家庭服務(wù)器(homeserver)到中繼服務(wù)器(relayserver)的反向 SSH 隧道,然后我們可以通過中繼服務(wù)器從客戶端計算機(clientcomputer) SSH 登錄到家庭服務(wù)器。本例中的中繼服務(wù)器 的公網(wǎng) IP 地址是 1.1.1.1。
在家庭服務(wù)器上,按照以下方式打開一個到中繼服務(wù)器的 SSH 連接。
復(fù)制代碼代碼如下:
homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1
這里端口 10022 是任何你可以使用的端口數(shù)字。只需要確保中繼服務(wù)器上不會有其它程序使用這個端口。
“-R 10022:localhost:22” 選項定義了一個反向隧道。它轉(zhuǎn)發(fā)中繼服務(wù)器 10022 端口的流量到家庭服務(wù)器的 22 號端口。
用 “-fN” 選項,當(dāng)你成功通過 SSH 服務(wù)器驗證時 SSH 會進入后臺運行。當(dāng)你不想在遠程 SSH 服務(wù)器執(zhí)行任何命令,就像我們的例子中只想轉(zhuǎn)發(fā)端口的時候非常有用。
運行上面的命令之后,你就會回到家庭主機的命令行提示框中。
登錄到中繼服務(wù)器,確認其 127.0.0.1:10022 綁定到了 sshd。如果是的話就表示已經(jīng)正確設(shè)置了反向隧道。
復(fù)制代碼代碼如下:
relayserver~$ sudo netstat -nap | grep 10022
復(fù)制代碼代碼如下:
tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd
現(xiàn)在就可以從任何其它計算機(客戶端計算機)登錄到中繼服務(wù)器,然后按照下面的方法訪問家庭服務(wù)器。
復(fù)制代碼代碼如下:
relayserver~$ ssh -p 10022 homeserver_user@localhost
需要注意的一點是你在上面為localhost輸入的 SSH 登錄/密碼應(yīng)該是家庭服務(wù)器的,而不是中繼服務(wù)器的,因為你是通過隧道的本地端點登錄到家庭服務(wù)器,因此不要錯誤輸入中繼服務(wù)器的登錄/密碼。成功登錄后,你就在家庭服務(wù)器上了。
通過反向SSH 隧道直接連接到網(wǎng)絡(luò)地址變換后的服務(wù)器
上面的方法允許你訪問 NAT 后面的 家庭服務(wù)器,但你需要登錄兩次:首先登錄到 中繼服務(wù)器,然后再登錄到家庭服務(wù)器。這是因為中繼服務(wù)器上 SSH 隧道的端點綁定到了回環(huán)地址(127.0.0.1)。
事實上,有一種方法可以只需要登錄到中繼服務(wù)器就能直接訪問NAT之后的家庭服務(wù)器。要做到這點,你需要讓中繼服務(wù)器上的 sshd 不僅轉(zhuǎn)發(fā)回環(huán)地址上的端口,還要轉(zhuǎn)發(fā)外部主機的端口。這通過指定中繼服務(wù)器上運行的 sshd 的 GatewayPorts 實現(xiàn)。
打開中繼服務(wù)器的 /etc/ssh/sshd_conf 并添加下面的行。
復(fù)制代碼代碼如下:
relayserver~$ vi /etc/ssh/sshd_conf
GatewayPorts clientspecified
重啟 sshd。
基于 Debian 的系統(tǒng):
復(fù)制代碼代碼如下:
relayserver~$ sudo /etc/init.d/ssh restart
基于紅帽的系統(tǒng):
復(fù)制代碼代碼如下:
relayserver~$ sudo systemctl restart sshd
現(xiàn)在在家庭服務(wù)器中按照下面方式初始化一個反向 SSH 隧道。
復(fù)制代碼代碼如下:
homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1
登錄到中繼服務(wù)器然后用 netstat 命令確認成功建立的一個反向 SSH 隧道。
復(fù)制代碼代碼如下:
relayserver~$ sudo netstat -nap | grep 10022
復(fù)制代碼代碼如下:
tcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev
不像之前的情況,現(xiàn)在隧道的端點是 1.1.1.1:10022(中繼服務(wù)器的公網(wǎng) IP 地址),而不是 127.0.0.1:10022。這就意味著從外部主機可以訪問隧道的另一端。
現(xiàn)在在任何其它計算機(客戶端計算機),輸入以下命令訪問網(wǎng)絡(luò)地址變換之后的家庭服務(wù)器。
復(fù)制代碼代碼如下:
clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1
在上面的命令中,1.1.1.1 是中繼服務(wù)器的公共 IP 地址,homeserver_user必須是家庭服務(wù)器上的用戶賬戶。這是因為你真正登錄到的主機是家庭服務(wù)器,而不是中繼服務(wù)器。后者只是中繼你的 SSH 流量到家庭服務(wù)器。
在 Linux 上設(shè)置一個永久反向 SSH 隧道
現(xiàn)在你已經(jīng)明白了怎樣創(chuàng)建一個反向 SSH 隧道,然后把隧道設(shè)置為 “永久”,這樣隧道啟動后就會一直運行(不管臨時的網(wǎng)絡(luò)擁塞、SSH 超時、中繼主機重啟,等等)。畢竟,如果隧道不是一直有效,你就不能可靠的登錄到你的家庭服務(wù)器。
對于永久隧道,我打算使用一個叫 autossh 的工具。正如名字暗示的,這個程序可以讓你的 SSH 會話無論因為什么原因中斷都會自動重連。因此對于保持一個反向 SSH 隧道非常有用。
第一步,我們要設(shè)置從家庭服務(wù)器到中繼服務(wù)器的無密碼 SSH 登錄。這樣的話,autossh 可以不需要用戶干預(yù)就能重啟一個損壞的反向 SSH 隧道。
下一步,在建立隧道的家庭服務(wù)器上安裝 autossh。
在家庭服務(wù)器上,用下面的參數(shù)運行 autossh 來創(chuàng)建一個連接到中繼服務(wù)器的永久 SSH 隧道。
復(fù)制代碼代碼如下:
homeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1
“-M 10900” 選項指定中繼服務(wù)器上的監(jiān)視端口,用于交換監(jiān)視 SSH 會話的測試數(shù)據(jù)。中繼服務(wù)器上的其它程序不能使用這個端口。
“-fN” 選項傳遞給 ssh 命令,讓 SSH 隧道在后臺運行。
“-o XXXX” 選項讓 ssh:
使用密鑰驗證,而不是密碼驗證。
自動接受(未知)SSH 主機密鑰。
每 60 秒交換 keep-alive 消息。
沒有收到任何響應(yīng)時最多發(fā)送 3 條 keep-alive 消息。
其余 SSH 隧道相關(guān)的選項和之前介紹的一樣。
如果你想系統(tǒng)啟動時自動運行 SSH 隧道,你可以將上面的 autossh 命令添加到 /etc/rc.local。
補充閱讀:防火墻主要使用技巧
一、所有的防火墻文件規(guī)則必須更改。
盡管這種方法聽起來很容易,但是由于防火墻沒有內(nèi)置的變動管理流程,因此文件更改對于許多企業(yè)來說都不是最佳的實踐方法。如果防火墻管理員因為突發(fā)情況或者一些其他形式的業(yè)務(wù)中斷做出更改,那么他撞到槍口上的可能性就會比較大。但是如果這種更改抵消了之前的協(xié)議更改,會導(dǎo)致宕機嗎?這是一個相當(dāng)高發(fā)的狀況。
防火墻管理產(chǎn)品的中央控制臺能全面可視所有的防火墻規(guī)則基礎(chǔ),因此團隊的所有成員都必須達成共識,觀察誰進行了何種更改。這樣就能及時發(fā)現(xiàn)并修理故障,讓整個協(xié)議管理更加簡單和高效。
二、以最小的權(quán)限安裝所有的訪問規(guī)則。
另一個常見的安全問題是權(quán)限過度的規(guī)則設(shè)置。防火墻規(guī)則是由三個域構(gòu)成的:即源(IP地址),目的地(網(wǎng)絡(luò)/子網(wǎng)絡(luò))和服務(wù)(應(yīng)用軟件或者其他目的地)。為了確保每個用戶都有足夠的端口來訪問他們所需的系統(tǒng),常用方法是在一個或者更多域內(nèi)指定打來那個的目標(biāo)對象。當(dāng)你出于業(yè)務(wù)持續(xù)性的需要允許大范圍的IP地址來訪問大型企業(yè)的網(wǎng)絡(luò),這些規(guī)則就會變得權(quán)限過度釋放,因此就會增加不安全因素。服務(wù)域的規(guī)則是開放65535個TCP端口的ANY。防火墻管理員真的就意味著為黑客開放了65535個攻擊矢量?
三、根據(jù)法規(guī)協(xié)議和更改需求來校驗每項防火墻的更改。
在防火墻操作中,日常工作都是以尋找問題,修正問題和安裝新系統(tǒng)為中心的。在安裝最新防火墻規(guī)則來解決問題,應(yīng)用新產(chǎn)品和業(yè)務(wù)部門的過程中,我們經(jīng)常會遺忘防火墻也是企業(yè)安全協(xié)議的物理執(zhí)行者。每項規(guī)則都應(yīng)該重新審核來確保它能符合安全協(xié)議和任何法規(guī)協(xié)議的內(nèi)容和精神,而不僅是一篇法律條文。
四、當(dāng)服務(wù)過期后從防火墻規(guī)則中刪除無用的規(guī)則。
規(guī)則膨脹是防火墻經(jīng)常會出現(xiàn)的安全問題,因為多數(shù)運作團隊都沒有刪除規(guī)則的流程。業(yè)務(wù)部門擅長讓你知道他們了解這些新規(guī)則,卻從來不會讓防火墻團隊知道他們不再使用某些服務(wù)了。了解退役的服務(wù)器和網(wǎng)絡(luò)以及應(yīng)用軟件更新周期對于達成規(guī)則共識是個好的開始。運行無用規(guī)則的報表是另外一步。黑客喜歡從來不刪除規(guī)則的防火墻團隊。
使用ssh訪問防火墻后的Linux服務(wù)器的方法是什么相關(guān)文章:
2.外網(wǎng)SSH怎么訪問內(nèi)網(wǎng)LINUX