目錄(持續更新)
基礎-第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規則
以免失誤將自己鎖在外面