Linux添加防火墻、iptables的安裝和配置(親測)
iptables基礎
規則(rules)其實就是網絡管理員預定義的條件,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理這個數據包”。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火墻的 主要工作就是添加、修改和刪除這些規則。
規則鏈:
1.INPUT ——進來的數據包應用此規則鏈中的策略
2.OUTPUT ——外出的數據包應用此規則鏈中的策略
3.FORWARD ——轉發數據包時應用此規則鏈中的策略
4.PREROUTING ——對數據包作路由選擇前應用此鏈中的規則
(記住!所有的數據包進來的時侯都先由這個鏈處理)
5.POSTROUTING ——對數據包作路由選擇後應用此鏈中的規則
(所有的數據包出來的時侯都先由這個鏈處理)
-A 在指定鏈的末尾添加(append)一條新的規則 -D 刪除(delete)指定鏈中的某一條規則,可以按規則序號和內容刪除 -I 在指定鏈中插入(insert)一條新的規則,默認在第一行添加 -R 修改、替換(replace)指定鏈中的某一條規則,可以按規則序號和內容替換 -L 列出(list)指定鏈中所有的規則進行查看 -E 重命名用戶定義的鏈,不改變鏈本身 -F 清空(flush) -N 新建(new-chain)一條用戶自己定義的規則鏈 -X 刪除指定表中用戶自定義的規則鏈(delete-chain) -P 設置指定鏈的默認策略(policy) -Z 將所有表的所有鏈的字節和數據包計數器清零 -n 使用數字形式(numeric)顯示輸出結果 -v 查看規則表詳細信息(verbose)的信息 -V 查看版本(version) -h 獲取幫助(help)
規則表之間的優先順序:
Raw——mangle——nat——filter
規則鏈之間的優先順序(分三種情況):
第一種情況:入站數據流向
從外界到達防火墻的數據包,先被PREROUTING規則鏈處理(是否修改數據包地址等),之後會進行路由選擇(判斷該數據包應該發往何處),如果數據包 的目標主機是防火墻本機(比如說Internet用戶訪問防火墻主機中的web服務器的數據包),那麽內核將其傳給INPUT鏈進行處理(決定是否允許通 過等),通過以後再交給系統上層的應用程序(比如Apache服務器)進行響應。
第二沖情況:轉發數據流向
來自外界的數據包到達防火墻後,首先被PREROUTING規則鏈處理,之後會進行路由選擇,如果數據包的目標地址是其它外部地址(比如局域網用戶通過網 關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),然後再交給POSTROUTING規則鏈(是否修改數據包的地 址等)進行處理。
第三種情況:出站數據流向
防火墻本機向外部地址發送的數據包(比如在防火墻主機中測試公網DNS服務器時),首先被OUTPUT規則鏈處理,之後進行路由選擇,然後傳遞給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。
iptables 的安裝與配置
由於centos7默認是使用firewall作為防火墻,下面介紹如何將系統的防火墻設置為iptables。
#停止firewall
systemctl stop firewall.service
#禁止firewall開機啟動
systemctl disable firewall.service
#安裝iptables
yum install iptables-services
#編輯防火墻文件 (建議都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables
#添加80和3306端口 等等(自己配置)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #80端口開放
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT #3306端口開放
-I INPUT -s 113.106.93.110 -p tcp --dport 8089 -j DROP #禁止指定IP訪問 8089
-I INPUT -s 113.106.93.110 -p tcp --dport 8080 -j ACCEPT #開放固定ipIP訪問 8080
#重啟防火墻使配置文件生效
systemctl restart iptables.service
#設置iptables防火墻為開機啟動項
systemctl enable iptables.service
service iptables start #啟動服務
service iptables stop #停止服務
service iptables restart #重啟服務
關閉SELINUX
vi /etc/selinux/config
#註釋以下配置
SELINUX=enforcing
SELINUXTYPE=targeted
#增加以下配置
SELINUX=disabled
#使配置立即生效
setenforce 0
Linux添加防火墻、iptables的安裝和配置(親測)