九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Linux包過濾防火墻

Linux包過濾防火墻

1,什么是包過濾防火墻

2,包過濾的工作層

     工作在網(wǎng)絡(luò)層

3,工作原理

    數(shù)據(jù)包過濾通過對數(shù)據(jù)包的IP頭和TCP或UDP頭的檢查來實現(xiàn)的主要有:

    IP源地址

    IP目標(biāo)地址

    協(xié)議(tcp包,udp包,和icmp包)

    tcp或udp的源端口

    imcp消息類型

    tcp包頭中的ack位

    數(shù)據(jù)包到達(dá)的端口

    數(shù)據(jù)包出去的端口

 

 

包過濾技術(shù)的優(yōu)缺點

   

    使用iptables實現(xiàn)包過濾

    相關(guān)的TCP/IP支持

   

    假如A要和B通信

    1,(SYN) B要和A通信時,B首先向A發(fā)一個SYN標(biāo)記的包,告訴 A請求建立連接

    2,(SYN/ACK) A收到后回發(fā)送一對SYN包的確認(rèn)包(SYN/ACK)回去,表示對第一個SYN包的確認(rèn),并繼續(xù)握手操作

    3,(ACK) B收到SYN/ACK包后,B發(fā)一個確認(rèn)包ACK,通知 A連接已建立。三次握手完成,一個TCP連接完成

    TCP連接的每個包都會設(shè)置ACK位,這就是連接跟蹤的重要意義,放火墻將無法判斷收到的ACK屬于一個已經(jīng)建立的連接

    結(jié)束TCP連接

   

iptables語法

一條iptables規(guī)則基本上因該包含5個要素

指定表 table     分別是 filter,nat和mangle

指定操作命令 command  包括添加,刪除,更新

指定鏈 chains        對于包過濾防火墻可操作filter表中的INPUT鏈,OUTPUT鏈和             FORWARD鏈

指定規(guī)則匹配器 mather  可以指定各種規(guī)則匹配,如IP地址,端口,包類型

指定目標(biāo)動作 target    當(dāng)規(guī)則匹配一個包時,真正要執(zhí)行的任務(wù)用目標(biāo)標(biāo)識。最常目標(biāo)                 為ACCEPT,DROP,REJECT表示拒絕,丟棄包的同時給發(fā)送沒有接                受的通知,LOG表示包的有關(guān)信息被記錄日志,TOS表示改寫包的TOS值

 

語法:

iptables [-t table] CMD [chain] [rule-matcher] [-j target]

table為表名,CMD為操作命令,chain為鏈名,rule-matcher為規(guī)則匹配器,target為目標(biāo)動作

 

iptables的常用操作命令

    -A 或 --append   在所有的鏈的結(jié)尾加入一條或多條規(guī)則

    -D 或 --delete   在所有的鏈刪除

    -R 或 --replace  替換一條匹配的規(guī)則

    -I 或 --insert   以給出的規(guī)則號在所選鏈中插入一條或多條規(guī)則。如果規(guī)則號是1,插入的規(guī)則的鏈的頭部 

    -L 或 --list    列出指定鏈的所有規(guī)則,如果沒有指定鏈,將列出所有鏈中的所有規(guī)則

 

    -F 或 --flush      清除指定鏈和表中的所有規(guī)則,假如不指定,將全部刪除

    -N 或 --new-chain   以給定的名字創(chuàng)建一條新的用戶自定義鏈。不能與已有的鏈同名

    -X 或 --delete-chain 刪除指定的用戶定義鏈

    -P 或 --policy(n政策,方針) 為永久鏈指定默認(rèn)規(guī)則。用戶定義鏈沒有默認(rèn)規(guī)則。缺剩                      規(guī)則也是規(guī)則鏈中的最后一條規(guī)則用-L命令顯示時它在第一                   行顯示

    -C 或 --check             檢測給定的包是否與指定鏈的規(guī)則相匹配

    -X 或 --zero               將指定鏈中所有規(guī)則的包字節(jié)(byte)計數(shù)器清零

    -h         顯示幫助信息

 

iptables常用的規(guī)則匹配器

    -p,[!]protocol      指出要匹配的協(xié)議,可以是tcp,udp,icmp,all.協(xié)議名前綴"!",                       為邏輯非

    -s[!]address[/mask]    根據(jù)源地址或地址范圍確定是否允許或拒絕數(shù)據(jù)包通過過濾器

    --sport[!]port[:port]  指定匹配規(guī)則的源端口或端口范圍??梢杂枚丝谔?span style="mso-tab-count: 1">

    -d[!]address[/mask]    根據(jù)目的地址或地址范圍確定是否允許或拒絕數(shù)據(jù)包通過過濾器

    -dport[!]port[:port]   指定匹配規(guī)則的目的端口或端口范圍,可以用端口號,也可以                                          用/etc/services文件中的名字

    --icmp-type[!]typename 指定匹配規(guī)則的ICMP信息類(可以使用iptables -p icmp -h                               查看有效的icmp類型名)

    -i[!]interface name[+] 匹配單獨的接口或某種類型的接口設(shè)置過濾規(guī)則。此參數(shù)忽略                                      時,默認(rèn)符合所有接口。接口可以使用否定符"!"來匹配不是指                                       定接口來包.參數(shù)interfacename是接口名,如eth0,eth1,ppp0                                         等。指定一個目前不存在的接口是完全合法的。規(guī)則直到接口時                                       才起作用,這種指定對于PPP及該選項只有對INPUT,FROWARD和                                           PREROUTING鏈?zhǔn)呛戏ǖ?o:p>

   

    -o[!]interface name[+] 僅僅匹配設(shè)置了SYN位,清除了ACK,FIN位的TCP包.這些包表示請求初始化的TCP連接。阻止從接口來的這樣的包將會組織外來的TCP連接請求。但輸出的TCP連接請求將不受影響。這個參數(shù)僅僅當(dāng)協(xié)議類型設(shè)置為TCP時才能用 

 

    -m  --match       -m選項引出了iptables的state擴展模塊,比如mac擴展模塊,它實現(xiàn)根據(jù)主機網(wǎng)卡的MAC地址進(jìn)行權(quán)限控制的規(guī)則:

    iptables -A INPUT -p tcp -m mac --mac-source 01:02:03:04:05:06 -j ACCEPT

    擴展模塊是iptables體系中的特色,它使得iptables成為一個可擴展的安全體系結(jié)構(gòu)。你可以從這里了解更多關(guān)于iptables擴展模塊的知識:http://www.iptables.org/document ... tensions-HOWTO.html

                   

    [!]-syn         僅僅匹配設(shè)置了SYN位,清除

 

    --state state,state...   狀態(tài)匹配

 

    這里,state是一個用逗號分割的列表,表示要匹配的連接狀態(tài)。有效的狀態(tài)選項包括:INVAILD,表示分組對應(yīng)的連接是未知的;ESTABLISHED,表示分組對應(yīng)的連接已經(jīng)進(jìn)行了雙向的分組傳輸,也就是說連接已經(jīng)建立;NEW,表示這個分組需要發(fā)起一個連接,或者說,分組對應(yīng)的連接在兩個方向上都沒有進(jìn)行過分組傳輸;RELATED,表示分組要發(fā)起一個新的連接,但是這個連接和一個現(xiàn)有的連接有關(guān),例如:FTP的數(shù)據(jù)傳輸連接和控制連接之間就是RELATED關(guān)系。

 

    對于本地產(chǎn)生分組,在PREROUTING或者OUTPUT鏈中都可以對連接的狀態(tài)進(jìn)行跟蹤。在進(jìn)行狀態(tài)檢測之前,需要重組分組的分片。這就是為什么在iptables中不再使用ipchains的ip_always_defrag開關(guān)。UDP和TCP連接的狀態(tài)表由/proc/net/ip_conntrack進(jìn)行維護。稍后我們再介紹它的內(nèi)容。狀態(tài)表能夠保存的最大連接數(shù)保存在/proc/sys/net/ipv4/ip_conntrack_max中。它取決于硬件的物理內(nèi)存。

 

分組是否匹配狀態(tài)表中的一個已經(jīng)實現(xiàn)(ESTABLISHED)的連接。

它是否是和狀態(tài)表中某個UDP/TCP連接相關(guān)(RELATED)的一個ICMP分組。

這個分組是否要發(fā)起一個新(NEW)的連接。

如果分組和任何連接無關(guān),就被認(rèn)為是無效(INVALID)的。

 

iptables -A INPUT -i eth0 -m state --state NEW -j DROP  

//禁止從eth0進(jìn)來的NEW狀態(tài),也就是禁止來自eth0的新的訪問請求

 

指定永久性規(guī)則

    /sbin/iptables-save > /usr/local/iptables_bat    導(dǎo)出

    /sbin/iptables-restore < /usr/local/iptables_bat 導(dǎo)入

service iptables save

 

iptalbe命令使用舉例

    1,鏈的基本操作

    要清除所有的配置

    iptables -F

    iptables -X   清除

    iptables -Z   將指定鏈中所有規(guī)則的包字節(jié)計數(shù)器清零

    (2)設(shè)置鏈的默認(rèn)策略.一般地  有兩種方法

      

    首先允許所有的包,然后在禁止有危險的包通過防火墻。即沒有被決絕的都允許,這種方法對用戶而言比較靈活方便, 但對系統(tǒng)而言,容易引起嚴(yán)重的安全問題

      iptables -P INPUT ACCEPT

      iptables -P OUTPUT ACCEPT

      iptables -P FORWARD ACCEPT

   

      首先禁止所有的包

      iptalbes -P INPUT DROP

      iptables -P OUTPUT ACCEPT

      iptables -P FORWARD DROP

   

       列出表/鏈中的所有規(guī)則    包過濾防火墻只使用filter表,它是默認(rèn)表 因此會顯示filter表中所有規(guī)則

       iptables -L

       iptables -L -n 參數(shù)用于顯示數(shù)字化的地址和端口

 

       向鏈中添加規(guī)則。下面的語句用于開放網(wǎng)絡(luò)接口.

       iptables -A INPUT -i lo -j ACCEPT

       iptables -A OUTPUT -o lo -j ACCEPT

       iptables -A INPUT -i eth1 -j ACCEPT

       iptables -A OUTPUT -o eht1 -j ACCEPT

          iptables -A FORWARD -o eth1 -j ACCEPT

   

    本地進(jìn)程不會經(jīng)過FORWARD鏈,因此lo只有INPUT和OUTPUT兩個鏈上作用

   

    用戶自定義鏈

       iptables -N custom(n習(xí)俗,風(fēng)俗v定值)         //新建coustom定義鏈

       iptables -A coutom -s 0/0 -p icmp -j DROP   //丟棄全部ICMP包

       iptables -A INPUT -s 0/0 -d 0/0 -j custom   //INPUT鏈中加入一條規(guī)則,使所有的包都由custom子定義鏈處理.結(jié)果全部的ICMP包都被丟棄

   

包的處理方式:  DROP,ACCEPT,REIECT(彈回),LOG

    iptables -A INPUT -p icmp -j DORP

    iptables -A INPUT -p tcp -d 219.237.206.200 --dport 22 -j ACCEPT

    iptables -A OUTPUT -p tcp -s 10.0.0.254 --sport 22 -j ACCEPT

    iptables -p INPUT DROP 改變防火墻默認(rèn)策略

    iptables -p ACCEPT DROP

    iptables -p OUTPUT DROP

    iptables -A INPUT -p tcp -d 10.0.0.254 --dport 80 -j ACCEPT

    iptables -A OUTPUT -p tcp -s 10.0.0.254 --sport 22 -j ACCEPT

    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT   //允許DNS通過

    iptables -A INPUT -p udp --sport 53 -j ACCEPT

    iptables -A INPUT -p udp 10.0.0.254 --dport 53 -j ACCEPT  //DNS字節(jié)訪問字節(jié)也要打開

    iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

    iptables -D INPUT 5  //刪除INPUT 5個編號

如果自己是某種客戶機和服務(wù)器的話,需要在連上加兩個條件

    還需要開通本機的服務(wù)器

    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

    iptables -A OUTPUT -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT

 

可以設(shè)置本機的包,不能從本機的22端口自動的出去,因為沒有驗證過

下面表示跟本機建立過連接的包,才能從22端口出去,防止本機自從動從22端口出去

    iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

現(xiàn)在就可以刪除原來的包了

    iptables -D OUTPUT 1

下面是不允許本地產(chǎn)生包主動從80端口發(fā)送給別人!

    iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

刪除原來的設(shè)置

    上面是作為服務(wù)器有這個問題,做為客戶機也會產(chǎn)生這個問題

    iptables -A INPUT -p tcp --sport 22 -m state --state ESTABALIASHAED -j ACCEPT

 

LOG目標(biāo)

 

    iptables-save > /etc/sysconfig/iptalbes  保存

 

2,設(shè)置基本的規(guī)則匹配

指定協(xié)議匹配

        iptables -A INPUT -p tcp        // 匹配指定的協(xié)議

        iptables -A INPUT -p !tcp         // 匹配指定協(xié)議之外的所有協(xié)議

指定地址匹配

        iptables -A INPUT -s 192.168.1.11  // 指定匹配的主機

        iptables -A INPUT -s 192.168.10.0/24

        iptables -A FORWARD -s ! 192.168.0.1

    iptables -A FORWARD -s ! 192.168.0.0/24 //指定網(wǎng)絡(luò)之外的網(wǎng)絡(luò)    

 

指定網(wǎng)絡(luò)接口匹配

指定單一的網(wǎng)絡(luò)接口匹配

       iptables -A INPUT -i eth0

        iptables -A FORWARD -o eth0

        指定同類型的網(wǎng)絡(luò)接口匹配

        iptables -A FORWARD -o ppp+

        指定單一的端口匹配

        iptables -A INPUT -p tcp --sport www

        iptables -A INPUT -p tcp --sport 80

        iptables -A INPUT -p udp --sport 53

        iptables -A INPUT -p udp --dport 53

        匹配指定端口之外的端口

        iptables -A INPUT -p tcp --dport ! 22

        匹配指定的端口范圍

        iptables -A INPUT -p tcp --sport 22:80

           匹配ICMP端口和ICMP類型

        iptables -A INPUT -p icmp --icmp-type 8

 

        指定ip碎片

        在TCP/IP通信過程中,每一個網(wǎng)絡(luò)接口都有嚴(yán)格最大傳輸單元(MTU),這個參數(shù)定義可以通過的數(shù)據(jù)包的最大尺寸。如果一個數(shù)據(jù)包大于這個參數(shù)值時,系統(tǒng)會將其劃分成更小的數(shù)的數(shù)個數(shù)據(jù)包(成為IP歲片)

        ....................

 

    設(shè)置擴展的規(guī)則匹配

   

       包過濾防火墻配置舉例

 

包過濾防火墻配置舉例

    touch /etc/rc.d/filter-firewall

    chmod u+x /etc/rc.d/filter-firewall

    echo "/etc/rc.d/filter-firewall" >> /etc/rc.d/rc.local

    vi /etc/rc.d/filter-firewall

   

    #!/bin/sh

    echo "String iptables rules..."

    echo "1" /proc/sys/net/ipv4/ip_forward

    ipt=/sbin/iptables

    www-server=192.168.0.100

    ftp-server=192.168.0.200

    email-server=192.168.0.210

    ip_range="198.168.80.0/24"

 

##########################################################################

 

刷新所有的鏈的規(guī)則

iptables -F

首先禁止轉(zhuǎn)發(fā)任何包,然后再一步步設(shè)置允許通過的包

所有首先設(shè)置防火墻FORWARD鏈的策略為DROP

iptables -P FORWARD DROP

下面設(shè)置關(guān)于服務(wù)器的包過濾規(guī)則

由于服務(wù)器/客戶機交互是雙向的,所有不僅僅要設(shè)置數(shù)據(jù)包

   

       NAT與代理服務(wù)器

 

echo "1" > /proc/sys/net/ipv4/ip_forware

 

NAT表也有三個缺省的鏈

    prerouting: 可以在這里面定義進(jìn)行目的nat的規(guī)則,因為路由器進(jìn)行路由時檢查數(shù)據(jù)包的目的ip地址,所以為了使數(shù)據(jù)包得以正確路由,我們必須在路由之前就進(jìn)行目的nat

    postrouteing 可以在這里定義進(jìn)行源nat的規(guī)則,系統(tǒng)在決定了數(shù)據(jù)包的路由以后在執(zhí)行該鏈中的規(guī)則。

    output: 定義對本地產(chǎn)生的數(shù)據(jù)包的目的的nat規(guī)則

 

Netfilter的Nat表

prerouting 和 postrouting表

 

SNAT原地址轉(zhuǎn)換        destination: 11.22.3.1   source 192.168.0.1

DNAT目標(biāo)地址轉(zhuǎn)換

   

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.0.254

把源的10.0.0.0/24翻譯成一個192.168.0.254的一個服務(wù)器地址

 

內(nèi)網(wǎng)翻譯成外網(wǎng)地址 net nat

 

                                 FORWARD

  PREROUTING ----+--------------#########------+----------- POSTROUTING

                   |(routing)                         |

 

                 INPUT                         OUTPUT

 

兩個特殊的轉(zhuǎn)發(fā)點

源地址轉(zhuǎn)換(SNAT) 在POSTROUTING點不能發(fā)生在PREROUTING

 

和目標(biāo)地址轉(zhuǎn)換(DNAT)只能在PREROUTING

 

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 219.237.206.200

把源地址翻譯成外網(wǎng)地址

 

如果需要偽裝或不知道要影射成什么地址,可以偽裝,他支持動態(tài)地址

 

初始化工作

 

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

 

添加規(guī)則

 

iptables -A INPUT -i ! ppp0 -j ACCEPT  //棘手接受所有的,來源不是網(wǎng)絡(luò)接口ppp0的數(shù)據(jù)

 

nat配置

 

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 219.237.206.200

//偽裝局域網(wǎng)機器的ip地址進(jìn)入互聯(lián)網(wǎng)

 

//把目的ip 219.237.206.200端口為21影射到內(nèi)網(wǎng)192.168.0.1的機器上

iptables -t nat -A PREROUTING -d 219.237.206.200 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80

iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.1 --sport 80 -j SNAT --to-source 219.237.206.200:80

 

iptables -t nat -A PREROUTING -d 219.237.206.200 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80

//把目的 219.237.206.200端口為80(web服務(wù))影射到內(nèi)網(wǎng)192.168.0.1上

 

iptables -t nat -A POSTROUTING -p tcp --dst 219.237.206.200 --dport 80 -j SNAT --to-source 192.168.0.1

iptables -t nat -A PREROUTING --dst 192.168.0.1 -p tcp --dport 80 -j DNAT  --to-destination 219.237.206.200

 

配置舉例

iptables -t nat -A PREROUTING --dst 219.237.206.200 -p tcp --dport 80 -j DNAT  --to-destination 192.168.0.1

iptables -t nat -A PREROUTING --dst 219.237.206.200 -p tcp --dport 21 -j DNAT  --to-destination 192.168.0.1

iptables -t nat -A PREROUTING --dst 219.237.206.200 -p tcp --dport 3306 -j DNAT  --to-destination 192.168.0.1

 

iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 80 -j SNAT  --to-source 192.168.0.168

iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 21 -j SNAT  --to-source 192.168.0.168

iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 3306 -j SNAT  --to-source 192.168.0.168

iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 22 -j SNAT  --to-source 192.168.0.168

 

iptables -t nat -A PREROUTING --dst 219.237.206.201 -p tcp --dport 22 -j DNAT  --to-destination 192.168.0.1

iptables -t nat -A PREROUTING --dst 219.237.206.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80

iptables -t nat -A POSTROUTING -p tcp --dst 219.237.206.200 --dport 80 -j SNAT  --to-source 192.168.0.1

 

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASAQUERADE

iptables -t nat -A PREROUTING -i eth0 -d 219.237.206.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80

iptables -t nat -A POSTROUTING -s 219.237.206.202/32 -j SNAT --to-source 192.168.0.1

 

iptables 配置例子帶vpn

#添加模塊

modporbe ipt_MASQUERADE

modporbe ip_conntrack_ftp

modporbe ip_nat_ftp

#############################################################

iptables -F

iptables -t nat -F

iptables -X

iptables -t nat -X

#############################################################

iptables -p INPUT DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dport 110,80,25 -j ACCEPT

iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT

#允許內(nèi)網(wǎng)samba,smtp,pop3連接

iptables -A INPUT -i eth1 -p udp -m multiport --dports 53 -j ACCEPT

#允許dns連接

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT     //vpn端口

iptables -A INPUT -p gre -j ACCEPT

#允許外網(wǎng)連接vpn

iptables -A INPUT -i ppp0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP

#為了防止dos太多連接近來,那么可以允許最多15個出始連接,超過則丟棄

 

iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \ --to-source $LAN_IP

 

iptables -I INPUT -s 192.168.0.12 -j ACCEPT

iptables -I FORWARD -s 192.168.0.12 -j ACCEPT

#192.168.0.12是我的機子,全部放行

 

iptables -A FORWARD -p icmp -s 192.168.0.0/24 -j ACCEPT

 

iptables的狀態(tài)檢測機制

 

 

Iptables 綜合例子

 

#!/bin/sh

echo "String iptables rules..."

echo "1" /proc/sys/net/ipv4/ip_forward

Out_ip=219.237.206.200

In_ip=192.168.0.1

network_gateway=192.168.0.168

ip_range="198.168.80.0/24"

 

//先初始化工作

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

 

//禁止所有的包通過

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

 

 

 

 

 

 

 

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
iptables全面詳解(圖文并茂含命令指南)
iptables實戰(zhàn)記錄
linux下用iptables做本機端口轉(zhuǎn)發(fā)方法
iptables防火墻配置詳解
iptables高級應(yīng)用
linux iptable 使用指南 – 愛開源
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服