網路開展事業或在網路創業賺錢的第一步:【架設24小時賺錢網站主機】比網頁設計更優先!

感謝您造訪 Linux主機伺服器架設技術基地。 你可進入替你架設主機.影片教你維護頁面,詳細瞭解Linux主機架設及相關技術維護影片教學(完整配套措施),有主機馬上可以架設網站營運,完全無限制!

租用不如自有主機!聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多!完全沒有版權問題,超強『防駭客攻擊與入侵』及安全防護可以讓你無後顧之憂。

                    架設主機.影片教你維護: http://por.tw/linux/new-E_learning/index.php

Linux主機伺服器架設技術基地  維護團隊  敬上

Linux主機防火牆規則(Linux主機伺服器架設技術)

Linux主機防火牆規則(Linux主機伺服器架設技術)

Linux 安裝完畢,便已內建基本的防火牆規則,它是採 IPTABLES 來進行封包過濾的動作。
預設的規則列主要在防止外面主機連線至主機,被阻擋的服務有 FTP, SSH, Samba網芳等。


Linux主機防火牆基本原理:

設定檔

設定規則列位置及套用方式是 Linux 專用的方法,與其他 Debian OS 不同。

    * 使用工具: iptables
    * 規則列位置: /etc/rc.local
    * 修改後套用
      root@dns:~# service rc.local start
    * 註: rc.local 原本設計是為開機後要手動執行特定工作的設定區,Linux 把它借來放置防火牆規則列


Linux主機防火牆基本觀念:

    * IPTABLES = "/sbin/iptables"
      這一行是指:設定 IPTABLES 這個變數,以後只要看到 $IPTABLES 這個字串,就代表 /sbin/iptables 這個指令

    * $IPTABLES -F
      這一行是指:把之前所有已設過的規則清空(flush)


Linux主機防火牆封包進出主機方向:

在 /etc/rc.local 內之「設定 filter table 的預設政策」會看到三行設定值,如下:

###-----------------------------------------------------###
# 設定 filter table 的預設政策
###-----------------------------------------------------###
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

筆者將其簡化說明如下:

    * INPUT   --> 外面要進入主機的網路封包,主要用於規範外面如何連線至主機上的各種服務,與 NAT 內網無關
    * OUTPUT  --> 從主機出去的網路封包。
    * FORWARD --> 從 B 網卡轉至 A 網卡,規範於有 NAT 主機或透通式防火牆用途時,內轉外網路封包之控管。
    * 依上例,預設所有的封包皆開放,不阻擋


INPUT規則列的寫法


規則列的寫法,是把預設政策擺在最下面一行,例外規則擺上面,如下所例

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


上面的規則列可以用下面這張圖來表達,預設 22 埠是不被連線的,但有四個綠點例外。
Iptables sample.png



進階處理
取消某個通訊埠的阻擋


只要把所有該 port (--dport)的規則列前面加上 # 變成註解,或直接刪除即可,以 FTP 示例如下:

# 只有本主機所屬網段才能連到這台主機的 FTP SERVER port 21
# $IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp --dport 21 -j DROP

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP




新增例外連線範圍

若要新增例外連線點,一定要加在相同埠值區塊最後一行之前(建議第一行),假設我們要加中華電信某個網段 59.127.0.0/16 至 Port 22 的例外點上,做法如下:

    * 編輯 /etc/rc.local (紅字為新增部分)
      root@dns:~# vi /etc/rc.local

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 59.127.0.0/16 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


    * 套用新規則
      root@dns:~# service rc.local start



新增某個通訊埠連線限制
以 TCP 1723 為例

假設主機有架 VPN 服務,經由「netstat -nlp」查詢後得知其使用的埠值為 TCP 1723。因此,為避免不具善意的網客隨便亂測密碼,我們可以在 /etc/rc.loal加上其連線限制。

假設允許的網段為

   1. 校內: 163.26.182.0/24
   2. 校外某點: 220.130.230.76

    * 編輯 /etc/rc.local,在 IPv4 的設定區(就是 /sbin/ip6tables -F 之上),依 port 值排序,大約在網芳區塊後面加上。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......

$IPTABLES -A INPUT -p tcp --dport 139 -j DROP
$IPTABLES -A INPUT -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -p udp --dport 137 -j DROP
$IPTABLES -A INPUT -p udp --dport 138 -j DROP

$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 1723 -j DROP

/sbin/ip6tables -F
/sbin/ip6tables -A INPUT -p tcp --dport 21 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 22 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 23 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



以 ICMP 為例

預設不讓外面網路任意點可以 PING 本主機,造就本主機不存在的假象,但選定數點開放偵測。假設允許的網段為

   1. 教網中心:163.26.200.0/24
   2. 校內: 163.26.182.0/24
   3. 校外某點: 220.130.230.76


    * 編輯 /etc/rc.local,在 IPv4 的設定區,Port 21 規則列上方。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......


$IPTABLES -A INPUT -p icmp -s 163.26.182.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -s 163.26.200.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -j DROP

# 只有本主機所屬網段才能連到這台主機的 FTP server port 21
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



防止 DoS 攻擊

筆者朋友主機最近遭到 DoS 攻擊,我本來以 iptables -m limit 來處理,但發現它會不分來源一律阻擋,這樣無辜的 IP Address 也受到限制,非常不公平,思考並搜尋了一個晚上,後來決定以限制單一 IP 同時連線數(connlimit),來處理此類攻擊,它會把單一 IP 來源同時要求服務(--syn)的連線數,限制在一定的數量以內,正常用人工手動點網頁,就算該網頁有 FrameSet ,應也不致於大過 12(自已用手拼命點得到的結論)才對。因此在設定此限制時,以每一個 IP 同時連線數不得超過 15 為參數,並進行後續的觀察。在設定後,經過一段時間的觀察,CPU 再也不會一直維持在 90-100% 高檔了,大約只會偶而跳至 60-70% ,一般皆在 10 % 以內。重點是它只 tcp-reset 有問題的來源,無辜的人仍可享受應有的速度。

設定方式:

    * 請確認 syslog 有下列參數
          o Linux 在 /etc/syslog.conf
          o Ubuntu 在 /etc/rsyslog.d/50-default.conf

# iptables 的記錄可以寫入 /var/log/kern.log
kern.*                          -/var/log/kern.log

    * 先把可能攻擊的 ip 寫入 /var/log/kern.log ,再把它的封包無聲的丟掉;以同時 15 個連線為限。

$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j LOG --log-level 4
$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j REJECT --reject-with tcp-reset

    * 分析攻擊可能來源
          o 螢幕觀看(以 tab 鍵分隔欄位)
            root@dns:~# cat /var/log/kern.log |awk '{print $1 " " $2 " " $9}'
          o 轉至純文字,以供下載至試算表統計
            root@dns:~# cat /var/log/kern.log |awk '{print $1 " " $2 " " $9}' > /root/dosatt.txt
            呈現的結果部分截取如下:

May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66

    * 鎖了吧,可疑者!
      若某個 IP 來源您不認識,但每天常常超過,人工點網頁的極限(同時超過 15 個連線數),可以再加以下規則,把它鎖了吧!


$IPTABLES -A INPUT -i eth0 -p tcp -s 60.250.xxx.xx --dport 80 -j DROP
引用通告地址: 點擊獲取引用地址
標籤: Linux主機伺服器
評論: 0 | 引用: 0 | 閱讀: 4987