Linux下的防火牆iptables,linuxiptables

來源:互聯網
上載者:User

Linux下的防火牆iptables,linuxiptables
Linux防火牆簡介:    首先,網路封包要進入你主機,需要經過的流程:通過防火牆、伺服器軟體程式(驗證帳號)、SELinux與檔案系統(許可權rwx等)等。    防火牆的主要類別:1,Netfilter (封包過濾機制);  2,TCP Wrappers (程式控管);  3,Proxy (Proxy 伺服器)。        Netfilter可做的事:1,、拒絕讓 Internet 的封包進入主機的某些連接埠口;                                          2、拒絕讓某些來源 IP 的封包進入                                          3、拒絕讓帶有某些特殊旗標 (flag) 的封包進入                                          4、分析硬體地址 (MAC) 來決定聯機與否
        TCP Wrappers :是透過 /etc/hosts.allow, /etc/hosts.deny 這兩個寶貝蛋來管理的一個類似防火牆的機制, 但並非所有的軟體都可以透過這兩個檔案來控管,只有底下的軟體才能夠透過這兩個檔案來管理防火牆規則,分別是:1、由 super daemon (xinetd) 所管理的服務;2、有支援 libwrap.so 模組的服務。
        Proxy  :

Netfilter :iptables機制
    因為iptables用得更多範圍更廣,所以這裡只詳細介紹Netfilter :iptables防火牆,其他兩個,請想深入瞭解的讀者自行百度。
iptables簡介:    註:當一個網路封包要進入到主機之前,會先經由 NetFilter 進行檢查,那就是 iptables 的規則了。 檢查通過則接受 (ACCEPT) 進入本機取得資源,如果檢查不通過,則可能予以丟棄 (DROP) ! 中主要的目的在告知你:『規則是有順序的』!例如當網路封包進入 Rule 1 的比對時, 如果比對結果符合 Rule 1 ,此時這個網路封包就會進行 Action 1 的動作,而不會理會後續的 Rule 2, Rule 3.... 等規則的分析了。

    Linux 的 iptables 至少就有三個表格,包括管理本機進出的 filter 、管理後端主機 (防火牆內部的其他電腦) 的 nat 、管理特殊旗標使用的 mangle (較少使用) 。    這裡筆者只介紹filter:        1、INPUT:主要與想要進入我們 Linux 原生封包有關;        2、OUTPUT:主要與我們 Linux 本機所要送出的封包有關;        3、FORWARD:這個東東與 Linux 本機比較沒有關係, 他可以『轉遞封包』到後端的電腦中,與 nat table 相關性較高。
iptables文法:規則的觀察與清除:
    查看:   

 [root@www ~]# iptables [-t tables] [-L] [-nv]         選項與參數: -t :後面接 table ,例如 nat 或 filter ,若省略此項目,則使用預設的 filter                      -L :列出目前的 table 的規則                      -n :不進行 IP 與 HOSTNAME 的反查,顯示訊息的速度會快很多!                     -v :列出更多的資訊,包括通過該規則的封包總位元、相關的網路介面等

    例如:iptables -L -n    iptables-save 這個指令也可以觀察防火牆規則。
    清除:
    [root@www ~]# iptables [-t tables] [-FXZ]         選項與參數: -F :清除所有的已訂定的規則;                     -X :殺掉所有使用者 "自訂" 的 chain (應該說的是 tables )囉;                     -Z :將所有的 chain 的計數與流量統計都歸零

定義預設政策 (policy):
    [root@www ~]# iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]         選項與參數: -P :定義政策( Policy )。注意,這個 P 為大寫啊!                         ACCEPT :該封包可接受                         DROP :該封包直接丟棄,不會讓 client 端知道為何被丟棄。
    在本機方面的預設政策中,假設你對於內部的使用者有信心的話, 那麼 filter 內的 INPUT 鏈方面可以定義的比較嚴格一點,而 FORWARD 與 OUTPUT 則可以訂定的松一些! 
       範例:將原生 INPUT 設定為 DROP ,其他設定為 ACCEPT            [root@www ~]# iptables -P INPUT DROP            [root@www ~]# iptables -P OUTPUT ACCEPT            [root@www ~]# iptables -P FORWARD ACCEPT


封包的基礎比對:IP, 網域及介面裝置:
   
 [root@www ~]# iptables [-AI 鏈名] [-io 網路介面] [-p 協議]  [-s 來源IP/網域] [-d 目標IP/網域] -j [ACCEPT|DROP|REJECT|LOG]        選項與參數: -AI 鏈名:針對某的鏈進行規則的 "插入" 或 "累加"                       -A :新增加一條規則,該規則增加在原本規則的最後面。例如原本已經有四條規則, 使用 -A 就可以加上第五條規則!                       -I :插入一條規則。如果沒有指定此規則的順序,預設是插入變成第一條規則。 例如原本有四條規則,使用 -I 則該規則變成第一條,而原本四條變成 2~5 號 鏈 :有 INPUT, OUTPUT, FORWARD 等,此鏈名稱又與 -io 有關,請看底下。                      -io 網路介面:設定封包進出的介面規範                      -i :封包所進入的那個網路介面,例如 eth0, lo 等介面。需與 INPUT 鏈配合;                       -o :封包所傳出的那個網路介面,需與 OUTPUT 鏈配合;                      -p 協定:設定此規則適用於哪種封包格式 主要的封包格式有: tcp, udp, icmp 及 all 。                      -s 來源 IP/網域:設定此規則之封包的來源項目,可指定單純的 IP 或包括網域,                                例如: IP :192.168.0.100                                       網域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。                                                          若規範為『不許』時,則加上 ! 即可,例如: -s ! 192.168.100.0/24 表示不許 192.168.100.0/24 之封包來源;                       -d 目標 IP/網域:同 -s ,只不過這裡指的是目標的 IP 或網域。                      -j :後面接動作,主要的動作有接受(ACCEPT)、丟棄(DROP)、拒絕(REJECT)及記錄(LOG)                               


TCP, UDP 的規則比對:針對連接埠設定:
   
 [root@www ~]# iptables [-AI 鏈] [-io 網路介面] [-p tcp,udp]  [-s 來源IP/網域] [--sport 埠口範圍]  [-d 目標IP/網域] [--dport 埠口範圍] -j [ACCEPT|DROP|REJECT]        選項與參數: --sport 埠口範圍:限制來源的連接埠口號碼,連接埠口號碼可以是連續的,例如 1024:65535                      --dport 埠口範圍:限制目標的連接埠口號碼。
              註:因為僅有 tcp 與 udp 封包具有連接埠,因此你想要使用 --dport, --sport 時,得要加上 -p tcp 或 -p udp 的參數才會成功喔

iptables 外掛模組:mac 與 state:
    [root@www ~]# iptables -A INPUT [-m state] [--state 狀態]         選項與參數:             -m :一些 iptables 的外掛模組,主要常見的有:                   state :狀態模組                 --state :一些封包的狀態,主要有:                             INVALID :無效的封包,例如資料破損的封包狀態                             ESTABLISHED:已經聯機成功的聯機狀態;                             NEW :想要建立立聯機的封包狀態;                            RELATED :這個最常用!表示這個封包是與我們主機發送出去的封包有關                   mac :網路卡硬體地址 (hardware address)                --mac-source :就是來源主機的 MAC 啦!



ICMP 封包規則的比對:針對是否響應 ping 來設計:
    小知識:ICMP 協定當中我們知道 ICMP 的類型相當的多,而且很多 ICMP 封包的類型都是為了要用來進行網路檢測用的!所以最好不要將所有的 ICMP 封包都丟棄!如果不是做為路由器的主機時,通常我們會把 ICMP type 8 (echo request) 拿掉而已,讓遠程主機不知道我們是否存在,也不會接受 ping 的響應就是了。   
 [root@www ~]# iptables -A INPUT [-p icmp] [--icmp-type 類型] -j ACCEPT         選項與參數:               --icmp-type :後面必須要接 ICMP 的封包類型,也可以使用代號, 例如 8 代表 echo request 的意思。


IPv4 的核心管理功能: /proc/sys/net/ipv4/*
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies        阻斷式服務 (DoS) 攻擊法當中的一種方式,就是利用 TCP 封包的 SYN 三向交握原理所達成的, 這種方式稱為 SYN Flooding,上面指令就是啟用核心的 SYN Cookie 模組來防止這種情況。
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts        讓核心自動取消 ping 的響應。/proc/sys/net/ipv4 內的 icmp_echo_ignore_broadcasts (僅有 ping broadcast 地址時才取消 ping 的回應) 及 icmp_echo_ignore_all (全部的 ping 都不回應)。

    /proc/sys/net/ipv4/conf/網路介面/*
        rp_filter:稱為逆向路徑過濾 (Reverse Path Filtering), 可以藉由分析網路介面的路由資訊配合封包的來源地址,來分析該封包是否為合理。舉例來說,你有兩張網卡,eth0 為 192.168.1.10/24 ,eth1 為 public IP 。那麼當有一個封包自稱來自 eth1 ,但是其 IP 來源為 192.168.1.200 , 那這個封包就不合理,應予以丟棄。這個設定值建議可以啟動的。
        log_martians:這個設定資料可以用來開機記錄不合法的 IP 來源, 舉例來說,包括來源為 0.0.0.0、127.x.x.x、及 Class E 的 IP 來源,因為這些來源的 IP 不應該應用於 Internet 啊。 記錄的資料預設放置到核心放置的登入檔 /var/log/messages。
        accept_source_route:或許某些路由器會啟動這個設定值, 不過目前的裝置很少使用到這種來源路由,你可以取消這個設定值。
        accept_redirects:當你在同一個實體網域內架設一部路由器, 但這個實體網域有兩個 IP 網域,例如 192.168.0.0/24, 192.168.1.0/24。此時你的 192.168.0.100 想要向 192.168.1.100 傳送訊息時,路由器可能會傳送一個 ICMP redirect 封包告知 192.168.0.100 直接傳送資料給 192.168.1.100 即可,而不需透過路由器。因為 192.168.0.100 與 192.168.1.100確實是在同一個實體線路上 (兩者可以直接互連),所以路由器會告知來源 IP 使用最短路徑去傳遞資料。但那兩部主機在不同的 IP 段,卻是無法實際傳遞訊息的!這個設定也可能會產生一些輕微的安全風險,所以建議關閉他。
        send_redirects:與上一個類似,只是此值為發送一個 ICMP redirect 封包。 同樣建議關閉。

案例以下介紹是基於一台伺服器,系統為centos7:
#!/bin/bash#網卡資訊,環境變數EXTIF="eno1"#公網網卡介面INIF="eno16777736"#內部LAN介面INNET="192.168.1.0/24"#內部網FILEDIR="/usr/local/erdangjiade/iptables/"#allow、deny檔案的存放路徑export EXTIF INIF INNET FILEDIR#設定核心的網路功能echo "1" > /proc/sys/net/ipv4/tcp_syncookiesecho "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsfor i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; doecho "1" > $idonefor i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,send_redirects}; doecho "0" > $idone#設定規則PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin;export PATHiptables -Fiptables -Xiptables -Ziptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -p TCP -m state --state NEW -i $INIF -j ACCEPTiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT#允許內網pingiptables -A INPUT -i $INIF -p icmp -j ACCEPT#個別設定if [ -f ${FILEDIR}iptables.deny ]; thensh ${FILEDIR}iptables.denyfiif [ -f ${FILEDIR}iptables.allow ]; thensh ${FILEDIR}iptables.allowfi#防止大量ping#AICMP="0 3 3/4 4 11 12 14 16 18"#for tyicmp in $AICMP#do#iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT#done#對某些服務開放連接埠#SSHiptables -A INPUT -p TCP -i $EXTIF --dport 22 --sport 1024:65534 -j ACCEPT#WWWiptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport 1024:65534 -j ACCEPT#儲存以上修改service iptables save
    如果想將上述案例的防火牆設定開機啟動,可以將案例文檔的路徑寫入/etc/rc.d/rc.local(只需將路徑寫入,不用在前面加bash執行),註:rc.local預設是不可執行檔,需要將它開啟:chmod  +x  /etc/rc.d/rc.local

參考文章:《鳥哥的私房菜,伺服器篇》
    轉載請標明原文出處:http://blog.csdn.net/u012367513/article/details/40628197

    
在linux 下怎設定iptables 防火牆

Iptable -A Input -p Tcp -d 自己的IP地址 b --dPort 連接埠 -J Reject

RedHat機器
cat /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [10276:1578052]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13784:16761487]
-A INPUT -s 10.0.0.0/255.0.0.0 -i eth1 -j DROP
-A INPUT -s 172.16.0.0/255.240.0.0 -j DROP
-A INPUT -s 192.168.0.0/255.255.0.0 -i eth1 -j DROP #eth1 is interface to internet
# anti Sync Flood
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
# anti some port scan
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
# anti ping of death
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
COMMIT

chkconfig iptables on
以後每次啟動iptables就會自動讀取設定檔(/etc/sysconfig/iptables)
自動啟動
或者是/etc/rc.d/init.d/iptables start手工啟動
/etc/rc.d/init.d/iptables stop手工停止

在LINUX下架設防火牆

linuxbird
隨著Internet的普及,人們的日常工作與之的關係也越來緊密,因而越來越多的單位為員工開設了Internet的代理上網服務。但當一個企業的內部網路接上Internet之後,企業的內部資源就象待賣的羔羊一樣,面臨任人宰割的危險,因而系統的安全除了考慮電腦病毒、系統的健壯性等內部原因之外,更主要的是防止非法使用者通過Internet的入侵。而目前防止的措施主要是靠防火牆的技術完成。

一、什麼是防火牆
防火牆(firewall)是指一個由軟體或和硬體裝置群組合而成,處於企業或網路群體電腦與外界通道(Internet)之間,限制外界使用者對內部網路訪問及管理內部使用者訪問外界網路的許可權。主要是控制對受保護的網路(即網點)的往返訪問,逼使各連接點的通過能得到檢查和評估。

從誕生到現在,防火牆已經曆了四個發展階段:基於路由器的防火牆、使用者化的防火牆工具套、建立在通用作業系統上的防火牆、具有安全作業系統的防火牆。目前防火牆供應商提供的大部分都是具有安全作業系統的軟硬體結合的防火牆,象NETEYE、NETSCREEN、TALENTIT等。在LINUX作業系統上的防火牆軟體也很多,除了下面要專門介紹的IPCHAINS外,還有很多,如:Sinus Firewall、Jfwadm......餘下全文>>
 
對於 LINUX 防火牆 iptables 的問題

這個設定setup時會受到影響。假如你之前setup裡防火牆是關閉的話,如果你此時自己制定了很多策略並儲存到了/etc/sysconfig/iptables裡了。而此時用setup把防火牆改成啟用,那麼你所有自己定義的策略將消失,防火牆此時會產生一些自己初始化預設的策略;所以建議建議配置好策略後不要輕易用setup更改狀態。
除此之外,其他的操作基本不會影響你儲存的策略配置。

iptables 儲存策略的大致介紹:
iptables命令建立的規則臨時儲存在記憶體中。如果系統在永久儲存這些規則之前重啟,所有設定的規則都將丟失。如果要想使iptables設定的規則在下次重啟系統之後仍然生效則需要永久儲存這些規則,以root身份執行:
/sbin/service iptables save
該操作將執行iptables初始化指令碼,該指令碼會運行/sbin/iptables-save程式並更新當前的iptables設定檔/etc/sysconfig/iptables。
而原來的設定檔將儲存為iptables.save。下次系統系統啟動時,iptables初始化指令碼將使用/sbin/iptables-restore命令重新讀取/etc/sysconfig/iptables檔案的內容。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.