• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2016年8月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            服務器通常會安裝防火墻,Iptables為比較常用的免費防火墻,Iptables能夠提供數據包過濾,網絡地址轉換(NAT)等功能.在Debian上手工配置Iptables的資料比較少,本文做一個詳細的介紹.

            第一步,首先確定你的系統已經安裝Iptables.打開SSH終端,輸入
            whereis iptables
            如果能看到如下類似信息,說明你已經安裝了iptables
            iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
            如果不是這個提示,或者沒有任何提示,那你的Debian上可能沒有安裝iptables
            請使用如下命令安裝:
            apt-get install iptables

            第二步:查看Iptables目前的配置信息
            可以使用如下命令查看
            iptables -L
            如果你是第一次安裝配置iptables,你可能會看到如下結果:

            Chain INPUT (policy ACCEPT)
            target prot opt source destination
            Chain FORWARD (policy ACCEPT)
            target prot opt source destination
            Chain OUTPUT (policy ACCEPT)
            target prot opt source destination

            這個結果,也就是防火墻充許所有的請求,就如沒有設置防火墻一樣.

            第三步:配置Iptables
            配置Iptables,我們先把一個基本的Iptables的規則文章保存起來,這個規則文章做為測試用
            vim /etc/iptables.test.rules
            然后在這個文章中輸入如下規則內容。

            *filter
            # 允許回環網卡
            -A INPUT -i lo -j ACCEPT
            -A OUTPUT -o lo -j ACCEPT
            # 允許已建立的或相關連的通行
            -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
            -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
            # Allows all outbound traffic
            # 允許所有本機向外的訪問(選這個的話就把其它OUTPUT規則刪除即可)
            #-A OUTPUT -j ACCEPT
            # 允許ssh:22 http:80 https:443 ftp:21(20000-20500)端口進入訪問
            -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
            -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
            -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
            #-A INPUT -m state --state NEW -p tcp -m multiport --dports 21,20000:20500 -j ACCEPT
            #-A INPUT -p tcp -s 0/0 --sport 20000:20500 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
            #允許本地DNS(udp 53端口)和ntp(udp 123端口)訪問外網
            -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -j ACCEPT
            -A OUTPUT -p udp -d 8.8.4.4 --dport 53 -j ACCEPT
            #-A OUTPUT -p udp --dport 123 -j ACCEPT
            # 允許PING(不允許的話把下面那個刪了就可以)
            -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
            #記錄接收數據包被拒絕(log-level=7)的日志,最高記錄頻率為5條/分鐘,日志可通過dmesg或syslog查看
            #-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
            # 禁止其它未允許的規則訪問:
            -A OUTPUT -p udp -j REJECT --reject-with icmp-port-unreachable
            -A INPUT -j REJECT --reject-with icmp-port-unreachable
            -A FORWARD -j REJECT --reject-with icmp-port-unreachable
            COMMIT

            保存本文件,使之生效,注意,iptables不需要重啟,加載一次規則就成:
            iptables-restore < /etc/iptables.test.rules

            第四步:保存生效的配置,讓系統重啟的時候自動加載有效配置
            編輯創建如下文件:
            vim /etc/network/if-pre-up.d/iptables
            添加如下內容:
            #!/bin/bash
            /sbin/iptables-restore < /etc/iptables.test.rules
            最后,設置可執行僅限
            chmod +x /etc/network/if-pre-up.d/iptables



            詳解:
            :INPUT ACCEPT [0:0]
            # 該規則表示INPUT(進)表默認策略是ACCEPT
            :FORWARD ACCEPT [0:0]
            # 該規則表示FORWARD(轉)表默認策略是ACCEPT
            :OUTPUT ACCEPT [0:0]
            # 該規則表示OUTPUT(出)表默認策略是ACCEPT

            -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
            # 意思是允許進入的數據包只能是剛剛我發出去的數據包的回應,ESTABLISHED:已建立的鏈接狀態。RELATED:該數據包與本機發出的數據包有關。

            -A INPUT -j REJECT --reject-with icmp-host-prohibited
            -A FORWARD -j REJECT --reject-with icmp-host-prohibited
            # 這兩條的意思是在INPUT表和FORWARD表中拒絕所有其他不符合上述任何一條規則的數據包。并且發送一條host prohibited的消息給被拒絕的主機。
            #REJECT 是用來返回一個錯誤的包來回應匹配包,其他的等價于DROP,所以它是一個拒絕TARGET,在規則的結束。這個TARGET僅僅用在INPUT,FORWARD和OUTPUT鏈和用戶自定義的鏈,下列選項是用來定義返回錯誤的結果的:
            icmp-host-unreachable
            icmp-port-unreachable

            -m state --state <狀態> 有數種狀態,狀態有: ▪ INVALID:無效的封包,例如數據破損的封包狀態 ▪ ESTABLISHED:已經聯機成功的聯機狀態; ▪ NEW:想要新建立聯機的封包狀態; ▪ RELATED:這個最常用!表示這個封包是與我們主機發送出去的封包有關, 可能是響應封包或者是聯機成功之后的傳送封包!這個狀態很常被設定,因為設定了他之后,只要未來由本機發送出去的封包,即使我們沒有設定封包的 INPUT 規則,該有關的封包還是可以進入我們主機, 可以簡化相當多的設定規則

            第五:其它
            如果你想設置某ip段可以訪問所有服務,你需要在iptables.test.rules文件中加入-A INPUT -m iprange --src-range 192.168.1.1-192.168.1.199 -j ACCEPT,然后從第三步再設置一次。



            Debian Iptables深入學習篇:
            在Linux上,iptables是用于建立和維護IP包過濾規則表的管理工具,實際過濾工作由內核的netfilter模塊負責。
            規則表有幾種(最常用的是filter表),每個表中可以包含若干規則鏈,每個規則鏈包含一組規則,每條規則定義一個匹配條件和處理動作。
            常用的規則鏈:
            INPUT: 處理從外部發給本機的網絡包;
            FORWARD: 處理從外部發來,需要轉發到外部的網絡包;
            OUTPUT: 處理從本機發往外部的網絡包;
            常用的處理動作:
            ACCEPT: 通過;
            DROP: 拋棄;
            QUEUE: 通過,并加入用戶空間的隊列中;
            RETURN: 停止后續規則檢查,直接轉到默認處理;
            分析一個實際的網絡防火墻過濾表:
            -A INPUT -i lo -j ACCEPT
            -A INPUT表示加入INPUT鏈,對應接收數據包;-i lo表示來自本機網絡接口(localhost);-j ACCEPT表示處理動作為接受。整條規則表示所有本機發給自己的數據包可以通過。
            -A INPUT -i !lo -d 127.0.0.0/8 -j REJECT
            -i !lo表示非localhost的其他網絡接口,-d 127.0.0.0/8 表示網絡地址的匹配,使用網絡掩碼255.0.0.0(255的二進制有8個1,如果是掩碼255.255.255.0,對應的數字為24)處理后與127.0.0.0相同。整條規則表示不是來自本機,且IP地址以127開頭的數據包全部丟棄;
            -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
            -m表示match,state –state ESTABLISHED,RELATED表示狀態為已有連接通道上的網絡包;
            -A INPUT -p tcp --dport 80 -j ACCEPT
            -A INPUT -p tcp --dport 443 -j ACCEPT
            -p對應網絡協議,–dport對應端口號;兩條規則表示接受http(80端口),https(443端口)的tcp包;
            -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
            SSH協議使用22端口,這條規則表示接收新建SSH連接的數據包;
            -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
            –icmp-type 8對應 echo-request(ping),此條規則表示允許外部的ping命令;
            -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
            記錄接收數據包被拒絕(log-level=7)的日志,最高記錄頻率為5條/分鐘,日志可通過dmesg或syslog查看
            -A INPUT -j REJECT
            -A FORWARD -j REJECT
            -A OUTPUT -j ACCEPT
            最后放一組默認規則:未匹配的所有接收數據包,拒絕;所有轉發數據包,拒絕;所有外發數據包,允許;
            如果要在android下通過iptables技術來控制app的網絡訪問權限,大致規則為:
            -A OUTPUT -m owner --uid-owner [app-uid] -j REJECT


            @import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
            posted on 2016-06-23 18:01 聶文龍 閱讀(495) 評論(0)  編輯 收藏 引用
            国产精品美女久久久| 99久久香蕉国产线看观香| 91视频国产91久久久| 国产激情久久久久影院小草 | 国产成人无码久久久精品一| 青青草原1769久久免费播放| 亚洲Av无码国产情品久久| 久久国产欧美日韩精品| 久久久久久国产精品无码下载| 亚洲伊人久久综合中文成人网| 久久久亚洲欧洲日产国码aⅴ| 久久久精品久久久久特色影视| 少妇久久久久久被弄高潮| 一本大道加勒比久久综合| 一本色综合网久久| 一本伊大人香蕉久久网手机| 精品乱码久久久久久久| 中文字幕无码av激情不卡久久| 久久福利青草精品资源站| 亚洲午夜久久久久久久久电影网 | 久久性精品| 无码伊人66久久大杳蕉网站谷歌| 久久久久久综合一区中文字幕| 久久综合成人网| 国产婷婷成人久久Av免费高清| 99久久精品免费国产大片| 久久青青国产| 色欲综合久久中文字幕网| 久久国产精品-国产精品| 日本精品久久久久影院日本 | 99久久国产综合精品麻豆| 亚洲国产成人精品女人久久久 | 久久久久亚洲爆乳少妇无| 青草国产精品久久久久久| 亚洲精品WWW久久久久久| 色综合色天天久久婷婷基地| 久久久久久国产精品免费无码| 久久无码精品一区二区三区| 免费观看久久精彩视频| 伊人色综合九久久天天蜜桃| 国产精品久久久久久|