<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/1424

                    0x00 iptables介紹


                    linux的包過濾功能,即linux防火墻,它由netfilter 和 iptables 兩個組件組成。

                    netfilter 組件也稱為內核空間,是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。

                    iptables 組件是一種工具,也稱為用戶空間,它使插入、修改和除去信息包過濾表中的規則變得容易。

                    2014041522224868618.png

                    0x01 iptables的結構


                    iptables的結構:

                    iptables -> Tables -> Chains -> Rules
                    

                    簡單地講,tables由chains組成,而chains又由rules組成。iptables 默認有四個表Filter, NAT, Mangle, Raw,其對于的鏈如下圖。

                    enter image description here

                    0x02 iptables工作流程


                    enter image description here

                    0x03 filter表詳解


                    1. 在iptables中,filter表起過濾數據包的功能,它具有以下三種內建鏈:

                    INPUT鏈 – 處理來自外部的數據。 
                    OUTPUT鏈 – 處理向外發送的數據。 
                    FORWARD鏈 – 將數據轉發到本機的其他網卡設備上。 
                    

                    2. 數據流向場景

                    訪問本機:在INPUT鏈上做過濾

                    本機訪問外部:在OUTPUT鏈上做過濾

                    通過本機訪問其他主機:在FORWARD鏈上做過濾

                    3. Iptables基本操作

                    啟動iptables:service iptables start

                    關閉iptables:service iptables stop

                    重啟iptables:service iptables restart

                    查看iptables狀態:service iptables status

                    保存iptables配置:service iptables save

                    Iptables服務配置文件:/etc/sysconfig/iptables-config

                    Iptables規則保存文件:/etc/sysconfig/iptables

                    打開iptables轉發:echo "1"> /proc/sys/net/ipv4/ip_forward

                    0x04 iptables命令參考


                    命令:

                    iptables [ -t 表名] 命令選項 [鏈名] [條件匹配] [-j 目標動作或跳轉] 
                    

                    1. 表名

                    表名:Filter, NAT, Mangle, Raw

                    起包過濾功能的為表Filter,可以不填,不填默認為Filter

                    2. 命令選項

                    選項名 功能及特點
                    -A 在指定鏈的末尾添加(--append)一條新的規則
                    -D 刪除(--delete)指定鏈中的某一條規則,按規則序號或內容確定要刪除的規則
                    -I 在指定鏈中插入(--insert)一條新的規則,默認在鏈的開頭插入
                    -R 修改、替換(--replace)指定鏈中的一條規則,按規則序號或內容確定
                    -L 列出(--list)指定鏈中的所有的規則進行查看,默認列出表中所有鏈的內容
                    -F 清空(--flush)指定鏈中的所有規則,默認清空表中所有鏈的內容
                    -N 新建(--new-chain)一條用戶自己定義的規則鏈
                    -X 刪除指定表中用戶自定義的規則鏈(--delete-chain)
                    -P 設置指定鏈的默認策略(--policy)
                    -n 用數字形式(--numeric)顯示輸出結果,若顯示主機的 IP地址而不是主機名
                    -P 設置指定鏈的默認策略(--policy)
                    -v 查看規則列表時顯示詳細(--verbose)的信息
                    -V 查看iptables命令工具的版本(--Version)信息
                    -h 查看命令幫助信息(--help)
                    --line-number 查看規則列表時,同時顯示規則在鏈中的順序號

                    3. 鏈名

                    可以根據數據流向來確定具體使用哪個鏈,在Filter中的使用情況如下:

                    INPUT鏈 – 處理來自外部的數據。 
                    OUTPUT鏈 – 處理向外發送的數據。 
                    FORWARD鏈 – 將數據轉發到本機的其他網卡設備上。
                    

                    4. 條件匹配

                    條件匹配分為基本匹配和擴展匹配,拓展匹配又分為隱式擴展和顯示擴展。

                    a)基本匹配包括:

                    匹配參數 說明
                    -p 指定規則協議,如tcp, udp,icmp等,可以使用all來指定所有協議
                    -s 指定數據包的源地址參數,可以使IP地址、網絡地址、主機名
                    -d 指定目的地址
                    -i 輸入接口
                    -o 輸出接口

                    b)隱式擴展包括:

                    enter image description here

                    c)常用顯式擴展

                    enter image description here

                    5. 目標值

                    數據包控制方式包括四種為:

                    ACCEPT:允許數據包通過。 
                    DROP:直接丟棄數據包,不給出任何回應信息。 
                    REJECT:拒絕數據包通過,必須時會給數據發送端一個響應信息。 
                    LOG:在/var/log/messages 文件中記錄日志信息,然后將數據包傳遞給下一條規則。 
                    QUEUE:防火墻將數據包移交到用戶空間 
                    RETURN:防火墻停止執行當前鏈中的后續Rules,并返回到調用鏈(the calling chain) 
                    

                    0x05 Iptables常見命令


                    a) 1. 刪除iptables現有規則

                    iptables –F 
                    

                    b) 2. 查看iptables規則

                    iptables –L(iptables –L –v -n) 
                    

                    c) 3. 增加一條規則到最后

                    iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    

                    d) 4.添加一條規則到指定位置

                    iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    

                    e) 5.? 刪除一條規則

                    iptabels -D INPUT 2 
                    

                    f) 6.修改一條規則

                    iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    

                    g) 7. 設置默認策略

                    iptables -P INPUT DROP 
                    

                    h) 8.允許遠程主機進行SSH連接

                    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 
                    

                    i) 9.允許本地主機進行SSH連接

                    iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A INTPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 
                    

                    j) 10.允許HTTP請求

                    iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 
                    

                    k) 11.限制ping 192.168.146.3主機的數據包數,平均2/s個,最多不能超過3個

                    iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT 
                    

                    l) 12.限制SSH連接速率(默認策略是DROP)

                    iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPT? 
                    iptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 2 -m state --state NEW -j ACCEPT 
                    

                    0x06 如何正確配置iptables


                    a) 1. 刪除現有規則

                    iptables -F

                    b) 2.? 配置默認鏈策略

                    iptables -P INPUT DROP 
                    iptables -P FORWARD DROP 
                    iptables -P OUTPUT DROP 
                    

                    c) 3. 允許遠程主機進行SSH連接

                    iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT 
                    

                    d) 4. 允許本地主機進行SSH連接

                    iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT 
                    

                    e) 5. 允許HTTP請求

                    iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT 
                    iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT 
                    

                    0x07 使用iptables抵抗常見攻擊


                    1.防止syn攻擊

                    思路一:限制syn的請求速度(這個方式需要調節一個合理的速度值,不然會影響正常用戶的請求)

                    iptables -N syn-flood 
                    
                    iptables -A INPUT -p tcp --syn -j syn-flood 
                    
                    iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN 
                    
                    iptables -A syn-flood -j DROP 
                    

                    思路二:限制單個ip的最大syn連接數

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

                    2. 防止DOS攻擊

                    利用recent模塊抵御DOS攻擊

                    iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP 
                    

                    單個IP最多連接3個會話

                    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH? 
                    

                    只要是新的連接請求,就把它加入到SSH列表中

                    Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP? 
                    

                    5分鐘內你的嘗試次數達到3次,就拒絕提供SSH列表中的這個IP服務。被限制5分鐘后即可恢復訪問。

                    3. 防止單個ip訪問量過大

                    iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP 
                    

                    4. 木馬反彈

                    iptables –A OUTPUT –m state --state NEW –j DROP 
                    

                    5. 防止ping攻擊

                    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT 
                    

                    個人見解,不足之處求指正。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频