說起Linux系統(tǒng)培訓(xùn)啊,那就不得不提到信盈達(dá)了,信盈達(dá)老師的Linux系統(tǒng)水平在業(yè)內(nèi)一向以專業(yè)著稱,這次,就讓信盈達(dá)老師教我們一個(gè)有趣的調(diào)試工具吧!ncat 或者說 nc 是一款功能類似 cat 的工具,但是是用于網(wǎng)絡(luò)的。它是一款擁有多種功能的 CLI 工具,可以用來在網(wǎng)絡(luò)上讀、寫以及重定向數(shù)據(jù)。 它被設(shè)計(jì)成可以被腳本或其他程序調(diào)用的可靠的后端工具。同時(shí)由于它能創(chuàng)建任意所需的連接,因此也是一個(gè)很好的網(wǎng)絡(luò)調(diào)試工具。
ncat/nc 既是一個(gè)端口掃描工具,也是一款安全工具,還能是一款監(jiān)測工具,甚至可以做為一個(gè)簡單的 TCP 代理。 由于有這么多的功能,它被譽(yù)為是網(wǎng)絡(luò)界的瑞士軍刀。 這是每個(gè)系統(tǒng)管理員都應(yīng)該知道并且掌握它。
在大多數(shù) Debian 發(fā)行版中,nc 是默認(rèn)可用的,它會(huì)在安裝系統(tǒng)的過程中自動(dòng)被安裝。 但是在 CentOS 7 / RHEL 7 的最小化安裝中,nc 并不會(huì)默認(rèn)被安裝。 你需要用下列命令手工安裝。
[root@linuxtechi ~]# yum install nmap-ncat -y
系統(tǒng)管理員可以用它來審計(jì)系統(tǒng)安全,用它來找出開放的端口然后保護(hù)這些端口。 管理員還能用它作為客戶端來審計(jì) Web 服務(wù)器、telnet 服務(wù)器、郵件服務(wù)器等, 通過 nc 我們可以控制發(fā)送的每個(gè)字符,也可以查看對(duì)方的回應(yīng)。
我們還可以用它捕獲客戶端發(fā)送的數(shù)據(jù)以此來了解這些客戶端是做什么的。
在本文中,我們會(huì)通過 10 個(gè)例子來學(xué)習(xí)如何使用 nc 命令。
例子: 1) 監(jiān)聽入站連接
通過 -l 選項(xiàng),ncat 可以進(jìn)入監(jiān)聽模式,使我們可以在指定端口監(jiān)聽入站連接。 完整的命令是這樣的:
$ ncat -l port_number
比如,
$ ncat -l 8080
服務(wù)器就會(huì)開始在 8080 端口監(jiān)聽入站連接。
例子: 2) 連接遠(yuǎn)程系統(tǒng)
使用下面命令可以用 nc 來連接遠(yuǎn)程系統(tǒng),深圳linux培訓(xùn)哪家好
深圳linux培訓(xùn)哪家好,$ ncat IP_address port_number
讓我們來看個(gè)例子,
$ ncat 192.168.1.100 80
這會(huì)創(chuàng)建一個(gè)連接,連接到 IP 為 192.168.1.100 的服務(wù)器上的 80 端口,然后我們就可以向
服務(wù)器發(fā)送指令了。 比如我們可以輸入下面內(nèi)容來獲取完整的網(wǎng)頁內(nèi)容
GET / HTTP/1.1
或者獲取頁面名稱,
GET / HTTP/1.1
或者我們可以通過以下方式獲得操作系統(tǒng)指紋標(biāo)識(shí),
HEAD / HTTP/1.1
這會(huì)告訴我們使用的是什么軟件來運(yùn)行這個(gè) web 服務(wù)器的。
例子: 3) 連接 UDP 端口
默認(rèn)情況下,nc 創(chuàng)建連接時(shí)只會(huì)連接 TCP 端口。 不過我們可以使用 -u 選項(xiàng)來連接到 UDP 端口,
$ ncat -l -u 1234
現(xiàn)在我們的系統(tǒng)會(huì)開始監(jiān)聽 UDP 的 1234 端口,我們可以使用下面的 netstat 命令來驗(yàn)證這一點(diǎn),
$ netstat -tunlp | grep 1234
udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc
udp6 0 0 :::1234 :::* 17341/nc
假設(shè)我們想發(fā)送或者說測試某個(gè)遠(yuǎn)程主機(jī) UDP 端口的連通性,我們可以使用下面命令,
$ ncat -v -u {host-ip} {udp-port}
比如:
[root@localhost ~]# ncat -v -u 192.168.105.150 53
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.105.150:53。
例子: 4) 將 nc 作為聊天工具
nc 也可以作為聊天工具來用,我們可以配置服務(wù)器監(jiān)聽某個(gè)端口,然后從遠(yuǎn)程主機(jī)上連接到服務(wù)器的這個(gè)端口,就可以開始發(fā)送消息了。 在服務(wù)器這端運(yùn)行:
$ ncat -l 8080
在遠(yuǎn)程客戶端主機(jī)上運(yùn)行:
$ ncat 192.168.1.100 8080
之后開始發(fā)送消息,這些消息會(huì)在服務(wù)器終端上顯示出來。
例子: 5) 將 nc 作為代理
nc 也可以用來做代理。比如下面這個(gè)例子,
$ ncat -l 8080 | ncat 192.168.1.200 80
所有發(fā)往我們服務(wù)器 8080 端口的連接都會(huì)自動(dòng)轉(zhuǎn)發(fā)到 192.168.1.200 上的 80 端口。 不過由于我們使用了管道,數(shù)據(jù)只能被單向傳輸。 要同時(shí)能夠接受返回的數(shù)據(jù),我們需要?jiǎng)?chuàng)建一個(gè)雙向管道。 使用下面命令可以做到這點(diǎn):
$ mkfifo 2way
$ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
現(xiàn)在你可以通過 nc 代理來收發(fā)數(shù)據(jù)了。
例子: 6) 使用 nc 拷貝文件
nc 還能用來在系統(tǒng)間拷貝文件,雖然這么做并不推薦,因?yàn)榻^大多數(shù)系統(tǒng)默認(rèn)都安裝了 ssh/scp。 不過如果你恰好遇見個(gè)沒有 ssh/scp 的系統(tǒng)的話, 你可以用 nc 來作最后的努力。
在要接受數(shù)據(jù)的機(jī)器上啟動(dòng) nc 并讓它進(jìn)入監(jiān)聽模式:
$ ncat -l 8080 > file.txt
現(xiàn)在去要被拷貝數(shù)據(jù)的機(jī)器上運(yùn)行下面命令:
$ ncat 192.168.1.100 8080 --send-only < data.txt
這里,data.txt 是要發(fā)送的文件。 -–send-only 選項(xiàng)會(huì)在文件拷貝完后立即關(guān)閉連接。 如果不加該選項(xiàng), 我們需要手工按下 ctrl+c 來關(guān)閉連接。
我們也可以用這種方法拷貝整個(gè)磁盤分區(qū),不過請(qǐng)一定要小心。