1. 程式人生 > >Linux安全基礎——day3

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