常用linux系统扫描命令汇总
本文介紹了一些網絡掃描的技術手段,其中包括主機掃描、路由掃描、批量服務掃描。
常用命令:fping、hping、traceroute、mtr、nmap、nc、tcpdump
主機掃描
fping
fping是一個小型命令行工具,用于向網絡主機發送ICMP回應請求,類似于ping,但在ping多個主機時性能要高得多。fping與ping不同的地方在于,fping可以在命令行中指定要ping的主機數量范圍,也可以指定含有要ping的主機列表文件。
作用:批量的給目標主機發送ping請求,測試主機的存活情況
特點:并行發送、結果易讀
安裝:
參數說明:
# fping -h -a:只顯示存活主機 -u:只顯示不存活主機 -l:循環ping -g:通過指定起始地址與終止地址產生目標列表(192.168.1.0/24)目標IP地址的輸入方式:
fping IP1 IP2 IP3 ...; fping -f filename; fping -g IP1 IP2(IP1地址開始范圍,IP2地址結束范圍)用法示例:
# fping 192.168.20.152 192.168.20.153 # fping -g 192.168.20.150 192.168.20.153 # fping -a -g 192.168.20.150 192.168.20.153 # fping -g 192.168.20.150 192.168.20.153 2>/dev/null 192.168.20.151 is alive 192.168.20.152 is alive 192.168.20.150 is unreachable 192.168.20.153 is unreachablehping
官方站點:http://www.hping.org/
特點:支持使用的TCP/IP數據包組裝、分析工具
安裝:
參數說明:
-c:發送數據包的個數 -d:每個數據包的大小 -p:端口 -S:設置TCP模式SYN包 -a:偽造IP地址用法示例:
1.對指定目標端口發起tcp探測
hping -p 22 -S 192.168.20.151
#可以設置151機器禁ping查看效果: sysctl -w net.ipv4.icmp_echo_ignore_all=1
2.偽造來源IP,模擬Ddos攻擊
hping -p 22 -S 192.168.20.151 -a 192.168.20.150
在151機器上開啟tcpdump抓取來自攻擊源的數據包:
# tcpdump -i eth0 src host 192.168.20.150 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 20:00:23.471610 IP 192.168.20.150.spice > 192.168.20.151.ssh: Flags [S], seq 1309245604:1309245704, win 512, length 100 20:00:24.471781 IP 192.168.20.150.xiip > 192.168.20.151.ssh: Flags [S], seq 1698714277:1698714377, win 512, length 100 20:00:25.472009 IP 192.168.20.150.discovery-port > 192.168.20.151.ssh: Flags [S], seq 1558244712:1558244812, win 512, length 100 20:00:26.472229 IP 192.168.20.150.egs > 192.168.20.151.ssh: Flags [S], seq 317559446:317559546, win 512, length 100 20:00:27.472494 IP 192.168.20.150.videte-cipc > 192.168.20.151.ssh: Flags [S], seq 1828776172:1828776272, win 512, length 100補充:
tcpdump抓包常用參數和用法
參數說明:
tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型 -i eth0 : 只抓經過接口eth0的包 host 192.168.20.151 只抓取本機器和192.168.20.151機器之間的數據包 -s 0 : 抓取數據包時默認抓取長度為68字節。加上-s 0 后可以抓到完整的數據包 -w /tools/0427.pcap : 指定保存的路徑保存成pcap文件,方便用ethereal(即wireshark)分析詳細用法可以參考:https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
tcpdump
路由掃描
查詢一個主機到另一個主機經過的路由跳數、及數據延遲情況。
常用工具:traceroute、mtr
traceroute
參考鏈接:https://www.cnblogs.com/peida/archive/2013/03/07/2947326.html
通過traceroute我們可以知道信息從你的計算機到互聯網另一端的主機是走的什么路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,在MS Windows中為tracert。 traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其IP地址。
在大多數情況下,我們會在linux主機系統下,直接執行命令行:traceroute hostname
參數說明:
默認使用uDP協議(3000以上的端口) 使用TCP協議 -T -p 使用ICMP協議 -I -d 使用Socket層級的排錯功能。 -f 設置第一個檢測數據包的存活數值TTL的大小。 -F 設置勿離斷位。 -g 設置來源路由網關,最多可設置8個。 -i 使用指定的網絡界面送出數據包。 -I 使用ICMP回應取代UDP資料信息。 -m 設置檢測數據包的最大存活數值TTL的大小。 -n 直接使用IP地址而非主機名稱。 -p 設置UDP傳輸協議的通信端口。 -r 忽略普通的Routing Table,直接將數據包送到遠端主機上。 -s 設置本地主機送出數據包的IP地址。 -t 設置檢測數據包的TOS數值。 -v 詳細顯示指令的執行過程。 -w 設置等待遠端主機回報的時間。 -x 開啟或關閉數據包的正確性檢驗。使用示例:
1.traceroute 用法簡單、最常用的用法 # traceroute www.baidu.com2.跳數設置 # traceroute -m 10 www.baidu.com3.顯示IP地址,不查主機名 # traceroute -n www.baidu.com4.探測包使用的基本UDP端口設置6888 # traceroute -p 6888 www.baidu.com5.把探測包的個數設置為值4 # traceroute -q 4 www.baidu.com6.繞過正常的路由表,直接發送到網絡相連的主機 # traceroute -r www.baidu.com7.把對外發探測包的等待響應時間設置為3秒 # traceroute -w 3 www.baidu.com說明:
# traceroute -T -p 80 -n www.imooc.com traceroute to www.imooc.com (117.121.101.40), 30 hops max, 60 byte packets1 192.168.20.11 0.406 ms 0.366 ms 0.337 ms2 * * *3 123.150.144.153 26.616 ms 26.922 ms 26.897 ms4 221.238.7.233 11.441 ms 7.298 ms 6.792 ms5 221.238.222.65 7.000 ms 6.978 ms 7.318 ms6 219.150.49.181 11.389 ms 219.150.49.169 10.847 ms 219.150.49.189 8.933 ms7 36.110.245.26 13.724 ms 36.110.245.22 9.259 ms 8.925 ms8 * * *9 220.181.17.122 6.568 ms 17.669 ms 17.606 ms 10 * * * 11 117.121.99.82 7.455 ms 7.894 ms 8.721 ms 12 * * * 13 117.121.101.40 10.137 ms 7.703 ms 7.699 ms記錄按序列號從1開始,每個紀錄就是一跳 ,每跳表示一個網關,我們看到每行有三個時間,單位是 ms,其實就是-q的默認參數。探測數據包向每個網關發送三個數據包后,網關響應后返回的時間;如果用 traceroute -q 4 www.baidu.com ,表示向每個網關發送4個數據包。
有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關的數據包返回數據。
有時我們在某一網關處延時比較長,有可能是某臺網關比較阻塞,也可能是物理設備本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;可以加-n 參數來避免DNS解析,以IP格式輸出數據。
如果在局域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。
mtr
MTR 是一個強大的網絡診斷工具,管理員能夠用它診斷和隔離網絡錯誤,并向上游提供商提供有關網絡狀態的有用報告。MTR 通過更大的采樣來跟蹤路由,就像 traceroute + ping 命令的組合。
網絡診斷工具包括 ping,traceroute 和 mtr,使用“ICMP”數據包來測試互聯網上兩點之間的節點和流量。當用戶在互聯網上 ping 主機時,會向主機發送一系列 ICMP 報文,主機通過發送報文進行響應。用戶的客戶端能夠計算互聯網上兩點之間的往返時間。相比之下,諸如 traceroute 和 MTR 之類的工具會以遞增增加的 TTL 發送 ICMP 數據包,以便查看數據包在源和目的地之間進行的路由或一系列跳數。 TTL 或生存時間控制數據包在“死亡”并返回主機之前將產生多少“跳”。通過發送一系列數據包,使它們在一跳之后死亡并返回,然后兩個,然后三個,客戶端機器能夠組合在因特網上的主機之間的流量所占用的路由。
MTR 收集關于中間主機的狀態,連接和響應性的其他信息,而不是簡單地概述流量跨越 Internet 的路由。
使用mtr:
測試到目標主機 example.com 的流量的路由和連接質量: mtr -rw example.com
如果沒有丟包丟失,可以使用更快的間隔時間運行:mtr -rwc 50 -i 0.2 example.com
參數說明:
r 選項標志生成報告(縮寫為–report) w 選項標志使用長版本的主機名,您可以看到每個跳的完整主機名(–report-wide的縮寫) c 選項標志設置報告中發送和記錄的數據包數量。當不使用時,默認值通常為 10,但是對于更快的間隔,您可能希望將其設置為50或100.報告可能需要較長時間才能完成 i 選項標志以更快的速率運行報告,以顯示只能在網絡擁塞期間發生的數據包丟失。該標志指示MTR每n秒發送一個數據包。默認值為1秒,因此將其設置為十分之一秒(0.1,0.2等)通常是有幫助的輸出參數的解釋:
Loss% 丟包率,單位是”%”; Snt sent包的數量 Last 最后一個包的延時 Avg 所有包的平均延時 Best 延時最小的包 Wrst 延時最大的包 StDev 標準偏差如何使用MTR診斷網絡問題:https://www.cnblogs.com/xzkzzz/p/7413177.html
批量主機服務掃描
批量主機存活掃描、針對主機服務掃描
能更方便快捷獲取網絡中主機的存活狀態;更加細致、只能獲取主機服務偵查情況
常用命令:nmap、ncat
nmap
NMap,也就是Network Mapper,是Linux下的網絡掃描和嗅探工具包。包含四項基本功能:
- 主機發現(Host Discovery)
- 端口掃描(Port Scanning)
- 版本偵測(Version Detection)
- 操作系統偵測(Operating System Detection)
nmap端口狀態解析:
open: 應用程序在該端口接收 TCP 連接或者 UDP 報文。 closed:關閉的端口對于nmap也是可訪問的, 它接收nmap探測報文并作出響應。但沒有應用程序在其上監聽。 filtered:由于包過濾阻止探測報文到達端口,nmap無法確定該端口是否開放。過濾可能來自專業的防火墻設備,路由規則 或者主機上的軟件防火墻。 unfiltered:未被過濾狀態意味著端口可訪問,但是nmap無法確定它是開放還是關閉。 只有用于映射防火墻規則集的 ACK 掃描才會把端口分類到這個狀態。 open | filtered:無法確定端口是開放還是被過濾, 開放的端口不響應就是一個例子。沒有響應也可能意味著報文過濾器丟棄了探測報文或者它引發的任何反應。UDP,IP協議,FIN, Null 等掃描會引起。 closed|filtered:(關閉或者被過濾的):無法確定端口是關閉的還是被過濾的主機發現:
-sP :進行ping掃描# nmap -sP 192.168.20.0/24 //打印出對ping掃描做出響應的主機,不做進一步測試(如端口掃描或者操作系統探測)可以用于探測局域網有哪些機器-sn: Ping Scan - disable port scan# nmap -sn 192.168.20.0/24-sA:發送tcp的ack包進行探測,可以探測主機是否存活# nmap -sA 192.168.20.0/24端口掃描:
掃描tcp端口:
# nmap 192.168.20.215 # nmap 192.168.20.215 -p 1-65535 //區別在于不加-p 時,顯示的都是已知協議的端口,對于未知協議的端口沒顯示 # nmap 192.168.20.215 -p 1-100,27017,27018 //連續的端口可以使用橫線連起來,端口之間可以使用逗號隔開指定端口范圍使用-p參數,如果不指定要掃描的端口,Nmap默認掃描從1到1024再加上nmap-services列出的端口,假如有的服務不在nmap-services,可能nmap就不會去掃描,這就是明明一些端口已經是處于監聽狀態,nmap默認沒掃描出來的原因,需要加入-p參數讓其掃描所有端口。
掃描udp端口:
# nmap -sU 192.168.20.215 //對于udp端口掃描比較慢-sU:表示udp scan , udp端口掃描-Pn:不對目標進行ping探測(不判斷主機是否在線)(直接掃描端口)掃描多個IP用法:
# nmap 192.168.20.215 192.168.20.216 // 中間用空格分開 # nmap 192.168.20.215,216 // 使用逗號分割 # nmap 192.168.20.215-218 // 掃描連續的ip地址 # nmap 192.168.20.0/24 // 掃描一個子網網段所有IP # nmap -iL ip.txt // 掃描文件里的IP # nmap 192.168.20.215-218 --exclude 192.168.20.217 // 掃描地址段是排除某個IP地址 # nmap 192.168.20.215-218 --exclude 192.168.20.216-217 //掃描時排除多個IP地址,排除連續的,可以使用橫線連接起來 # nmap 192.168.20.215-218 --exclude 192.168.20.216,192.168.20.217 //掃描時排除多個IP地址,排除分散的,使用逗號隔開 # nmap 192.168.20.215-218 --excludefile ex.txt //掃描多個地址時排除文件里的IP地址端口掃描的高級用法:
Tcp SYN Scan (-sS) //tcp半開放掃描(非3次握手的tcp掃描)優點:Nmap發送SYN包到遠程主機,但是它不會產生任何會話,目標主機幾乎不會把連接記入系統日志。(防止對方判斷為掃描攻擊),掃描速度快,效率高,在工作中使用頻率最高缺點:它需要root/administrator權限執行# nmap -sS 192.168.20.215Tcp connect() scan(-sT) //tcp全開放掃描(3次握手方式tcp的掃描)默認的掃描模式,不同于Tcp SYN掃描,Tcp connect()掃描需要完成三次握手,并且要求調用系統的connect().優點:你勿需root權限。普通用戶也可以使用。缺點:這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息,由于它要完成3次握手,效率低,速度慢,建議使用-sS# nmap -sT 192.168.20.215 等同于 # nmap 192.168.20.215Udp scan(-sU) //udp端口的掃描這種掃描技術用來尋找目標主機打開的UDP端口.它不需要發送任何的SYN包,因為這種技術是針對UDP端口的。UDP掃描發送UDP數據包到目標主機,并等待響應,如果返回ICMP不可達的錯誤消息,說明端口是關閉的,如果得到正確的適當的回應,說明端口是開放的.udp端口掃描速度比較慢# nmap -sU 192.168.20.215FIN scan (-sF) //也是tcp的掃描一種,發送一個FIN標志的數據包有時候TcpSYN掃描不是最佳的掃描模式,因為有防火墻的存在.目標主機有時候可能有IDS和IPS系統的存在,防火墻會阻止掉SYN數據包。發送一個設置了FIN標志的數據包并不需要完成TCP的握手.和sS掃描效果差不多,比sT速度快# nmap -sF 192.168.20.215版本偵測:
-sV:版本檢測(sV),用來掃描目標主機和端口上運行的軟件的版本
操作系統偵測:
Nmap最重要的特點之一是能夠遠程檢測操作系統和軟件,Nmap的OS檢測技術在滲透測試中用來了解遠程主機的操作系統和軟件是非常有用的,通過獲取的信息你可以知道已知的漏洞。Nmap有一個名為的nmap-OS-DB數據庫,該數據庫包含超過2600操作系統的信息。 Nmap把TCP和UDP數據包發送到目標機器上,然后檢查結果和數據庫對照。
參考鏈接:
https://www.cnblogs.com/nmap/p/6232207.html
https://www.cnblogs.com/hanxiaobei/p/5603491.html
ncat
nc是netcat的簡寫,有著網絡界的瑞士軍刀美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具。
nc的作用:
- 實現任意TCP/UDP端口的偵聽,nc可以作為server以TCP或UDP方式偵聽指定端口
- 端口的掃描,nc可以作為client發起TCP或UDP連接
- 機器之間傳輸文件
- 機器之間網絡測速
常用參數:
-l:用于指定nc將處于偵聽模式。指定該參數,則意味著nc被當作server,偵聽并接受連接,而非向其它地址發起連接。 -s:指定發送數據的源IP地址,適用于多網卡機 -u:指定nc使用UDP協議,默認為TCP -v:輸出交互或出錯信息,新手調試時尤為有用 -w:超時秒數,后面跟數字 -z:表示zero,表示掃描時不發送任何數據組合參數:-zvw用法:
用法一:網絡連通性測試和端口掃描
nc可以作為server端啟動一個tcp的監聽:
nc作為server端啟動一個udp的監聽:-u
在192.168.20.215機器上啟動一個udp的監聽端口 # nc -ul 9999客戶端測試: //udp的端口無法在客戶端使用telnet去測試 # nc -zuvw 2 192.168.20.215 9999 Connection to 192.168.20.215 9999 port [udp/distinct] succeeded!用法二:使用nc傳輸文件和目錄
方法1:傳輸文件演示(先啟動接收命令)
把151機器上的一文件發送到215機器上 //receiver先偵聽端口,sender向receiver所在機器的該端口發送數據。
215機器接收完畢,它會自動退出監聽,文件大小和A機器一樣,md5值也一樣
# ll system_optimization.sh -rw-r--r-- 1 root root 4176 Apr 21 16:20 system_optimization.sh # ll test.sh -rw-r--r--. 1 root root 4176 4月 9 13:20 test.sh方法2:傳輸文件演示(先啟動發送命令)
1.先在151機器上,啟動發送文件命令 # nc -l 9998 < php-5.6.35.tar.gz //通過本地的9998端口發送php-5.6.35.tar.gz文件2.在215機器上接受文件 # nc 192.168.20.151 9998 > php.tar.gz方法3:傳輸目錄演示(方法發送文件類似)
1.在215機器上啟動監聽 # nc -l 9999 | tar zxf - //傳輸目錄需要結合其它的命令,比如tar2.151機器上打包文件發送給215機器 # tar zcf - * | nc 192.168.20.215 9999 //管道前面表示把當前目錄的所有文件打包為 - ,然后使用nc發送給215機器用法三:測試網速
測試網速其實利用了傳輸文件的原理,就是把來自一臺機器的/dev/zero 發送給另一臺機器的/dev/null
就是把一臺機器的無限個0,傳輸給另一個機器的空設備上,然后新開一個窗口使用dstat命令監測網速
在復制的窗口上使用dstat命令查看當前網速,dstat命令比較直觀,它可以查看當前cpu,磁盤,網絡,內存頁和系統的一些當前狀態指標。
我們只需要看下面net/total這2列即可,recv是receive的縮寫,表示接收的意思,send是發送數據,另外注意數字后面的單位B,KB,MB。
參考鏈接:https://www.cnblogs.com/nmap/p/6148306.html
防攻擊介紹
常見的攻擊方法:
- SYN攻擊:利用TCP協議缺陷進行,導致系統服務停止響應,網絡帶寬跑滿或者響應緩慢
- DDOS攻擊:分布式訪問拒絕服務攻擊
- 惡意掃描
syn攻擊示意圖:
SYN類型DDOS攻擊預防:
linux下其他預防策略:
策略1.關閉ICMP協議請求 sysctl -w net.ipv4.icmp_echo_ignore_all=1策略2.通過iptables防止掃描 iptables -A FORWARD -p tcp -syn -m limit --limit 1/s --limit-burst 5 -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT總結
以上是生活随笔為你收集整理的常用linux系统扫描命令汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: simulink中mpc模块怎么使用_s
- 下一篇: Mac WIn7 QQ聊天记录互导