Linux-C-高級-第6章-IPTable防火墻基礎


目錄(持續更新)


基礎-第0章-安裝
基礎-第1章-基本操作
基礎-第2章-磁盤及文件系統管理
基礎-第3章-獲得幫助
基礎-第4章-用戶及權限基礎
基礎-第5章-網絡基本配置
基礎-第6章-管道,重定向及文本處理
基礎-第7章-系統啟動詳解

進階-第1章-日志服務
進階-第2章-DNS域名服務器
進階-第3章-FTP文件共享服務
進階-第4章-NFS文件共享服務
進階-第5章-SMB文件共享服務
進階-第6章-WEB服務Apache篇
進階-第7章-電子郵件服務
進階-第8章-Linux服務基礎及管理

高級-第1章-LVM邏輯卷
高級-第2章-高級權限ACL
高級-第3章-RAID提升速度及冗余
高級-第4章-高級網絡-網卡綁定,子端口
高級-第5章-SELinux安全系統基礎
高級-第6章-IPTable防火墻基礎
高級-第7章-Linux遠程管理-SSH、VNC


第6章 IPTable防火墻基礎


第一節

網絡訪問控制

Linux作為服務器,對外提供一些基于網絡服務

通常需要網絡訪問控制,類似防火墻

廠家愛你訪問控制包括:哪些IP可訪問的服務器,協議,接口,數據包修改

如可能受到某個IP攻擊,這時就禁止所有來自IP的訪問

Linux 內核集成了網絡訪問控制功能 通過netfilter模塊實現

IPTables

用戶層我們可以哦那個過iptables程序對netfilter進行控制管理

netfilter可以對數據進行允許 丟棄 修改操作

netfilter支持通過以下方式對數據包進行分類

    源IP地址
    目標IP地址
    使用接口
    使用協議  ( TCP UDP ICMP )
    端口號
    連接狀態    ( new ESTABLISHED RELATED INVALID)

過濾點

INPUT           出流量
FORWARD         轉發數據
OUTPUT          入流量
PREROUTING      路由前
POSTROUTING     路由后

過濾表

三種表:
filter (chain)用于對數據進行過濾 只用在 INPUT FORWARD OUTPUT 過濾點
nat用以多數據包的源,目標IP地址進行修改 只用在 OUTPUT PREROUTING POSTROUTING過濾點
mangle用以對數據包進行高級修改 用于所有過濾點

常用功能

作為服務器
    過濾本地流量              
    過濾本地發出流量

作為路由
    過濾轉發流量
    修改轉發數據

規則

通過規則對數據進行訪問控制
一個規則使用一行配置
規則按順序排列
當收到發出轉發數據包時,使用規則對數據包進行匹配,按規則順序進行逐條匹配

數據包按照第一個匹配上的規則執行相關動作:丟棄,放行,修改

沒有匹配規則,則使用默認動作(每個檢查點都有默認動作)

通過命令 iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
                    表           鏈           匹配屬性    動作

表:規定使用的表(filter nat mangle 不同表有不同功能)
鏈:規定過濾點 INPUT FORWARD  OUTPUT PREROUTING POSTROUTING
匹配屬性:規定匹配數據包的特征 
匹配后的動作:放行 丟棄 記錄  ACCEPT DROP REJECT

第二節

基礎配置

表:規定使用的表
    filter 
    nat 
    mangle

鏈:規定過濾點 
    INPUT 
    FORWARD  
    OUTPUT 
    PREROUTING 
    POSTROUTING
匹配屬性:
    規定匹配數據包的特征
    源,目標地址 ,協議(TCP UDP ICMP )
    端口號
    接口
    TCP狀態

匹配后的動作:
    放行  ACCEPT
    丟棄  DROP
    記錄    REJECT (返回信息)

命令操作(臨時生效)

iptables status 查看默認狀態

列出現有所有規則
    iptables -L 

插入一個規則
    iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT 
    插入到規則第3條 所有端口22的TCP數據全部允許進入

刪除一個iptables規則
    iptables -D INPUT 3 
    iptables -D INPUT -s 192.168.1.2 -j DROP

刪除所有規則
    iptables -F

參數匹配

基于IP地址
    -s 192.168.1.1      源地址
    -d 10.0.0.0/8       目標地址

基于接口
    -i eth0     接收流量
    -o eth1     發出流量

排除參數
    -s '!' 192.168.1.0/24   !為取反操作

基于協議及端口
    -p tcp --dport 23
    -p udp --sport 23
    -l icmp

例:

檢測到來自192.168.1.100攻擊  屏蔽所有這個IP的流量
iptables -A INPUT -s 192.168.1.100 -j DROP  

屏蔽所有訪問80網頁服務的流量
iptables -A INPUT -s tcp --dport 80 -j DROP

屏蔽所有192.168.1.0到服務器的22端口ssh流量
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP

iptables -A INPUT -i eth0 -j ACCEPT

FORWARD 路由設備使用

FORWARD 對所有數據轉發控制
如:禁止所有 從192.168.1.0/24 到目標10.1.1.0/24 的流量
iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -j DROP

NAT

NAT 網絡地址轉換是用來對數據包的IP地址進行修改的機制,NAT分為兩種

    SNAT    源地址轉換 常用偽裝內部地址
    DNAT    目標地址轉換 通常用于跳轉

iptables 中實現的 NAT 功能是NAT 表 

常用NAT

通過NAT 進行跳轉 轉發到192.168.1.10
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.10
    DNAT 只能用在PREROUTING上

通過NAT 進行出向數據跳轉
    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100:8080

通過NAT對數據偽裝 一般意義的NAT 將內部地址全部偽裝為一個外部公網IP
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    所有內網地址偽裝成eth0個公網IP地址

通過NAT隱藏IP
    iptables -t nat -A POSTROUTING  -j SNAT --to-source 1.2.3.4

保存配置文件

通過iptables修改需要寫入/etc/sysconfig/iptables配置文件

可以通過命令將iptables規則寫入配置文件 保存后會覆蓋
    service iptables save

注意

遠程管理 修改iptables 
需要允許來自客戶端主機的SSH流量確保是第一條iptable規則
以免失誤將自己鎖在外面
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容