Linux安全基礎——day3
TcpDump抓包 使用的軟體包是: tcpdump 使用命令: tcpdump 選項 過濾條件
-i | 指定監控的網路介面 |
-A | 方便閱讀 |
-c | 設定抓取幾個包的時候停止 |
-w | 將抓取的資料包資訊儲存到指定檔案中,一般檔案字尾名為 .cap |
-r | 從指定檔案中讀取資料包資訊 |
過濾條件 | |
host | 主機 |
net | 網段 |
port | 埠 必須跟協議一起連用 |
portrange | 指定一段範圍的埠資訊 |
src | 指定源地址 |
dst | 指定目標地址 |
and | 前後兩個條件同時匹配才抓包 |
or | 幾個條件中某個符合就匹配 |
not | 條件結果取反 |
舉例:
tcpdump -i eth0 -A tcp port 21 and src 192.168.4.50 -w /mnt/s50_ftp.cap
# 抓取eth0網絡卡中關於FTP服務(tcp協議的21埠)的來自192.168.4.50的資料包,並把資料記錄到s50_ftp.cap檔案中
WirShark協議分析器 裝包: yum install -y wireshark wireshark-gnome 使用圖形介面進行操作,點選File選單,開啟用tcpdump命令抓取的包,進行分析
分析過後回有三個板塊資訊: 第一個板塊的內容是,抓取的每個包的資訊,一行資訊就是一個包 第二個板塊是一個包的四層協議的資訊,分別是物理層、資料鏈路層、網路層、傳輸層 第三個板塊是具體的資料資訊
防火牆
在RHEL6預設使用iptables作為防火牆 在RHEL7使用的是firewalld服務,不過向下相容,也可以用iptables,而且firewall的底層還是使用的iptables,只不過如果想用iptables服務,我們需要安裝iptables的服務的包,就下載一個軟體包iptables-services,進行防火牆控制
RHEL6的控制命令(RHEL7也可以用,具體效果等效) | |
service iptables status | 檢視防火牆 |
service iptables stop | 關閉防火牆 |
service iptables start |
開啟防火牆 |
chkconfig iptables on | 開機自啟防火牆 |
網路型別:
1. 網路型防火牆 專門的一個伺服器做為防火牆伺服器,隔離過濾後再把資料發給伺服器叢集 2. 主機型防火牆 在伺服器叢集的伺服器上搭建防火牆進行隔離
四張表 (功能項) | 解釋 | 作用 | 可操作的資料鏈結構 |
raw | 狀態跟蹤表 | 資料包到達防火牆後跟蹤這個包的狀態(連線狀態、斷開狀態、新生成準備連線狀態) | PREROUTING、OUTPUT |
mangle | 包標記表 | 給包打上標籤,如果標籤打上ok就可以過,如果是false就不給過防火牆 | INPUT、INPUT、FOWARD、POSTROUTING、PREROUTING |
主要是給+需要特殊標示某些服務或者埠或者IP地址的一些訪問進行特殊處理 | |||
nat | 地址轉換表 | 將要傳送資料到公網的私有地址轉換為公有地址,同樣也可以把公有地址轉換為私有地址 | INPUT、OUTPUT、POSTROUTING、PREROUTING |
filter | 過濾表(預設) | 不想讓什麼包不能進來,執行什麼包進來,是用這個表來限制實現的 | INPUT、OUTPUT、FOWARD |
五個鏈 (匹配資料包傳輸的方向 ) | |
INPUT | 匹配進入防火牆的包 |
OUTPUT | 匹配從防火牆出去的包 |
FOWARD | 匹配經過防火牆主機的包,源地址和目標地址都不是防火牆主機的情況 |
POSTROUTING | 已經完成路由處理後進行操作 |
PREROUTING | 到達防火牆後,進行路由處理前進行操作,不管目標地址是什麼,進行操作,由防火牆指定目標地址 |
匹配規則 匹配到達防火牆的資料包,然後進行相關操作;這規則是存放在鏈裡進行匹配 匹配順序: 從設定的從上至下依次執行,匹配後執行對應的動作,然後停止匹配(LOG動作除外) 如果都不匹配,採用預設策略進行處理 匹配條件:
通用匹配 | 協議匹配 | -p 協議 |
協議有三個: tcp(大部分服務)、udp(DNS等服務)、icmp(控制ping操作) | ||
地址匹配 | -s 源IP地址 | |
-d 目標IP地址 | ||
介面匹配 | -i 收資料的網絡卡即口 | |
-o 發資料的網絡卡即口 | ||
隱含匹配 | 埠匹配 | --sport 源埠 |
--dport 目標埠 | ||
ICMP型別匹配 | --icmp-type ICMP型別 | |
ICMP型別: echo-request(指Ping傳送的包) echo-reply(指Ping迴應的包) | ||
注意必須是當-p後面協議是icmp的時候才能用 | ||
匹配取反 | 在條件前面加個 ! 即可 |
處理動作: 1. 放行 ACCEPT 2. 丟棄 DROP (直接丟棄資料包,不做其他操作) 3. 拒絕 REJECT (會返回資訊告知客戶端,連線被拒絕了) 4. 記錄日誌 LOG (記錄日誌後,繼續匹配下面的操作,這是特例)
iptables指令 命令: iptables -t 表 管理選項 鏈 匹配條件 擴充套件模組 -j 動作 沒寫匹配條件的部分預設是全部匹配 操作後要儲存防火牆配置: service iptables save
管理選項
新增規則 | -A | 在鏈的末尾追加一個規則 |
-I | 在鏈的指定位置前插入一條規則,如果每指定,預設是在開頭新增規則 | |
-I 鏈 編號 --> 指在該鏈的指定編號前新增 | ||
檢視規則 | -L | 列出所有規則 |
如果沒有指定表就是所有表中的規則、如果沒有指定鏈,就是指定表中的所有鏈的規則 | ||
預設是對地址埠進行解析,易讀,但是耗時較長 | ||
-n | 以數字形式是顯示地址、埠 | |
一般不單獨用,都是和L選項連用 | ||
一般而言-nL是連用的選項,這樣策略顯示速度比較快 | ||
--line-numbers | 檢視規則的時候顯示序號,一般和L連用 | |
注意: 這個選項最好寫在命令的最後一行,或者-L前面,該選項後面不能有引數,不然報錯 | ||
刪除規則 | -D | 刪除指定序號的規則 |
-F | 刪除所有規則,只是刪除寫的策略規則,不會修改預設策略 | |
如果指定了表和鏈拿就是刪除指定的位置的所有規則,都不指就是刪除所有規則 | ||
預設策略 | -P | 為指定的鏈設定預設規則 |
只能指定動作為ACCEPT和DROP | ||
iptables -t 表 -P 鏈 動作 (這裡沒有-j) |
拓展模組
mac地址匹配 | -m mac --mac-source 策略指定機器的mac地址 |
多埠匹配 | -m multiport --sports 源埠列表 |
-m multiport --dports 目標埠列表 | |
埠列表: 埠1:埠2 指代連續的埠 埠1,埠2 指代多個不連續的埠 | |
舉例: 10:1000,3306,27017 這指的是10到1000的所有埠和3306和27017埠的資料 | |
多IP範圍匹配 | -m iprange --src-range 源IP地址範圍 |
-m iprange --dst-range 目標IP地址範圍 | |
IP地址範圍: IP1-IP2 | |
舉例: 172.25.10.110-172.25.20.255 指172.25.10.110到172.25.10.255以及172.25.11.0到172.25.20.255所有的IP的資料 |
常用命令總結:
檢視防火牆策略 | iptables -t 表 -nL --line-number | |
iptables -t filter -nL --line-number | ||
插入一行策略到最後 | iptables -t 表 -A 鏈 -p 協議 -s 源地址 -d 目標地址 --sport 源埠 --dport 目標埠 -j 動作 | |
iptables -t filter -A INPUT -p tcp -s 172.25.10.110 -d 172.25.10.111 --dport 80 -j ACCEPT | 指定允許110主機訪問111主機的網站服務 | |
iptables -t filter -A INPUT -s 172.25.10.110 -j DROP | 指定丟棄所有110主機發來的所有包 | |
插入策略到某行前的 | iptables -t 表 -I 鏈 編號 -p -s 源地址 -d 目標地址 --sport 源埠 --dport 目標埠 -j 動作 | |
修改某鏈的預設策略 | iptables -t 表 -P 鏈 動作 | |
允許本機ping其他機器 | iptables -t filter -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT | |
不允許其他機器本機ping本機 | iptables -t filter -I INPUT -p icmp --icmp-type echo-request -j REJECT | |
只不允許某個機器和本機互ping | iptables -t filter -I INPUT -p icmp -s 另一個機器的IP -j REJECT |
注意點: 1. 選項用-L檢視資訊,它的第一行提示當前鏈是什麼,預設的規則是什麼,第二行是下面資料的提示,這一行不是資料,如果沒有第三行,那麼就是該鏈中沒有任何資料,其基本格式是:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2. 必須注意,因為防火牆匹配是自上至下進行匹配,所以有一些通配很多IP的策略要寫在後面,一些指定一些具體IP的策略要寫在前面
3. 刪除的時候,刪一個策略,後面的策略會位置前移動,也就是說,每刪除一個非最後一個策略,所有策略的編號就會變
4. 當不知道某個位置該寫什麼的時候,可以在那裡寫一個--help檢視幫助,例如當icmp協議後不知道寫什麼的時候:
iptables -t filter -A INPUT -p icmp --help
5. 不要隨便清除策略,可能一些允許的策略被刪除了,導致遠端斷開連線
6. 補充一個知識,如果別人ping過自己,即可查出對方的MAC地址,使用命令
arp -n
7. 如果真的想讓一個機器不能通過防火牆,禁用IP並不能解決問題,最好用擴充套件中的mac地址匹配限制,這樣其修改IP後也不能訪問
iptables -t filter -A INPUT -m mac --mac-source 52:54:00:1d:17:b8 -j DROP
8. 不管是什麼埠,包括拓展中的源埠限制和目標埠的限制,只要想指定一定的埠資訊,必須指定協議,不然會報錯!
附: 1. 設定主機IP地址,修改配置檔案的方法 這配置檔案是 /etc/sysconfig/network-scripts/ifcfg-裝置名 ,在裡面寫下面這些資料即可
TYPE=Ethernet
BOOTPROTO=none
IPADDR=設定IP地址
NAME=裝置名
DEVICE=裝置名
ONBOOT=yes
2. 配置伺服器,開啟路由功能
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.conf
sysctl -p
3. 配置伺服器的預設閘道器地址
systemctl stop NetworkManager
route add default gw 192.168.4.52
檢視閘道器資訊
route -n