class="21110">
;
防火牆的配置要求如下:
1、 拒絕所有外面傳入的、向外的和轉發的包。
2、 允許所有外傳的TCP連接:我們這裡允許的如web/telnet/ssh/ftp等外傳。
3、 允許外發的TCP連接的返回封包通過防火牆,需檢查封包的狀態。
4、 允許向外發送UDP連接在端口53上指定域名服務器,但只允許偉入的DNS封包進入內部的域名服務器chivas。
5、 創建允許內核從一個網絡接口向另一個網絡接口適當轉發封包的規則:來自專網的向因特網傳遞的封包需從內部接口eth0向外部接口eth1轉發。返回的封包以相反方向發送回來。
6、 在內核中啟用IP轉發功能。
構建一個基本的防火牆
[root@linux-tys root]# sysctl –p -----設置IP轉發
[root@linux-tys root]# cat /proc/sys/net/ipv4/ip_forward -----確認IP轉發,可以見到結果為1
[root@lg root]# iptables –F -----清除預設表filter中所有規則鏈的規則
[root@lg root]# iptables –X -----清除預設表filter中自定義規則鏈的規則
[root@lg root]# iptables –F –t mangle -----清除表mangle中所有規則鏈的規則
[root@lg root]# iptables –t mangle -X -----清除表mangle中所有自定義規則鏈的規則
[root@lg root]# iptables –F –t nat -----清除表nat中所有規則鏈的規則
[root@lg root]# iptables –t nat -X -----清除表nat中所有自定義規則鏈的規則
[root@linux-tys root]# iptables -A INPUT -p tcp - -dport 22 -j ACCEPT
[root@lg root]# iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
[root@linux-tys root]# iptables -P INPUT DROP
[root@linux-tys root]# iptables -P OUTPUT DROP
[root@linux-tys root]# iptables -P FORWARD DROP
[root@linux-tys root]# iptables -A OUTPUT -j ACCEPT -o lo ----此兩行為在回送接口上允許內部網絡流量
[root@linux-tys root]# iptables -A INPUT -j ACCEPT -i lo
[root@linux-tys root]# iptables -A OUTPUT -j ACCEPT -o eth1 -p tcp -m state --state ESTABLISHED,NEW
-----此規則設置新建和已建的TCP連接的封包將會通過eth1向外轉發,不指明源和目標地址代表任何地址
[root@linux-tys root]# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT --這條允許來自專網到達專網接口的所有流量,下面一條規則則是檢查到達外部網絡接口的每個封包,屬於已有連接通過
[root@linux-tys root]# iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
以下配置規則使之從一個網絡接口轉發到另一個:第一條規則接收所有來自專網的封包,並被轉發到外網卡eth1上;第二條規則到達外部網絡接口eth1上的封包,如屬於已有連接,則轉發到內網。
[root@linux-tys root]# iptables -A FORWARD -i eth0 -j ACCEPT-
[root@linux-tys root]# iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
最後建立NAT規則,POSTROUTING表封包送出時需要翻譯,該規則設置為對流出外部網絡接口eth1的封包起作用,並將源地址變為eth1的地址。
[root@linux-tys root]# modprobe iptable_nat ----加載NAT模塊
[root@linux-tys root]# iptables -A POSTROUTING -t nat -o eth1 -j SNAT --to 192.168.32.254
備份和恢復
1、備份防火牆設置:[root@lg root]# iptables-save>iptablesrules.txt 本次設為iptablesdefault.txt
2、刪除防火牆設置:[root@lg root]# iptables –F 刪除所有的鏈。
3、恢復防火牆設置:[root@lg root]# iptables-restore iptablesrules.txt
使防火牆自動化
[root@linux-tys root]# iptables-save > /etc/sysconfig/iptables ---保存規則到/etc/syscofig/iptables中,並自啟動
[root@linux-tys root]# /etc/init.d/iptables start/stop/restart ----保存後則可用這個命令來控制其狀態
使用自定義鏈整固防火牆
基本規則並不檢查除TCP連接狀態以外的事項,可通過自定義的鏈來擴展基本防火牆以助於處理增加的復雜性,更為復雜的規則集可指定哪一個TCP端口可以使用以及連接的源地址。同時創建特定的規則來處理單個連接可以減少黑客利用端口的機會。
修改後的防火牆配置如下:
1、首先也是啟用轉發,清空所有規則,設默認為DROP,在回送接口上允許所有內部網絡流量。然後我們將創建兩條自定義鏈來處理從專網和外網接口到達的封包。下面是SSH的訪問要保留。
2、創建一個PRIV鏈來處理來自專用網絡的流量。這個鏈傳遞已有返回的封包,進入防火牆的SSH封包,以及目的地為因特網的FTP、SSH和HTTP封包,然後將INPUT鏈規則導向到這一個鏈上。
[root@linux-tys root]# iptables -N PRIV
[root@linux-tys root]# iptables -A PRIV -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@linux-tys root]# iptables -A PRIV -p tcp –s 192.168.1.0/24 –d 192.168.1.254 --dport 22 -j ACCEPT
[root@linux-tys root]# iptables -A PRIV -p udp –d 0/0 --dport 53 -j ACCEPT
[root@linux-tys root]# iptables -A PRIV -p tcp -d 0/0 --dport 21 -j ACCEPT
[root@linux-tys root]# iptables -A PRIV -p tcp -d 0/0 --dport 80 -j ACCEPT
[root@linux-tys root]# iptables -A INPUT -i eth0 -j PRIV
[root@linux-tys root]# iptables -A OUTPUT –o eth0 -j PRIV
3、創建一個鏈來處理來自DMZ(如果使用的話)以及外部網絡到達的流量。這個鏈丟棄來自專用網絡和DMZ網源地址的所有封包,這是因為,第一,前者是欺騙地址,第二,根據策略,不允許來自DMZ的流量進入到網絡中。該鏈接受來自已有連接和編址到因特網的包。
[root@linux-tys root]# iptables -N EXT
[root@linux-tys root]# iptables -A EXT -s 192.168.32.0/24 -j DROP
[root@linux-tys root]# iptables -A EXT -s 192.168.1.0/24 -j DROP
[root@linux-tys root]# iptables -A EXT -s 0/0 -p tcp --dport 1024:65535 -j ACCEPT
[root@linux-tys root]# iptables -A EXT -s any/0 -d 192.168.32.254 -j ACCEPT
[root@linux-tys root]# iptables -A INPUT -i eth1 -j EXT --配置INPUT鏈,使之將流量導向到EXT
[root@linux-tys root]# iptables -A OUTPUT –o eth1 -j EXT
4、修改FORWARD鏈以創建網關功能。自內網接口來的新的或已有的連接被轉發到外部接口上。
[root@linux-tys root]# iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
[root@linux-tys root]# iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
5、建立SNAT規則。對源地址起作用轉換為192.168.32.254。此步後即可實現網關防火牆功能了。
[root@linux-tys root]# modprobe iptable_nat
[root@linux-tys root]# iptables -A POSTROUTING -t nat -o eth1 -j SNAT --to 192.168.32.254
6、配置OUTPUT鏈。使之允許來自防火牆服務的封包傳到專用網絡及因特網上。
[root@linux-tys root]# iptables -A OUTPUT -o eth0 -d 192.168.1.0/24 -j ACCEPT
[root@linux-tys root]# iptables -A OUTPUT -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
7、檢查防火牆規則並添加一條規則然後保存規則
[root@linux-tys root]# iptables -L –v ---- -v將顯示網絡接口的附加信息
[root@linux-tys root]# iptables -A PRIV -p tcp -d any/0 --dport 23 -j ACCEPT
[root@linux-tys root]# iptables-save > custom.txt 或作下面命令的保存
[root@linux-tys root]# iptables-save > /etc/sysconfig/iptables ---保存規則到/etc/syscofig/iptables中,並自啟動。