1. 程式人生 > >linux下iptable的用法

linux下iptable的用法

########################
1.iptables的用法
########################
iptables比firewall功能更詳細,但是難上手

關閉火牆

安裝iptables
在這裡插入圖片描述
啟動服務
在這裡插入圖片描述
服務資訊儲存在/etc/sysconfig/iptables
在這裡插入圖片描述

iptables加以下

-nL不做解析列出
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state    RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-   prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-    prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

-F 清除所有策略

[[email protected] ~]# iptables -F
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

###################################
2.iptable限制訪問
###################################
以httpd為例
通過控制埠不同ip的訪問許可權來控制訪問
檢視httpd服務的埠

有三個字尾

拒絕
REJECT
允許
ACCEPT
忽略
DROP

[[email protected] ~]# netstat -antlupe | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      
0          24061          1264/httpd          

在這裡插入圖片描述
iptables -A INPUT -p tcp --dport 80 -j REJECT
拒絕所有訪問

[[email protected] ~]# iptables  -A  INPUT  -p tcp  --dport  80  -j REJECT
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0   tcp dpt:80 reject-with     
icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables -A INPUT -s 172.25.254.32 -p tcp --dport 80 -j ACCEPT

[[email protected] ~]# iptables  -A  INPUT  -s 172.25.254.132 -p tcp --dport 80 -j     ACCEPT
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0   tcp dpt:80 reject-with     icmp-port-unreachable
ACCEPT     tcp  --  172.25.254.32       0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

在這裡插入圖片描述
但此時還是無法連線,原因是讀取時是從第一條開始讀取,當第一條滿足時不再讀取第二條規則

有兩種刪除方法
按內容刪除,注意如果多個相同內容,按內容刪除的順序是從後往前刪除
iptables -D INPUT -s 172.25.254.32 -p tcp --dport 80 -j ACCEPT
按序號刪除第二條規則
iptables -D INPUT 2
插入到第一條規則
iptables -I INPUT 1 -s 172.25.254.32 -p tcp --dport 80 -j ACCEPT

[[email protected] ~]# iptables  -D INPUT 2
[[email protected] ~]# iptables  -I  INPUT  1 -s 172.25.254.32 -p tcp --dport 80 -j   ACCEPT
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.25.254.32        0.0.0.0/0            tcp dpt:80
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with     icmp-portunreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

在這裡插入圖片描述
瀏覽器測試能連線
在這裡插入圖片描述
用172.25.254.232的瀏覽器連線
在這裡插入圖片描述

刪除掉允許,改為拒絕不提示
iptables -D INPUT 1

iptables -I INPUT 1 -s 172.25.254.32 -p tcp --dport 80 -j DROP

[[email protected] ~]# iptables -D INPUT 1
[[email protected] ~]# iptables  -I  INPUT  1 -s 172.25.254.32 -p tcp --dport 80  -j   DROP 
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  172.25.254.32        0.0.0.0/0            tcp dpt:80
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with  icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

在這裡插入圖片描述
此時重新整理瀏覽器連線時會一直在讀取,原因是拒絕不提示時沒有反饋
在這裡插入圖片描述

####################
3.簡單管理鏈
#####################
iptables -F ##清空策略
在這裡插入圖片描述

iptables -t nat -F PREROUTING:把表格換為nat並且重新整理prerouting連結
在這裡插入圖片描述
新增名為westos的鏈
iptables -N westos
在這裡插入圖片描述

iptables -E allowed disallowed:修改鏈名稱
在這裡插入圖片描述
iptables -D westos 1 刪除自定義鏈下的策略
iptables -X redhat :刪除自定義鏈
在這裡插入圖片描述
iptables -R INPUT 3 -j ACCEPT:把3號的規則替換為-j ACCEPT

iptables -P INPUT DROP: 設定filter表INPUT鏈的預設規則,當資料包沒有被規則列表的任何規則匹配到時,按這個規則處理

iptables -t nat -F:清空nat策略,-F只晴空鏈中的規則不影響-P設定的預設規則

iptables -t nat -nL:檢視nat策略

iptables -t nat -L PREROUTING:檢視nat表中prerouting鏈的規則

#########################
7.iptables做地址轉換
#########################
路由器為172.25.254.132
1.1.1.132
目的閘道器為1.1.1.232
目的是32連線132時自動連線到232,可用於不同網段的連線

清除所有表格
在這裡插入圖片描述
新增轉換規則
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.232
在這裡插入圖片描述
ssh 172.25.254.132
檢視連線後的ip