Ⅰ Linux下安裝及簡單使用nmap/zenmap
nmap :也就是Network Mapper
nmap是一個網路連接端掃描軟體,用來掃描網上電腦開放的網路連接端。確定哪些服務運行在哪些連接端,它是網路管理員必用的軟體之一,以及用以評估網路系統安全。
個人使用主要的功能就是 監測伺服器開發的埠用於判斷是否被攻擊,當然他的功能不止於此 剩下的就靠大家去探尋了
比如:
檢測網路上的主機
檢測主機上開放的埠
檢測操作系統,硬體地址,以及軟體版本
檢測脆弱性的漏洞(Nmap的腳本)
簡單介紹完了下面開始安裝
安裝非常之簡單
命令:yum install nmap
安裝後可執行命令: nmap -h 查看幫助文檔,如有幫助文檔則表示安裝成功。
只需要一條命令就可以了
1.nmap 127.0.0.1 查看本機開放的埠,會掃描所有埠。 當然也可以掃描其它伺服器埠。
2.-sP :進行ping掃描
列印出對ping掃描做出響應的主機,不做進一步測試(如埠掃描或者操作系統探測):
下面去掃描10.0.3.0/24這個網段的的主機
nmap -sP 10.0.3.0/24
3.-sS :半開放掃描(非3次握手的tcp掃描)
使用頻率最高的掃描選項:SYN掃描,又稱為半開放掃描,它不打開一個完全的TCP連接,執行得很快,效率高
(一個完整的tcp連接需要3次握手,而-sS選項不需要3次握手)
Tcp SYN Scan (sS) 它被稱為半開放掃描
優點:Nmap發送SYN包到遠程主機,但是它不會產生任何會話,目標主機幾乎不會把連接記入系統日誌。(防止對方判斷為掃描攻擊),掃描速度快,效率高,在工作中使用頻率最高
缺點:它需要root/administrator許可權執行
nmap -sS 10.0.1.161
Ⅱ windows版 nessus怎麼掃描linux漏洞
漏洞掃描就是對計算機系統或者其它網路設備進行安全相關的檢測,以找出安全隱患和可被黑客利用的漏洞。顯然,漏洞掃描軟體是把雙刃劍,黑客利用它入侵系統,而系統管理員掌握它以後又可以有效的防範黑客入侵。因此,漏洞掃描是保證系統和網路安全必不可少的手段,必須仔細研究利用。
漏洞掃描通常採用兩種策略,第一種是被動式策略,第二種是主動式策略。所謂被動式策略就是基於主機之上,對系統中不合適的設置,脆弱的口令以及其他同安全規則抵觸的對象進行檢查;而主動式策略是基於網路的,它通過執行一些腳本文件模擬對系統進行攻擊的行為並記錄系統的反應,從而發現其中的漏洞。利用被動式策略掃描稱為系統安全掃描,利用主動式策略掃描稱為網路安全掃描。
Nessus是一個功能強大而又易於使用的遠程安全掃描器。安全掃描器的功能是對指定網路進行安全檢查,找出該網路是否存在有導致對手攻擊的安全漏洞。該系統被設計為client/sever模式,伺服器端負責進行安全檢查,客戶端用來配置管理伺服器端。在服務端還採用了plug-in的體系,允許用戶加入執行特定功能的插件,這插件可以進行更快速和更復雜的安全檢查。在Nessus中還採用了一個共享的信息介面,稱之知識庫,其中保存了前面進行檢查的結果。檢查的結果可以HTML、純文本、LaTeX(一種文本文件格式)等幾種格式保存。
Nessus的優點在於:
1. 其採用了基於多種安全漏洞的掃描,避免了掃描不完整的情況。
2. 它是免費的,比起商業的安全掃描工具如ISS具有價格優勢。
(1)安裝和啟動Nessus伺服器端
以Nessus-4.2.0-es5.i386.rpmNessus使用為例,使用如下的命令對其進行安裝即可:
[root@localhost tmp]# rpm -ivh Nessus-4.2.0-es5.i386.rpm
安裝成功後,還需要添加用戶來對其進行操作,步驟如下所示:
[root@localhost tmp]# /opt/nessus//sbin/nessus-adser
//添加用戶
Login : root
//設置密碼
Login password :
Login password (again) :
啟動nessus非常簡單,使用如下命令即可:
#/sbin/service nessusd start
(2)安裝Nessus客戶端
nessus的客戶端有兩個版本,JAVA版本及C版本,JAVA版本的可以在多個平台中運行,C版本的支持Windows,有了這兩個客戶端的版本就可以在區域網的任何的一台機器上進行安全檢查了。為了使用的簡單起見,我們選擇了一款Windows系統下的Nessus 4客戶端版本進行安裝和使用,也就是使用Windows客戶端來控制運行於Linux下的Nessus伺服器端來對區域網裡面的機器進行漏洞掃描,這也是目前Nessus使用的非常流行的一種方式。具體的安裝如同Windows下任何一款應用軟體的安裝方式相同,非常簡單,這里不再贅述。
3、五步完成Nessus掃描
下面來看看使用nessus進行掃描的步驟以及效果,一般來說,使用Nessus進行掃描需要有如下5個步驟:
(1)設置伺服器連接:如圖1所示,首先需要設置Nessus客戶端來連接Nessus伺服器,在圖1中,配置好相應的主機名和埠,以及登陸所需要使用的用戶名和密碼。
(2)設置IP范圍:如圖2所示,設置為IP Range。當然,這里還有其他的選項可提供選擇,包括圖中所示的Single Host、Subnet等,可以根據實際情況來選擇。
(3)點擊scan now,開始對設定范圍進行掃描:如圖5所示。
(4)掃描的整體效果:如圖4所示,掃描給出了對172.31.12.188這台主機(Linux操作系統,RHEL 5.0版本)的掃描結果,可以很清晰看出操作系統的版本以及開放的埠,同時,也能夠將開放的埠詳細信息列出來。
(5)查看具體的漏洞信息:如圖5所示,如果想查看具體的漏洞信息報告以及漏洞等級等詳細信息時,可以點開圖中所示的對應開放埠信息,並針對具體信息採取相應的措施來對該漏洞進行修補等操作。
Ⅲ Linux要怎樣能運行腳本
linux怎麼運行腳本呢,下面就讓我們來看看吧。
1、打開linux系統,在linux的桌面的空白處右擊。
2、在彈出的下拉選項里,點擊打開終端。
3、執行腳本需要有執行限,在終端窗口中輸入chmo+xfile.sh命令。
4、輸入bashfile.sh命令,回車後即可運行腳本。
以上就是小編的分享,希望能幫助的大家。
Ⅳ Kali Linux 網路掃描秘籍 第三章 埠掃描(二)
執行 TCP 埠掃描的一種方式就是執行一部分。目標埠上的 TCP 三次握手用於識別埠是否接受連接。這一類型的掃描指代隱秘掃描, SYN 掃描,或者半開放掃描。這個秘籍演示了如何使用 Scapy 執行 TCP 隱秘掃描。
為了使用 Scapy 執行 TCP 隱秘 掃描,你需要一個運行 TCP 網路服務的遠程伺服器。這個例子中我們使用 Metasploitable2 實例來執行任務。配置 Metasploitable2 的更多信息請參考第一章中的「安裝 Metasploitable2」秘籍。
此外,這一節也需要編寫腳本的更多信息,請參考第一章中的「使用文本編輯器*VIM 和 Nano)。
為了展示如何執行 SYN 掃描,我們需要使用 Scapy 構造 TCP SYN 請求,並識別和開放埠、關閉埠以及無響應系統有關的響應。為了向給定埠發送 TCP SYN 請求,我們首先需要構建請求的各個層面。我們需要構建的第一層就是 IP 層:
為了構建請求的 IP 層,我們需要將 IP 對象賦給變數 i 。通過調用 display 函數,我們可以確定對象的屬性配置。通常,發送和接受地址都設為回送地址, 127.0.0.1 。這些值可以通過修改目標地址來修改,也就是設置 i.dst 為想要掃描的地址的字元串值。通過再次調用 dislay 函數,我們看到不僅僅更新的目標地址,也自動更新了和默認介面相關的源 IP 地址。現在我們構建了請求的 IP 層,我們可以構建 TCP 層了。
為了構建請求的 TCP 層,我們使用和 IP 層相同的技巧。在這個立即中, TCP 對象賦給了 t 變數。像之前提到的那樣,默認的配置可以通過調用 display 函數來確定。這里我們可以看到目標埠的默認值為 HTTP 埠 80。對於我們的首次掃描,我們將 TCP 設置保留默認。現在我們創建了 TCP 和 IP 層,我們需要將它們疊放來構造請求。
我們可以通過以斜杠分離變數來疊放 IP 和 TCP 層。這些層面之後賦給了新的變數,它代表整個請求。我們之後可以調用 dispaly 函數來查看請求的配置。一旦構建了請求,可以將其傳遞給 sr1 函數來分析響應:
相同的請求可以不通過構建和堆疊每一層來執行。反之,我們使用單獨的一條命令,通過直接調用函數並傳遞合適的參數:
要注意當 SYN 封包發往目標 Web 伺服器的 TCP 埠 80,並且該埠上運行了 HTTP 服務時,響應中會帶有 TCP 標識 SA 的值,這表明 SYN 和 ACK 標識都被激活。這個響應表明特定的目標埠是開放的,並接受連接。如果相同類型的封包發往不接受連接的埠,會收到不同的請求。
當 SYN 請求發送給關閉的埠時,返回的響應中帶有 TCP 標識 RA,這表明 RST 和 ACK 標識為都被激活。ACK 為僅僅用於承認請求被接受,RST 為用於斷開連接,因為埠不接受連接。作為替代,如果 SYN 封包發往崩潰的系統,或者防火牆過濾了這個請求,就可能接受不到任何信息。由於這個原因,在 sr1 函數在腳本中使用時,應該始終使用 timeout 選項,來確保腳本不會在無響應的主機上掛起。
如果函數對無響應的主機使用時, timeout 值沒有指定,函數會無限繼續下去。這個演示中, timout 值為 1秒,用於使這個函數更加完備,響應的值可以用於判斷是否收到了響應:
Python 的使用使其更易於測試變數來識別 sr1 函數是否對其復制。這可以用作初步檢驗,來判斷是否接收到了任何響應。對於接收到的響應,可以執行一系列後續檢查來判斷響應表明埠開放還是關閉。這些東西可以輕易使用 Python 腳本來完成,像這樣:
在這個 Python 腳本中,用於被提示來輸入 IP 地址,腳本之後會對定義好的埠序列執行 SYN 掃描。腳本之後會得到每個連接的響應,並嘗試判斷響應的 SYN 和 ACK 標識是否激活。如果響應中出現並僅僅出現了這些標識,那麼會輸出相應的埠號碼。
運行這個腳本之後,輸出會顯示所提供的 IP 地址的系統上,前 100 個埠中的開放埠。
這一類型的掃描由發送初始 SYN 封包給遠程系統的目標 TCP 埠,並且通過返回的響應類型來判斷埠狀態來完成。如果遠程系統返回了 SYN+ACK 響應,那麼它正在准備建立連接,我們可以假設這個埠開放。如果服務返回了 RST 封包,這就表明埠關閉並且不接收連接。此外,如果沒有返回響應,掃描系統和遠程系統之間可能存在防火牆,它丟棄了請求。這也可能表明主機崩潰或者目標 IP 上沒有關聯任何系統。
Nmap 擁有可以執行遠程系統 SYN 掃描的掃描模式。這個秘籍展示了如何使用 Namp 執行 TCP 隱秘掃描。
為了使用 Nmap 執行 TCP 隱秘掃描,你需要一個運行 TCP 網路服務的遠程伺服器。這個例子中我們使用 Metasploitable2 實例來執行任務。配置 Metasploitable2 的更多信息請參考第一章中的「安裝 Metasploitable2」秘籍。
就像多數掃描需求那樣,Nmap 擁有簡化 TCP 隱秘掃描執行過程的選項。為了使用 Nmap 執行 TCP 隱秘掃描,應使用 -sS 選項,並附帶被掃描主機的 IP 地址。
在提供的例子中,特定的 IP 地址的 TCP 80 埠上執行了 TCP 隱秘掃描。和 Scapy 中的技巧相似,Nmap 監聽響應並通過分析響應中所激活的 TCP 標識來識別開放埠。我們也可以使用 Namp 執行多個特定埠的掃描,通過傳遞逗號分隔的埠號列表。
在這個例子中,目標 IP 地址的埠 21、80 和 443 上執行了 SYN 掃描。我們也可以使用 Namp 來掃描主機序列,通過標明要掃描的第一個和最後一個埠號,以破折號分隔:
在所提供的例子中,SYN 掃描在 TCP 20 到 25 埠上執行。除了擁有指定被掃描埠的能力之外。Nmap 同時擁有配置好的 1000 和常用埠的列表。我們可以執行這些埠上的掃描,通過不帶任何埠指定信息來運行 Nmap:
在上面的例子中,掃描了 Nmap 定義的 1000 個常用埠,用於識別 Metasploitable2 系統上的大量開放埠。雖然這個技巧在是被多數設備上很高效,但是也可能無法識別模糊的服務或者不常見的埠組合。如果掃描在所有可能的 TCP 埠上執行,所有可能的埠地址值都需要被掃描。定義了源埠和目標埠地址的 TCP 頭部部分是 16 位長。並且,每一位可以為 1 或者 0。因此,共有 2 ** 16 或者 65536 個可能的 TCP 埠地址。對於要掃描的全部可能的地址空間,需要提供 0 到 65535 的埠范圍,像這樣:
這個例子中,Metasploitable2 系統上所有可能的 65536 和 TCP 地址都掃描了一遍。要注意該掃描中識別的多數服務都在標準的 Nmap 1000 掃描中識別過了。這就表明在嘗試識別目標的所有可能的攻擊面的時候,完整掃描是個最佳實踐。Nmap 可以使用破折號記法,掃描主機列表上的 TCP 埠:
這個例子中,TCP 80 埠的 SYN 掃描在指定地址范圍內的所有主機上執行。雖然這個特定的掃描僅僅執行在單個埠上,Nmap 也能夠同時掃描多個系統上的多個埠和埠范圍。此外,Nmap 也能夠進行配置,基於 IP 地址的輸入列表來掃描主機。這可以通過 -iL 選項並指定文件名,如果文件存放於執行目錄中,或者文件路徑來完成。Nmap 之後會遍歷輸入列表中的每個地址,並對地址執行特定的掃描。
Nmap SYN 掃描背後的底層機制已經討論過了。但是,Nmap 擁有多線程功能,是用於執行這類掃描的快速高效的方式。
除了其它已經討論過的工具之外,Metasploit 擁有用於 SYN 掃描的輔助模塊。這個秘籍展示了如何使用 Metasploit 來執行 TCP 隱秘掃描。
為了使用 Metasploit 執行 TCP 隱秘掃描,你需要一個運行 TCP 網路服務的遠程伺服器。這個例子中我們使用 Metasploitable2 實例來執行任務。配置 Metasploitable2 的更多信息請參考第一章中的「安裝 Metasploitable2」秘籍。
Metasploit 擁有可以對特定 TCP 埠執行 SYN 掃描的輔助模塊。為了在 Kali 中啟動 Metasploit,我們在終端中執行 msfconsole 命令。
為了在 Metasploit 中執行 SYN 掃描,以輔助模塊的相對路徑調用 use 命令。一旦模塊被選中,可以執行 show options 命令來確認或修改掃描配置。這個命令會展示四列的表格,包括 name 、 current settings 、 required 和 description 。 name 列標出了每個可配置變數的名稱。 current settings 列列出了任何給定變數的現有配置。 required 列標出對於任何給定變數,值是否是必須的。 description 列描述了每個變數的功能。任何給定變數的值可以使用 set 命令,並且將新的值作為參數來修改。
在上面的例子中, RHOSTS 值修改為我們打算掃描的遠程系統的 IP 地址。地外,線程數量修改為 20。 THREADS 的值定義了在後台執行的當前任務數量。確定線程數量涉及到尋找一個平衡,既能提升任務速度,又不會過度消耗系統資源。對於多數系統,20 個線程可以足夠快,並且相當合理。 PORTS 值設為 TCP 埠 80(HTTP)。修改了必要的變數之後,可以再次使用 show options 命令來驗證。一旦所需配置驗證完畢,就可以執行掃描了。
上面的例子中,所指定的遠程主機的錢 100 個 TCP 埠上執行了 TCP SYN 掃描。雖然這個掃描識別了目標系統的多個設備,我們不能確認所有設備都識別出來,除非所有可能的埠地址都掃描到。定義來源和目標埠地址的TCP 頭部部分是 16 位長。並且,每一位可以為 1 或者 0。因此,共有 2 ** 16 或 65536 個可能的 TCP 埠地址。對於要掃描的整個地址空間,需要提供 0 到 65535 的 埠范圍,像這樣:
在這個李忠,遠程系統的所有開放埠都由掃描所有可能的 TCP 埠地址來識別。我們也可以修改掃描配置使用破折號記法來掃描地址序列。
這個例子中,TCP SYN 掃描執行在由 RHOST 變數指定的所有主機地址的 80 埠上。與之相似, RHOSTS 可以使用 CIDR 記法定義網路范圍。
Metasploit SYN 掃描輔助模塊背後的底層原理和任何其它 SYN 掃描工具一樣。對於每個被掃描的埠,會發送 SYN 封包。SYN+ACK 封包會用於識別活動服務。使用 MEtasploit 可能更加有吸引力,因為它擁有交互控制台,也因為它是個已經被多數滲透測試者熟知的工具。
除了我們之前學到了探索技巧,hping3 也可以用於執行埠掃描。這個秘籍展示了如何使用 hping3 來執行 TCP 隱秘掃描。
為了使用 hping3 執行 TCP 隱秘掃描,你需要一個運行 TCP 網路服務的遠程伺服器。這個例子中我們使用 Metasploitable2 實例來執行任務。配置 Metasploitable2 的更多信息請參考第一章中的「安裝 Metasploitable2」秘籍。
除了我們之前學到了探索技巧,hping3 也可以用於執行埠掃描。為了使用 hping3 執行埠掃描,我們需要以一個整數值使用 --scan 模式來指定要掃描的埠號。
上面的例子中,SYN 掃描執行在指定 IP 地址的 TCP 埠 80 上。 -S 選項指明了發給遠程系統的封包中激活的 TCP 標識。表格展示了接收到的響應封包中的屬性。我們可以從輸出中看到,接收到了SYN+ACK 響應,所以這表示目標主機埠 80 是開放的。此外,我們可以通過輸入夠好分隔的埠號列表來掃描多個埠,像這樣:
在上面的掃描輸出中,你可以看到,僅僅展示了接受到 SYN+ACK 標識的結果。要注意和發送到 443 埠的 SYN 請求相關的響應並沒有展示。從輸出中可以看出,我們可以通過使用 -v 選項增加詳細讀來查看所有響應。此外,可以通過傳遞第一個和最後一個埠地址值,來掃描埠范圍,像這樣:
這個例子中,100 個埠的掃描足以識別 Metasploitable2 系統上的服務。但是,為了執行 所有 TCP 埠的掃描,需要掃描所有可能的埠地址值。定義了源埠和目標埠地址的 TCP 頭部部分是 16 位長。並且,每一位可以為 1 或者 0。因此,共有 2 ** 16 或者 65536 個可能的 TCP 埠地址。對於要掃描的全部可能的地址空間,需要提供 0 到 65535 的埠范圍,像這樣:
hping3 不用於一些已經提到的其它工具,因為它並沒有 SYN 掃描模式。但是反之,它允許你指定 TCP 封包發送時的激活的 TCP 標識。在秘籍中的例子中, -S 選項讓 hping3 使用 TCP 封包的 SYN 標識。
在多數掃描工具當中,TCP 連接掃描比 SYN 掃描更加容易。這是因為 TCP 連接掃描並不需要為了生成和注入 SYN 掃描中使用的原始封包而提升許可權。Scapy 是它的一大例外。Scapy 實際上非常難以執行完全的 TCP 三次握手,也不實用。但是,出於更好理解這個過程的目的,我們來看看如何使用 Scapy 執行連接掃描。
為了使用 Scapy 執行全連接掃描,你需要一個運行 UDP 網路服務的遠程伺服器。這個例子中我們使用 Metasploitable2 實例來執行任務。配置 Metasploitable2 的更多信息請參考第一章中的「安裝 Metasploitable2」秘籍。
此外,這一節也需要編寫腳本的更多信息,請參考第一章中的「使用文本編輯器*VIM 和 Nano)。
Scapy 中很難執行全連接掃描,因為系統內核不知道你在 Scapy 中發送的請求,並且嘗試阻止你和遠程系統建立完整的三次握手。你可以在 Wireshark 或 tcpmp 中,通過發送 SYN 請求並嗅探相關流量來看到這個過程。當你接收到來自遠程系統的 SYN+ACK 響應時,Linux 內核會攔截它,並將其看做來源不明的響應,因為它不知道你在 Scapy 中 發送的請求。並且系統會自動使用 TCP RST 封包來回復,因此會斷開握手過程。考慮下面的例子:
這個 Python 腳本的例子可以用做 POC 來演系統破壞三次握手的問題。這個腳本假設你將帶有開放埠活動系統作為目標。因此,假設 SYN+ACK 回復會作為初始 SYN 請求的響應而返回。即使發送了最後的 ACK 回復,完成了握手,RST 封包也會阻止連接建立。我們可以通過觀察封包發送和接受來進一步演示。
在這個 Python 腳本中,每個發送的封包都在傳輸之前展示,並且每個收到的封包都在到達之後展示。在檢驗每個封包所激活的 TCP 標識的過程中,我們可以看到,三次握手失敗了。考慮由腳本生成的下列輸出:
在腳本的輸出中,我們看到了四個封包。第一個封包是發送的 SYN 請求,第二個封包時接收到的 SYN+ACK 回復,第三個封包時發送的 ACK 回復,之後接收到了 RST 封包,它是最後的 ACK 回復的響應。最後一個封包表明,在建立連接時出現了問題。Scapy 中可能能夠建立完成的三次握手,但是它需要對本地 IP 表做一些調整。尤其是,如果你去掉發往遠程系統的 TSR 封包,你就可以完成握手。通過使用 IP 表建立過濾機制,我們可以去掉 RST 封包來完成三次握手,而不會干擾到整個系統(這個配置出於功能上的原理並不推薦)。為了展示完整三次握手的成功建立,我們使用 Netcat 建立 TCP 監聽服務。之後嘗試使用 Scapy 連接開放的埠。
這個例子中,我們在 TCP 埠 4444 開啟了監聽服務。我們之後可以修改之前的腳本來嘗試連接 埠 4444 上的 Netcat 監聽服務。
這個腳本中,SYN 請求發送給了監聽埠。收到 SYN+ACK 回復之後,會發送 ACK回復。為了驗證連接嘗試被系統生成的 RST 封包打斷,這個腳本應該在 Wireshark 啟動之後執行,來捕獲請求蓄力。我們使用 Wireshark 的過濾器來隔離連接嘗試序列。所使用的過濾器是 tcp && (ip.src == 172.16.36.135 || ip.dst == 172.16.36.135) 。過濾器僅僅用於展示來自或發往被掃描系統的 TCP 流量。像這樣:
既然我們已經精確定位了問題。我們可以建立過濾器,讓我們能夠去除系統生成的 RST 封包。這個過濾器可以通過修改本地 IP 表來建立:
在這個例子中,本地 IP 表的修改去除了所有發往被掃描主機的目標地址的 TCP RST 封包。 list 選項隨後可以用於查看 IP 表的條目,以及驗證配置已經做了修改。為了執行另一次連接嘗試,我們需要確保 Natcat 仍舊監聽目標的 4444 埠,像這樣:
和之前相同的 Python 腳本可以再次使用,同時 WIreshark 會捕獲後台的流量。使用之前討論的顯示過濾器,我們可以輕易專注於所需的流量。要注意三次握手的所有步驟現在都可以完成,而不會收到系統生成的 RST 封包的打斷,像這樣:
此外,如果我們看一看運行在目標系統的 Netcat 服務,我們可以注意到,已經建立了連接。這是用於確認成功建立連接的進一步的證據。這可以在下面的輸出中看到:
雖然這個練習對理解和解決 TCP 連接的問題十分有幫助,恢復 IP 表的條目也十分重要。RST 封包 是 TCP 通信的重要組成部分,去除這些響應會影響正常的通信功能。洗嘜按的命令可以用於刷新我們的 iptable 規則,並驗證刷新成功:
就像例子中展示的那樣, flush 選項應該用於清楚 IP 表的條目。我們可以多次使用 list 選項來驗證 IP 表的條目已經移除了。
執行 TCP 連接掃描的同居通過執行完整的三次握手,和遠程系統的所有被掃描埠建立連接。埠的狀態取決於連接是否成功建立。如果連接建立,埠被認為是開放的,如果連接不能成功建立,埠被認為是關閉的。
Ⅳ 如何編寫自己的Linux安全檢查腳本
腳本大致內容: 基本信息統計(IP地址、MAC地址、埠信息、服務信息等)、主機安全檢查(包括等保三級要求主機相關的檢查點)、系統性能統計(暫時未加入分析)、惡意代碼、程序檢查等檢查點。
腳本內容涉及到:
1、查看系統密碼文件修改時間
2、查看是否開啟了ssh服務
3、查看系統SSH遠程訪問設置策略(host.deny拒絕列表)
4、查看shell是否設置超時鎖定策略
5、查看syslog日誌審計服務是否開啟
6、查看syslog日誌是否開啟外發
7、查看passwd文件中有哪些特權用戶
8、查看系統中是否存在空口令賬戶
9、PHP、JSP、perl、Python、HTML、以及linux下可執行文件內容的檢查
裡面列舉了一些常見webshell、提權EXP、以及Python掃描工具、嗅探工具的特徵,如果發現此類相關的文件,則會顯示出來,或者拷貝一份到/tmp/目錄下
例如:能掃描到的linux下提權工具:
一共是172個文件。都可以掃描的到。。。。
其實整個腳本相對起來比較簡單,主要用到的命令為
find / -type
if語句
awk命令
more
egrep
等命令組成。
比如說awk命令,我們用more或cat命令,讀取某個文件內容,然後通過awk進行篩選和輸出,來顯示我們想要看的東西
例如:
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' '{if($2!=90){print "/etc/login.defs裡面的"$1 "設置的是"$2"天,請管理員改成90天。"}}'
從這里我們可以看到,通過more來打開/etc/login.defs文件,並查找關鍵字 「PASS_MAX_DAYS」, 用awk命令,篩選以」為分隔符的內容,用作判斷,如果$2第二個分隔符位置的內容不等於90,則輸出該內容。
同理,任意針對文件內容做篩選的結果,都可以通過這樣的方式去顯示我們想要顯示的內容。
又例如:
echo "查看系統中存在哪些非系統默認用戶"
echo "root:x:「該值大於500為新創建用戶,小於或等於500為系統初始用戶」"
more /etc/passwd |awk -F ":" '{if($3>500){print "/etc/passwd裡面的"$1 "的值為"$3",請管理員確認該賬戶是否正常。"}}'
echo ------------------------------------------------------------------------
if語句相關:
echo --------------------------------------------------------------------------
echo "檢查系統文件完整性2(MD5檢查)"
echo "該項會獲取部分關鍵文件的MD5值並入庫,默認保存在/etc/md5db中"
echo "如果第一次執行,則會提示md5sum: /sbin/portmap: 沒有那個文件或目錄"
echo "第二次重復檢查時,則會對MD5DB中的MD5值進行匹配,來判斷文件是否被更改過"
file="/etc/md5db"
if [ -e "$file" ]; then md5sum -c /etc/md5db 2>&1;
else
md5sum /etc/passwd >>/etc/md5db
md5sum /etc/shadow >>/etc/md5db
md5sum /etc/group >>/etc/md5db
md5sum /usr/bin/passwd >>/etc/md5db
md5sum /sbin/portmap>>/etc/md5db
md5sum /bin/login >>/etc/md5db
md5sum /bin/ls >>/etc/md5db
md5sum /bin/ps >>/etc/md5db
md5sum /usr/bin/top >>/etc/md5db;
fi
echo ----------------------------------------------------------------------
這里呢,對部分敏感文件的MD5值做了下驗證,大致思路是,先檢查 /etc/md5db 是否存在,如果不存在的話,則將所涉及文件的MD5值入庫,並保存到 /etc/md5db文件中,當我們第二次對伺服器進行檢查時,則會對比兩次的MD5值,如果MD5值發生變化,則會進行提醒。
腳本本身沒什麼復雜的東西,我先貼出部分內容,供大家參考下。
#!/bin/bash
echo " (__)"
echo " (oo)"
echo " /------\/ "
echo " / | || "
echo " * /\---/\ "
echo " ~~ ~~ "
echo "...."Are You Ready?"..."
read key
echo "警告:本腳本只是一個檢查的操作,未對伺服器做任何修改,管理員可以根據此報告進行相應的設置。"
echo ---------------------------------------主機安全檢查-----------------------
echo "系統版本"
uname -a
echo --------------------------------------------------------------------------
echo "本機的ip地址是:"
ifconfig | grep --color "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
echo --------------------------------------------------------------------------
awk -F":" '{if($2!~/^!|^*/){print "("$1")" " 是一個未被鎖定的賬戶,請管理員檢查是否需要鎖定它或者刪除它。"}}' /etc/shadow
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' '{if($2!=90){print "/etc/login.defs裡面的"$1 "設置的是"$2"天,請管理員改成90天。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MIN_LEN" | grep -v "#" |awk -F' ' '{if($2!=6){print "/etc/login.defs裡面的"$1 "設置的是"$2"個字元,請管理員改成6個字元。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_WARN_AGE" | grep -v "#" |awk -F' ' '{if($2!=10){print "/etc/login.defs裡面的"$1 "設置的是"$2"天,請管理員將口令到期警告天數改成10天。"}}'
echo --------------------------------------------------------------------------
grep TMOUT /etc/profile /etc/bashrc > /dev/null|| echo "未設置登錄超時限制,請設置之,設置方法:在/etc/profile或者/etc/bashrc裡面添加TMOUT=600參數"
echo --------------------------------------------------------------------------
if ps -elf |grep xinet |grep -v "grep xinet";then
echo "xinetd 服務正在運行,請檢查是否可以把xinnetd服務關閉"
else
echo "xinetd 服務未開啟"
fi
echo --------------------------------------------------------------------------
echo "查看系統密碼文件修改時間"
ls -ltr /etc/passwd
echo --------------------------------------------------------------------------
echo "查看是否開啟了ssh服務"
if service sshd status | grep -E "listening on|active \(running\)"; then
echo "SSH服務已開啟"
else
echo "SSH服務未開啟"
fi
echo --------------------------------------------------------------------------
echo "查看是否開啟了TELNET服務"
if more /etc/xinetd.d/telnetd 2>&1|grep -E "disable=no"; then
echo "TELNET服務已開啟 "
else
echo "TELNET服務未開啟 "
fi
echo --------------------------------------------------------------------------
echo "查看系統SSH遠程訪問設置策略(host.deny拒絕列表)"
if more /etc/hosts.deny | grep -E "sshd: ";more /etc/hosts.deny | grep -E "sshd"; then
echo "遠程訪問策略已設置 "
else
echo "遠程訪問策略未設置 "
fi
echo --------------------------------------------------------------------------
Ⅵ 如何執行linux下的腳本
在
linux
下執行
php
腳本時通常是可以使用以下命令:
#/usr/local/php/bin/php test.php為簡化輸入可把此php執行程序
到系統命令目錄下:
#cp /usr/local/php/bin/php /usr/sbin/驗證:輸入以下命令,如正確獲取
php
版本,說明操作成功。
#php -v這樣,以後再執行php腳本時可直接採用以下輸入方式即可。
#php a.php
Ⅶ Linux下nmap掃描埠shell腳本
安裝nmap後(ubuntu通過apt-get
install
nmap安裝),運行下列命令即可
nmap
-p0-65535
目標ip地址
常用的掃描類型:
1、-sP(ping的方式掃描,檢查主機在線與否,不發送任何報文到目的主機,想知道目標主機是否運行,而不想進行其它掃描,這掃描方式很常用)
2、-sL(僅僅列網段內出主機的狀態、埠等信息,查詢埠的話用
-p
port,port1……)
3、
-PS/PA/PU
[portlist](根據給定的埠用TCP或UDP報文探測:對於root用戶,這個選項讓nmap使用SYN包而不是ACK包來對目標主機進行掃描。如果主機正在運行就返回一個RST包(或者一個SYNACK包))
4、-sS(TCP同步掃描(TCP
SYN):發出一個TCP同步包(SYN),然後等待回對方應)
5、
-sF
-sF
-sN(秘密FIN數據包掃描、聖誕樹
(Xmas
Tree)、空(Null)掃描模式使用-sF、-sX或者-sN掃描顯示所有的埠都是關閉的,而使用SYN掃
描顯示有打開的埠,你可以確定目標主機可能運行的是Windwos系統)
6、-sU(UDP掃描:nmap首先向目標主機的每個埠發出一個0位元組的UDP包,如果我們收到埠不可達的ICMP消息,埠就是關閉的,否則我們就假設它是打開的)
7、-P0
(No
ping)(這個選項跳過Nmap掃描)
8、-PE/PP/PM
掃描類型的控制
1、sW
(對滑動窗口的掃描)
2、-sR(RPC掃描)
3、
-PE;
-PP;
-PM
(ICMP
類型的ping)
4、-PR
(ARP
類型的ping-n
(無
DNS
解析)
5、-R
(為所有的目標做DNS解析)
6、-sV(對服務版本的檢測)
常用的對主機的操作
1、-A或者-O(對操作系統的檢測)
2、-v(增加信息的詳盡程度)
3、-p(ports的范圍)