<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

    保護(hù)你的Web服務(wù)器 iptables防火墻腳本全解讀

    本文假設(shè)你已經(jīng)對iptables有基本的了解,否則請先閱讀iptables入門。

      在我們的Web服務(wù)器上,系統(tǒng)的默認(rèn)策略是INPUT為DROP,OUTPUT;FORWARD鏈為ACCEPT,DROP則設(shè)置得比較寬松,因?yàn)槲覀冎莱鋈サ臄?shù)據(jù)包比較安全。

      準(zhǔn)備工作

      為了驗(yàn)證腳本的通用性,我特地查看了服務(wù)器的內(nèi)核及iptables版本:

    # uname -a
    Linux ud50041 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:54:53 EST 2006 i686 i686 i386 GNU/Linux
    # iptables -V
    iptables v1.2.11
    # lsb_release -a
    LSB Version: :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
    Distributor ID: RedHatEnterpriseAS
    Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 3)
    Release: 4
    Codename: NahantUpdate3

      大家可以發(fā)現(xiàn),這臺服務(wù)器的系統(tǒng)、內(nèi)核和iptables版本是比較老的。本文中介紹的腳本涉及到recent安全模塊,這對系統(tǒng)內(nèi)核有要求(recent模塊在主機(jī)防護(hù)腳本中也經(jīng)常用到)。因此,如果大家要采用iptables作為主機(jī)防火墻時(shí),建議用CentOS 5.6 x86_64或更高級版本,不然系統(tǒng)會(huì)有如下提示錯(cuò)誤信息:

    iptables: Unknown error 18446744073709551615
    iptables:Invalid argument

      在tail -f /var/log/messages時(shí)會(huì)有如下出錯(cuò)提示:

    ip_tables: connlimit match: invalid size 32 != 16
    ip_tables: connlimit match: invalid size 32 != 24

      另外,在生產(chǎn)環(huán)境下進(jìn)行iptables腳本的調(diào)試之前,強(qiáng)烈建議編寫crontab任務(wù),每5分鐘關(guān)閉一次iptables腳本,防止操作失誤而將自己的SSH客戶端鎖在外面:

    */5 * * * * root /etc/init.d/iptables stop

      準(zhǔn)備工作就是這些,下面是iptables腳本內(nèi)容。

      腳本內(nèi)容

    #!/bin/bash
    iptables -F
    iptables -F -t nat
    iptables -X

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

    #load connection-tracking modules
    modprobe iptable_nat
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp

    iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
    iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT

    iptables -A INPUT -s 122.70.x.x -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp -m multiport --dport 80,22 -j ACCEPT

      保存腳本文件后用

    # sh iptables.sh

      執(zhí)行腳本。運(yùn)行腳本之后最好檢查一下:

    # iptables -nv -L

      腳本說明

      由于此Web服務(wù)器是置于負(fù)載均衡器后面,所以我們要允許數(shù)據(jù)源地址為負(fù)載均衡器的數(shù)據(jù)包通過:

    iptables -A INPUT -s 122.70.x.x -j ACCEPT

      如果配置了Nagios等監(jiān)控系統(tǒng)的話在這里也要加上,如果監(jiān)控和LB都沒做的話,這行可以不用。

      另外,我的許多基于LNMP的小網(wǎng)站上面也部署了此腳本,由于Web服務(wù)和MySQL數(shù)據(jù)庫同時(shí)安裝在一臺機(jī)器上,所以沒有開放3306端口。

      在本腳本中,我們配置了一些安全措施,以防止外部的ping和SYN洪水攻擊,并且考慮到外部的瘋狂端口掃描軟件可能會(huì)影響服務(wù)器的入口帶寬,所以在這里也做了限制:

    iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 100 -j  ACCEPT

      上面的命令每秒鐘最多允許100個(gè)新連接。請注意這里的新連接指的是state為New的數(shù)據(jù)包,在后面我們也配置了允許狀態(tài)為ESTABLISHED和RELATED的數(shù)據(jù)通過;另外,100這個(gè)閥值則要根據(jù)服務(wù)器的實(shí)際情況來調(diào)整,如果是并發(fā)量不大的服務(wù)器這個(gè)數(shù)值就要調(diào)小,如果是訪問量非常大且并發(fā)數(shù)不小的服務(wù)器,這個(gè)值則還需要調(diào)大。

    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s –limit-burst 10 -j ACCEPT

      這是為了防止ping洪水攻擊,限制每秒的ping包不超過10個(gè)。

    iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT

      上面的命令防止各種端口掃描,將SYN及ACK SYN限制為每秒鐘不超過200個(gè),免得把數(shù)務(wù)器帶寬耗盡了。

      后續(xù)加固工作

      iptables防火墻運(yùn)行后,運(yùn)行nmap工具進(jìn)行掃描:

    # nmap -P0 -sS 211.143.6.x
    Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-29 16:21 CST
    Interesting ports on 211.143.6.X:
    Not shown: 1668 closed ports
    PORT     STATE SERVICE
    22/tcp   open   ssh
    25/tcp   open   smtp
    80/tcp   open   http
    110/tcp   open   pop3
    111/tcp   open   rpcbind
    143/tcp   open   imap
    443/tcp   open   https
    465/tcp   open   smtps
    587/tcp   open   submission
    993/tcp   open   imaps
    995/tcp   open   pop3s
    1014/tcp  open   unknown

      在這里,我們發(fā)現(xiàn)一個(gè)1014端被某個(gè)進(jìn)程打開了,用lsof -i:1014查看發(fā)現(xiàn)是rpc.statd打開的,這服務(wù)每次用的端口都不一樣啊!本來想置之不理的,但是如果rpc.statd不能正確處理SIGPID信號,遠(yuǎn)程攻擊者可利用這個(gè)漏洞關(guān)閉進(jìn)程,進(jìn)行拒絕服務(wù)攻擊,所以還是得想辦法解決掉。我們發(fā)現(xiàn)rpc.statd是由服務(wù)nfslock開啟的,進(jìn)一步查詢得知它是一個(gè)可選的進(jìn)程,它允許NFS客戶端在服務(wù)器上對文件加鎖。這個(gè)進(jìn)程對應(yīng)于nfslock服務(wù),于是我們關(guān)掉了此服務(wù):

    service nfslock stop
    chkconfig nfslock off

      最后想說的是,如果沒有硬件防火墻保護(hù)的話,請盡量在每一臺有公網(wǎng)IP的機(jī)器上部署iptables防火墻吧!


    posted on 2011-12-05 13:41 順其自然EVO 閱讀(209) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2011年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产免费观看a大片的网站| A级毛片高清免费视频在线播放| 亚洲国产日韩在线| 色播亚洲视频在线观看| 久久伊人久久亚洲综合| 亚洲色自偷自拍另类小说| 亚洲日韩VA无码中文字幕| 亚洲片国产一区一级在线观看 | 亚洲人成网站免费播放| 亚洲色www永久网站| 亚洲AV综合色区无码一二三区 | 亚洲精品午夜在线观看| 91亚洲精品自在在线观看| 亚洲一区二区三区国产精品无码| 亚洲综合校园春色| 亚洲精品无码高潮喷水A片软| 黄色网址免费在线| 一级毛片aaaaaa视频免费看| 成全高清在线观看免费| 69视频在线观看高清免费| AV大片在线无码永久免费| 成人免费视频一区| 亚洲国产成人爱av在线播放| 国产亚洲精品自在久久| 亚洲色欲www综合网| 久久精品国产亚洲AV忘忧草18| 亚洲国产美女精品久久久| 一级黄色毛片免费看| APP在线免费观看视频| 69视频在线是免费观看| 成人黄软件网18免费下载成人黄18免费视频| 女人18毛片a级毛片免费视频| 免费在线一级毛片| 亚洲精品V欧洲精品V日韩精品 | 久久精品亚洲中文字幕无码网站 | 亚洲熟妇中文字幕五十中出| 67pao强力打造67194在线午夜亚洲 | 成人免费在线观看网站| 亚洲中文字幕丝袜制服一区| 久久久婷婷五月亚洲97号色| 亚洲日韩精品无码专区加勒比|