iptables

關閉firewalld,啓動iptables服務
1)關閉firewalld服務器
1.[root@svr5 ~]# systemctl stop firewalld.service
2.[root@svr5 ~]# systemctl disable firewalld.service
2)安裝iptables-services並啓動服務
1.[root@svr5 ~]# yum -y install iptables-services
2.[root@svr5 ~]# systemctl start iptables.service
步驟二:熟悉iptables框架
1)iptables的4個表(區分大小寫):
nat表(地址轉換表)
filter表(數據過濾表)
raw表(狀態跟蹤表)
mangle表(包標記表)。
2)iptables的5個鏈(區分大小寫):
INPUT鏈(入站規則)
OUTPUT鏈(出站規則)
FORWARD鏈(轉發規則)
PREROUTING鏈(路有前規則)
POSTROUTING鏈(路由後規則)
iptables命令的基本使用方法
iptables

1)iptabels語法格式
iptables [-t 表名] 選項 [鏈名] [條件] [-j 目標操作]
2.[root@svr5 ~]# iptables -t filter -I INPUT -p icmp -j REJECT
3.[root@svr5 ~]# iptables -t filter -I INPUT -p icmp -j ACCEPT
4.[root@svr5 ~]# iptables -I INPUT -p icmp -j REJECT
//注意事項與規律
//可以不指定表,默認爲filter表
//可以不指定鏈,默認爲對應表的所有鏈
/除非設置默認策略,否則必須指定匹配條件
//選項/鏈名/目標操作用大寫字母,其餘都小寫
//目標操作:
// ACCEPT:允許通過/放行
// DROP:直接丟棄,不給出任何迴應
// REJECT:拒絕通過,必要時會給出提示
// LOG:記錄日誌,然後傳給下一條規則
2)iptables命令的使用
創建規則
1.# iptables -t filter -A INPUT -p tcp -j ACCEPT
//追加規則至filter表中的INPUT鏈的末尾,允許任何人使用TCP協議訪問本機
2.# iptables -I INPUT -p udp -j ACCEPT
//插入規則至filter表中的INPUT鏈的開頭,允許任何人使用UDP協議訪問本機
3.# iptables -I INPUT 2 -p icmp -j ACCEPT
.//插入規則至filter表中的INPUT鏈的第2行,允許任何人使用ICMP協議訪問本機
查看iptables防火牆規則
1.[root@svr5 ~]# iptables -nL INPUT                    //僅查看INPUT鏈的規則
//////不把IP或者端口解析成主機名
2.# iptables -L INPUT --line-numbers        //查看規則,顯示行號
刪除規則,清空所有規則
1.[root@svr5 ~]# iptables -D INPUT 3 //刪除filter表中INPUT鏈的第3條規則
2.# iptables -nL INPUT                //查看規則,確認是否刪除
3.# iptables -F //清空filter表中所有鏈的防火牆規則
4.# iptables -t nat -F //清空nat表中所有鏈的防火牆規則
8.# iptables -t mangle -F //清空mangle表中所有鏈的防火牆規則
9.# iptables -t raw -F //清空raw表中所有鏈的防火牆規則
設置防火牆默認規則
1.# iptables -t filter -P INPUT DROP //缺省規則
2.# iptables -nL
iptables

filter過濾和轉發控制
**
本案例要求創建常用主機防火牆規則以及網絡防火牆規則:
1.針對Linux主機進行出站、入站控制
2.利用ip_forward機制實現Linux路由/網關功能
3.在Linux網關上實現數據包轉發訪問控制
根據防火牆保護的對象不同,防火牆可以分爲主機型防火牆與網絡型防火牆,如圖-1所示。
主機型防火牆,主要保護的是服務器本機(過濾威脅本機的數據包)。
網絡防火牆,主要保護的是防火牆後面的其他服務器,如web服務器、FTP服務器等。

步驟
實現此案例需要按照如下步驟進行。
一:iptables防火牆規則的條件
iptables防火牆可以根據很多很靈活的規則進行過濾行爲,具體常用的過濾條件如表-2所示。

1)主機型防火牆案例
1.# iptables -I INPUT -p tcp --dport 80 -j REJECT
2.# iptables -I INPUT -s 192.168.2.100 -j REJECT
3.# iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT
4.[# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
5.# iptables -A INPUT -s 192.168.4.120 -j DROP
6.//丟棄192.168.4.120發給本機的所有數據包 52:54:00:2d:cc:2d brd ff:ff:ff:ff:ff:ff
7.[root@svr5 ~]# iptables -A INPUT -s 10.0.10.0/24 -j DROP
8.//丟棄10.0.10.0/24網絡中所有主機發送給本機的所有數據包
9.[root@svr5 ~]# iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22-j REJECT
10.//拒絕114.212.33.12使用tcp協議遠程連接本機ssh(22端口)
二:開啓Linux的路由轉發功能
1)Linux內核默認支持軟路由功能,通過修改內核參數即可開啓或關閉路由轉發功能。
1.# echo 0 > /proc/sys/net/ipv4/ip_forward            //關閉路由轉發
2.# echo 1 > /proc/sys/net/ipv4/ip_forward            //開啓路由轉發
3.//注意以上操作僅當前有效,計算機重啓後無效
4.# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
5.# sysctl -p 激活修改過的配置文件
//修改/etc/sysctl.conf配置文件,可以實現永久有效規則
步驟四:網絡型防火牆案例
1)網絡型防火牆案例
部署如表所示的網絡拓撲,一定要把router主機的路由轉發功能打開。
iptables

添加網關的命令
1.[root@client ~]# nmcli connection modify eth0 ipv4.gateway 192.168.4.5
2.[root@client ~]# nmcli connection up eth0
3.
4.[root@web1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.2.5
5.[root@web1 ~]# nmcli connection up eth1
確認不同網絡的聯通性
1.[root@client ~]# ping 192.168.2.100
2.[root@web1 ~]# ping 192.168.4.100
在web1主機上啓動http服務
1.[root@web1 ~]# yum -y install httpd
2.[root@web1 ~]# echo "test page" > /var/www/html/index.html
3.[root@web1 ~]# systemctl restart httpd
沒有防火牆的清空下client訪問web服務
1.[root@client ~]# curl http://192.168.2.100                    //成功
設置proxy主機的防火牆規則,保護防火牆後面的Web服務器
1.[root@proxy ~]# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP
設置完防火牆規則後,再次使用client客戶端訪問測試效果
1.[root@client ~]# curl http://192.168.2.100                    //失敗
步驟三:禁ping的相關策略
1)默認直接禁ping的問題?
1.[root@proxy ~]# iptables -I INPUT -p icmp -j DROP
2.//設置完上面的規則後,其他主機確實無法ping本機,但本機也無法ping其他主機
3.//當本機ping其他主機,其他主機迴應也是使用icmp,對方的迴應被丟棄
2)禁止其他主機ping本機,允許本機ping其他主機
1.[root@proxy ~]# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
//僅禁止入站的ping請求,不拒絕入站的ping迴應包 我能ping通其他人 其他人ping不通我
注意:關閉ICMP的類型,可以參考help幫助,參考命令如下:
1.[root@proxy ~]# iptables -p icmp --help
防火牆擴展規則
問題
本案例要求熟悉使用iptables的擴展規則,實現更豐富的過濾功能,完成以下任務:
1.根據MAC地址封鎖主機
2.在一條規則中開放多個TCP服務
3.根據IP範圍設置封鎖規則


iptables在基本過濾條件的基礎上還擴展了很多其他條件,在使用時需要使用-m參數來啓動這些擴展功能,語法如下:
iptables 選項 鏈名稱 -m 擴展模塊 --具體擴展條件 -j 動作
步驟
實現此案例需要按照如下步驟進行。
步驟一:根據MAC地址過濾
1)根據IP過濾的確定是對方修改IP後,防火牆是失效
1.[root@proxy ~]# iptables -F
2.[root@proxy~]# iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP
3.//設置規則禁止192.168.4.100使用ssh遠程本機
但是,當client主機修改IP地址後,該規則就會失效,注意因爲修改了IP,對client主機的遠程連接會斷開,需要使用virt-manager開啓虛擬機操作:
1.[root@client ~]# ifconfig eth0 192.168.4.101
2.[root@client ~]# ssh 192.168.4.5                    //依然成功
根據MAC地址過濾,可以防止這種情況的發生
1.[root@client ~]# ip link show eth0                    //查看client的MAC地址
2.eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
3.link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
4.
5.[root@proxy~]# iptables -A INPUT -p tcp --dport 22\
6.> -m mac --mac-source 52:54:00:00:00:0b -j DROP
7.//拒絕52:54:00:00:00:0b這臺主機遠程本機
步驟二:基於多端口設置過濾規則
1)一次需要過濾或放行很多端口時會比較方便
1.[root@proxy ~]# iptables -A INPUT -p tcp \
2.> -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
3.//一次性開啓20,21,22,25,80,110,143,16501到16800所有的端口
步驟三:根據IP地址範圍設置規則
1)允許從 192.168.4.10-192.168.4.20 登錄
1.[root@proxy~]# iptables -A INPUT -p tcp --dport 22 \
2.> -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
2)禁止從 192.168.4.0/24 網段其他的主機登錄
1.[root@proxy~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP
配置SNAT實現共享上網
問題
本案例要求設置防火牆規則,允許位於局域網中的主機可以訪問外網,主要包括下列服務:
1.搭建內外網案例環境
2.配置SNAT策略實現共享上網訪問
步驟
實現此案例需要按照如下步驟進行。
步驟一:搭建內外網案例環境

這裏,我們設定192.168.2.0/24網絡爲外部網絡,192.168.4.0/24爲內部網絡。
現在,在外部網絡中有一臺web服務器192.168.2.100,因爲設置了網關,client已經可以訪問此web服務器了。但,如果查看web1的日誌就會發現,日誌裏記錄的是192.168.4.100在訪問網頁。
我們需要實現的效果是,client可以訪問web服務器,但要僞裝爲192.168.2.5後再訪問web服務器(模擬所有位於公司內部的電腦都使用的是私有IP,希望訪問外網,就需要僞裝爲公司的外網IP後纔可以)。
步驟二:設置防火牆規則,實現IP地址的僞裝(SNAT源地址轉換)
1)確保proxy主機開啓了路由轉發功能
1.[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward            //開啓路由轉發
2)設置防火牆規則,實現SNAT地址轉換
1.[root@proxy ~]# iptables -t nat -A POSTROUTING \
2.> -s 192.168.4.0/24 –p tcp --dport 80 -j SNAT --to-source 192.168.2.5
3)登陸web主機查看日誌
1.[root@proxy ~]# tail /var/log/httpd/access_log
2... ..
3.192.168.2.5 - - [12/Aug/2018:17:57:10 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
通過日誌會發現,客戶端是先僞裝爲了192.168.2.5之後再訪問的web服務器!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章