2017 10-19 防火墻設置2

一.iptables 命令

(1)iptables相關規則

任何不允許的訪問,應該在請求到達時給予拒絕 規則在鏈接上的次序即為其檢查時的生效次序 ?
基于上述,規則優化 ?
1 安全放行所有入站和出站的狀態為ESTABLISHED狀態連接
例:ipatbles -A INPUT -m state --state ESTABLISHED -j ACCEPT ?
2 謹慎放行入站的新請求 ?
3 有特殊目的限制訪問功能,要在放行規則之前加以拒絕 ?
4 同類規則(訪問同一應用),匹配范圍小的放在前面,用于特 殊處理 ?
5 不同類的規則(訪問不同應用),匹配范圍大的放在前面 ?
6 應該將那些可由一條規則能夠描述的多個規則合并為一條 ?
7 設置默認策略,建議白名單(只放行特定連接)
1) iptables -P,不建議
2) 建議在規則的最后定義規則做為默認策略

(2)規則有效期限:

使用iptables命令定義的規則,手動刪除之前,其生效期限為 kernel存活期限 ?
保存規則: 保存規則至指定的文件

  • CentOS 6
    service iptables save 將規則覆蓋保存至/etc/sysconfig/iptables文件中
    示例:
    iptables -A INPUT -s 1.1.1.1 -j REJECT


    image.png

    service iptables save ——自動保存到/etc/sysconfig/iptables


    image.png

iptables -F——清空規則
service iptables start——將規則恢復
iptables -vnL
如果在添加一個規則策略,但是不保存而去執行 service iptables stop后,再次重新啟動后,新添加的規則不會添加到iptables表中

  • CentOS 7 可用下面方法保存規則
    iptables -S > /PATH/TO/SOME_RULES_FILE
    iptables-save > /PATH/TO/SOME_RULES_FILE
    例:設定一個規則
    iptables -A INPUT -s 192.168.136.134 -j REJECT
    iptables -vnL


    image.png

    ipatbles -S


    image.png

    iptables-save
    image.png
    但是關機重啟后或者是ipatbles -F清除策略后就會消失
    image.png

    如果想要永久保存,則需要iptables-save > /app/iptables.rules1——存在一個文件中,那么即使以后通過ipatbles -F命令清楚了規則
    只要通過iptables-restore < /app/iptables.rules1即可
    image.png
  • 開機自動重載規則文件中的規則(在centos7中): ?
    (1) 用腳本保存各iptables命令;
    讓此腳本開機后自動運行 /etc/rc.d/rc.local文件中添加腳本路徑 /PATH/TO/SOME_SCRIPT_FILE ?
    (2) 用規則文件保存各規則,開機時自動載入此規則文件中的規則 /etc/rc.d/rc.local文件添加 iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE ?
    (3)自定義Unit File,進行iptables-restore
    具體實現步驟:
    vim /etc/rc.d/rc.local
    設定一個規則:iptables -A INPUT -s 1.1.1.1 -j ACCEPT
    iptables-save > /app/iptables.rules1
    iptables-restore < /app/iptables.rules1
    最后給文件加上執行權限 chmod 755 /etc/rc.d/rc.local
    開機后會自動啟動

二.網絡防火墻應用

iptables/netfilter網絡防火墻:
(1) 充當網關
(2) 使用filter表的FORWARD鏈
注意的問題:
(1) 請求-響應報文均會經由FORWARD鏈,要注意規則 的方向性
(2) 如果要啟用conntrack機制,建議將雙方向的狀態為 ESTABLISHED的報文直接放行
實驗:準備三臺虛擬機,配置一個簡單的網絡環境,要求,內網可以訪問外網,但是外網無法訪問內網

  1. 首先設置網絡網絡環境
    a機器為內網(關掉a的外網),b為路由器,c為外網(關掉c的內網)
    配置a的網關指向b的Ip地址(內網地址),配置c的網關指向b的ip地址(外網地址)


    image.png

    image.png

    清空三臺主機的防火墻以及selinux策略,開啟b機器的路由功能 echo 1 > /proc/sys/net/ipv4/ip_forward
    2.分別先測試一下網絡連通性ping命令測試。
    3.測試成功后,開始設置策略使內網能夠連接外網但是,外網無法訪問內網
    在b中,iptables -A FORWARD -s 192.168.136.0./24 -d 172.18.0.0/16 -p icmp --icmp-type 8 -j ACCEPT:請求協議接受
    iptables -A FORWAWRD -s 172.18.0.0./16 -d 192.168.136.0/24 -p icmp --icmp-type 0 -j ACCEPT:響應協議接受
    iptables -A FORWARD -j REJECT:其他的都拒絕
    這樣就實現了內網可以訪問外網但是外網無法訪問內網的要求
    方法二:使用狀態來實現
    iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT:以前的連接都接受
    iptables -A FORWARD -s 192.168.136.0/24 -d 172.18.0.0/16 -p icmp --icmp-type 8 -j ACCEPT:請求協議接受
    iptables -A FORWARD -j REJECT:其他的都拒絕
    方法三:
    iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT:以前的連接都接受
    iptables -A FORWARD -s 192.168.136.0/24 -d 172.18.0.0/16 -p icmp -m state --state NEW -j ACCEPT
    :新建立的協議接受
    iptables -A FORWARD -j REJECT:其他的都拒絕
    擴展延伸要求:內網可以訪問外網的ssh和http協議,但是外網無法訪問內網的ssh和httpd協議
    iptables -F FORWARD 清除之前的策略
    iptables -A FORWARD -s 192.168.136.0/24 -p tcp -m multiport --dports 22,80 -j ACCEPT
    iptables -A FORWARD -d192.168.136.0/24 -p tcp -m multiport --sports 22,80 -j ACCEPT
    iptables -A FORWARD -j REJECT
    加入ftp協議
    加載ftp協議模塊
    modprobe nf_conntrack_ftp
    iptables -R FORWARD 1 -s 192.168.136.0/24 -p tcp -m multiport --dports 21,22,80 -j ACCEPT
    iptables -R FORWARD 2 -d 192.168.136.0/24 -p tcp -m multiport --sports 21,22,80 -j ACCEPT
    iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -j REJECT
    實驗完成

三.NAT的應用

(一)NAT: network address translation
PREROUTING,INPUT,OUTPUT,POSTROUTING
請求報文:修改源/目標IP,由定義如何修改
響應報文:修改源/目標IP,根據跟蹤機制自動實現 ?
(1)SNAT:source NAT POSTROUTING, INPUT 讓本地網絡中的主機通過某一特定地址訪問外部網絡,實 現地址偽裝 請求報文:修改源IP ?
1.SNAT應用:固定ip(在路由器上的設置)
iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -j SNAT --to-source 172.18.254.242
解釋:指定用nat表來實現地址轉換,實現局域網用戶訪問外網,規定源地址,固定具有nat服務的路由器的Ip地址 ,這樣局域網內的用戶通過將私有地址轉換為路由的共有地址,去訪問外網。這種做法既可以達到訪問的目的也能夠節省Ip,不用刻意給每個私有Ip用戶都配置對應的公網ip,節約成本
2.MASQUERADE:動態IP,如撥號網絡
--to-ports port[-port]
--random
iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -j SNAT MASQUERADE——一定要指定源地址,否則如果路由器上有多個網卡時,不知道要替代哪個網段去訪問
(2)DNAT:destination NAT PREROUTING , OUTPUT
把本地網絡中的主機上的某服務開放給外部網絡訪問(發 布服務和端口映射),但隱藏真實IP
請求報文:修改目標IP
應用:
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 22 -j DNAT --to--destination 192.168.136.134
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 80 -j DNAT --to-destination 192.168.136.134:8080:實現外網的80端口指向內網的8080端口
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 80 -j DNAT --to-destination 192.168.136.134


image.png

(3)PNAT: port nat,端口和IP都進行修改
優點:用一個IP地址就可以實現多用戶訪問外部網絡,一個ip對應不同的端口(在路由器上的設置)
(4)REDIRECT:
NAT表
可用于:PREROUTING OUTPUT 自定義鏈 通過改變目標IP和端口,將接受的包轉發至不同地址 --to-ports port[-port]
iptables -t nat -A PREROUTING -d 192.168.136.134 -p tcp -m multiport --dports 8000,9527 -j REDIRECT --to-ports 80:實現端口的轉發,無論外網的哪個端口進行訪問,都轉發到目標地址的的80端口


image.png

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容