<b>防火牆的配置要求如下:</b>
1、 拒絕所有外面傳入的、向外的和轉發的包。
2、 允許所有外傳的TCP連接配接:我們這裡允許的如web/telnet/ssh/ftp等外傳。
3、 允許外發的TCP連接配接的傳回封包通過防火牆,需檢查封包的狀态。
4、 允許向外發送UDP連接配接在端口53上指定域名伺服器,但隻允許偉入的DNS封包進入内部的域名伺服器chivas。
5、 建立允許核心從一個網絡接口向另一個網絡接口适當轉發封包的規則:來自專網的向網際網路傳遞的封包需從内部接口eth0向外部接口eth1轉發。傳回的封包以相反方向發送回來。
6、 在核心中啟用IP轉發功能。
<b>=========================================================================</b>
<b>建構一個基本的防火牆</b>
<b>------------------------------------</b>
[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
<b> </b>
<b>以下配置規則使之從一個網絡接口轉發到另一個:</b>第一條規則接收所有來自專網的封包,并被轉發到外網卡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
<b>最後建立</b><b>NAT</b><b>規則,</b>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
<b>備份和恢複</b>
1、備份防火牆設定:[root@lg root]# iptables-save>iptablesrules.txt 本次設為iptablesdefault.txt
2、删除防火牆設定:[root@lg root]# iptables –F 删除所有的鍊。
3、恢複防火牆設定:[root@lg root]# iptables-restore iptablesrules.txt
<b>使防火牆自動化</b>
[root@linux-tys root]# iptables-save > /etc/sysconfig/iptables ---儲存規則到/etc/syscofig/iptables中,并自啟動
[root@linux-tys root]# /etc/init.d/iptables start/stop/restart ----儲存後則可用這個指令來控制其狀态
===============================================================================
<b>使用自定義鍊整固防火牆</b>
------------------------------------------
基本規則并不檢查除TCP連接配接狀态以外的事項,可通過自定義的鍊來擴充基本防火牆以助于處理增加的複雜性,更為複雜的規則集可指定哪一個TCP端口可以使用以及連接配接的源位址。同時建立特定的規則來處理單個連接配接可以減少黑客利用端口的機會。
<b>修改後的防火牆配置如下:</b>
1、首先也是啟用轉發,清空所有規則,設預設為DROP,在回送接口上允許所有内部網絡流量。然後我們将建立兩條自定義鍊來處理從專網和外網接口到達的封包。下面是SSH的通路要保留。
<b>2</b><b>、建立一個</b><b>PRIV</b><b>鍊來處理來自專用網絡的流量。</b>這個鍊傳遞已有傳回的封包,進入防火牆的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
<b>3</b><b>、建立一個鍊來處理來自</b><b>DMZ</b><b>(如果使用的話)以及外部網絡到達的流量。</b>這個鍊丢棄來自專用網絡和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
<b>4</b><b>、修改</b><b>FORWARD</b><b>鍊以建立網關功能。</b>自内網接口來的新的或已有的連接配接被轉發到外部接口上。
[root@linux-tys root]# iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
<b>5</b><b>、建立</b><b>SNAT</b><b>規則。</b>對源位址起作用轉換為192.168.32.254。此步後即可實作網關防火牆功能了。
[root@linux-tys root]# modprobe iptable_nat
<b>6</b><b>、配置</b><b>OUTPUT</b><b>鍊。</b>使之允許來自防火牆服務的封包傳到專用網絡及網際網路上。
[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
<b>7、 </b><b>檢查防火牆規則并添加一條規則然後儲存規則</b>
[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 或作下面指令的儲存
本文轉自hexianguo 51CTO部落格,原文連結:http://blog.51cto.com/xghe110/68584,如需轉載請自行聯系原作者