iptables指令
建構防火牆的步驟
-
清除所有規則
為了避免建立的防火牆與系統中已經運作的防火牆互相幹擾,一般應該先清除所有規則。
-
設定防火牆政策
設定當資料包沒有比對到鍊中的規則時應該如何對待(是拒絕還是放行)。
-
設定防火牆規則
設定資料包的比對規則以及比對後的處理動作(指
定目标)。
防火牆政策的設定方法
沒有明确允許的都被拒絕
方法1:
- 首先配置政策禁止所有的包
- 然後再根據需要的服務設定規則允許特定的包通過
- 最安全,但不太友善
方法2:
- 首先配置政策允許所有的包
- 然後再根據需要的服務設定規則允許特定的包通過
- 最後在鍊中添加一-條可捕捉一切的拒絕規則
- 當捕捉一切的拒絕規則被誤删除将導緻門戶的全面開放
iptables服務
#安裝iptables服務
yum -y install iptables-services
yum -y install system-config-firewall-{base,tui}
#屏蔽firewalld服務并開啟iptables服務
systemctl stop firewalld
systemctl mask firewalld
systemctl start iptables
systemctl enable iptables
iptables指令文法規則
格式:
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
COMMAND :
-A 追加規則
-D 删除規則
-R 修改規則
-I 插入規則
-L 檢視規則
-N 新的規則
CRETIRIA :
-p 協定
-s源位址
-d目的位址
-sport源端口
-dport目的端口
-i指定入口網卡
-o指定出口網卡
ACTION:
DROP:丢棄
REJECT:明示拒絕
ACCEPT:接受
SNAT:基于原位址的轉換
DNAT:目标位址轉換
source:指定原位址
MASQUERADE:動态僞裝
示例
列出防火牆所有規則
[[email protected] ~]# iptables -L -nv
# 列出所有規則,并顯示行号
[[email protected] ~]# iptables -L -nv --line-num
清楚防火牆規則(下列兩條同樣的效果)
[[email protected] ~]# iptables -F
[[email protected] ~]# iptables --flush
拒絕其他所有主機通路
# 此條應為防火牆政策的最後一條規則
[[email protected] ~]# iptables -A INPUT -j DROP
允許某個ip通路
日志記錄
[[email protected] ~]# iptables -A INPUT -m state --state INVALID -j LOG
# 同時要将無效通路拒絕,避免資源浪費
[[email protected] ~]# iptables -A INPUT -m state --state INVALID -j DROP
自定義鍊
[[email protected] ~]# iptables -N LAN
[[email protected] ~]# iptables -A INPUT -j LAN
[[email protected] ~]# iptables -A LAN -j ACCEPT
大緻流程如下
設定通路端口
# 允許通路22 ssh服務端口
[[email protected] ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 一次性同時添加80,443端口
[[email protected] ~]# iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
#處理IP碎片數量,防止攻擊,允許每秒100個
設定ICMP包過濾,允許每秒1個包,限制觸發條件是10個包
設定位址僞裝,内網可以通路外網
允許内網通路外網某台機器
實作端口轉發