[anti-both]
上 星 期 講 解 了 如 何 加 強 Synology NAS 的 基 本 保 安 ,有 需 要 的 讀 者 可 以 回 顧 上 星 期 的 文 章 。
如 何 加 強 Synology (NAS) 的 保 安 (一 )
今 次 接 著 講 進 階 一 點 的 ,如 何 保 護 使 用 HTTP Port 80 的 第 三 方 應 用 程 式 ,例 如 :phpMyAdmin 和 WordPress。還 有 就 是 家 庭 網 絡 上 的 基 他 裝 置 ,例 如 :網 路 攝 影 機 。
接 著 使 用 上 次 的 案 例 ,挑 出 重 點 的 設 定 如 下
1. NAS IP:192.168.2.3/255.255.255.0;
2. 服 務 :phpMyAdmin 套 件 、WordPress 套 件 、VPN Server 套 件 ;
3. VPN 設 定 :PPTP、Server IP: 10.0.0.0;
4. 網 路 攝 影 機 IP:192.168.2.4/255.255.255.0、Port 8000;
5. 路 由 器 設 (Port forwarding):HTTP(80)、PPTP VPN(1723)、網 路 攝 影 機 (8000);
我 們 知 道 ,現 在 要 連 接 到 NAS,都 要 先 用 VPN 連 線 ,除 了 Port 80 的 http 服 務 。假 設 你 的 公 眾 IP 地 址 是 123.123.123.123,那 你 便 可 以 從 http://123.123.123.123/phpMyAdmin/ 去 管 理 你 的 MySql 資 料 庫 。這 樣 做 其 實 不 太 安 全 ,因 為 人 人 都 可 以 直 接 連 線 得 到 ,令 別 人 有 機 會 用 暴 力 攻 擊 去 破 解 你 的 密 碼 。
現 在 我 們 已 經 有 了 VPN,也 知 道 VPN 連 線 之 後 ,我 們 會 有 一 個 固 定 的 VPN 專 屬 IP 地 址 ,10.0.0.x。於 是 我 們 就 可 以 利 用 這 個 IP 來 限 制 連 線 。
首 先 我 們 用 任 何 的 文 字 編 輯 器 ,打 開 phpMyAdmin 裡 面 的 config.inc.php。然 而 加 入 下 面 的 程 式 碼 。
//block root from logging in except from the private networks $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow'; $cfg['Servers'][$i]['AllowDeny']['rules'] = array( 'deny root from all', 'allow root from localhost', 'allow root from 192.168.2.0/24', 'allow root from 10.0.0.0/24', );
這 幾 行 程 式 碼 意 思 是 ,只 容 許 由 本 地 區 域 網 路 ,即 192.168.2.x,又 或 者 從 VPN,即 10.0.0.x 來 連 接 。任 何 其 他 IP 地 址 都 是 不 能 連 接 的 。這 樣 的 話 ,別 人 使 用 http://123.123.123.123/phpMyAdmin/ 連 到 你 的 phpMyAdmin,即 使 擁 有 root 密 碼 ,也 是 不 能 成 功 登 入 的 。
那 我 們 自 己 要 怎 樣 連 線 呢 ?我 們 還 是 要 先 用 VPN 連 通 了 NAS,再 打 開 http://10.0.0.0/phpMyAdmin/,就 能 成 功 登 入 了 。這 樣 的 設 定 ,確 保 了 使 用 者 需 要 兩 次 登 入 ,才 能 使 用 得 到 phpMyAdmin。比 本 來 是 安 全 了 很 多 的 。
然 後 是 WordPress,但 是 WordPress 本 身 不 包 含 類 似 的 設 定 ,所 以 我 們 要 用 到 Apache Web Server 的 .htaccess 功 能 。
首 先 ,要 在 wordpress 資 料 夾 ,在 .htaccess 檔 案 內 加 上 保 護 wp-login.php 的 幾 行 程 式 碼 。如 果 本 身 沒 有 .htaccess 檔 案 ,你 可 以 用 任 何 純 文 字 編 輯 器 新 增 一 個 。
<Files wp-login.php> Order Deny, Allow Deny from all Allow from 192.168.2 Allow from 10.0.0 </Files>
例 子 中 的 IP 地 址 只 有 頭 三 位 的 數 子 ,意 思 就 是 一 個 range,包 含 了 所 有 192.168.2.x 和 10.0.0.x。
然 後 就 是 保 護 整 個 wordpress/wp-admin/ 資 料 夾 。同 樣 的 我 們 編 輯 在 wp-admin 資 料 夾 裡 面 的 .htaccess 檔 案 ,沒 有 的 話 就 新 增 一 個 。
Order Deny,Allow Deny from all Allow from 192.168.2 Allow from 10.0.0
你 會 注 意 到 ,這 次 是 沒 有 使 用 Files Tag 的 ,因 為 不 是 只 保 護 其 中 一 個 檔 案 ,而 是 資 料 夾 裡 面 的 所 有 檔 案 。
.htaccess 這 個 技 巧 十 分 實 用 ,基 本 上 大 部 分 網 站 ,或 者 網 路 應 用 程 式 ,都 可 以 用 這 個 方 法 來 加 強 保 安 。有 機 會 的 話 另 文 和 大 家 介 紹 。
完 成 之 後 ,跟 phpMyAdmin 的 設 定 一 樣 ,我 們 使 用 http://123.123.123.123/wp-login.php 是 連 接 不 上 了 。
我 們 自 己 要 連 線 ,就 一 樣 是 先 要 用 VPN 接 通 NAS,然 後 用 http://10.0.0.0/wp-login.php 打 開 登 入 畫 面 。也 就 一 樣 是 兩 重 登 入 了 。
如 果 你 的 家 裡 ,還 有 網 路 攝 影 機 等 的 設 備 。我 們 也 是 可 以 利 用 VPN 來 連 線 ,加 強 保 安 的 。
用 上 面 案 例 ,本 來 你 連 線 到 網 路 攝 影 機 的 網 址 是 http://123.123.123.123:8000/。但 由 於 這 樣 不 太 安 全 ,所 以 我 們 首 先 取 消 了 路 由 器 上 Port 8000 的 Port forwarding。這 樣 的 話 ,http://123.123.123.123:8000/ 是 什 麼 也 連 不 到 的 。
然 後 我 們 如 何 連 接 呢 ?當 然 也 是 先 用 VPN 連 接 到 NAS,但 這 次 我 們 用 回 網 路 攝 影 機 本 身 的 IP 地 址 來 連 線 ,http://192.168.2.4:8000/。
但 要 能 這 樣 子 成 功 連 線 ,其 實 有 一 個 小 技 巧 的 ,就 是 你 的 VPN 客 戶 端 ,要 把 所 有 的 網 路 流 量 都 由 VPN 連 線 傳 送 ,技 術 上 說 法 就 是 在 route table 增 加 一 條 route。在 我 的 印 象 中 ,這 個 「傳 送 所 有 流 量 」的 默 認 值 究 竟 是 「是 」還 是 「否 」,是 根 據 每 個 VPN 客 戶 端 自 有 不 同 的 ,機 率 大 概 是 一 半 一 半 。Windows 系 統 裡 的 應 該 都 是 「是 」,Mac OS 和 iOS 的 應 該 都 是 「否 」。
在 Windows 7 裡 的 設 定 地 方 是 在 ,「控 制 台 」>「網 路 和 共 用 中 心 」>選 擇 你 的 VPN 連 線 >按 「內 容 」>去 「網 路 功 能 」頁 >選 「TCP/IPv4」>按 「內 容 」>按 「進 階 」,裡 面 有 「使 用 遠 端 網 路 的 預 設 閘 道 」(Use Default Gateway on Remote Network)。要 確 保 這 個 選 項 有 打 勾 。
在 iOS 裡 面 就 簡 單 一 點 ,「設 定 」>「VPN」>選 擇 你 的 VPN 連 線 >按 「>」符 號 >裡 面 有 「傳 送 所 有 流 量 」(Send all trafic)。要 確 保 該 選 項 是 開 啟 。
Mac OS 就 笨 一 點 ,沒 有 這 個 選 項 ,要 自 己 打 Command。
> sudo route add -net 192.168.2.3/16 10.0.0.0
192.168.2.3 就 是 NAS 的 內 部 IP 地 址 ,10.0.0.0 就 是 VPN Server 的 地 址 。
經 過 這 個 設 定 之 後 ,你 便 可 以 經 過 VPN 連 線 ,用 家 裡 的 內 部 IP 地 址 來 連 接 你 所 有 的 裝 置 了 。這 樣 的 設 定 ,也 讓 本 來 只 要 一 重 登 入 的 設 備 ,變 成 了 要 兩 重 登 入 ,大 大 增 加 了 安 全 性 。
多謝你的分享.
遇到一點問題, 請給點意見.
我在家中的 Linux Server 中安裝好 PPTP (VPN), 在公司可以正常訪問家中的的 Samba. iphone 也可以訪問 Samba.
使用 iphone 訪問家中的 DLNA Server ( mediatomb & ushare ), 都沒有反應.
請問 VPN + DLNA 方案, 可行嗎?
非常感謝你的留言。但很抱歉,因為老是覺得 network media player 比較好用,所以 DLNA server 並沒有用過幾個。在 iPhone 的時代,我是用 Ace Player 直接播放 samba server 上面的多媒體檔的。用 VPN 也沒問題,連線夠快就可以了。
至於 VPN + DLNA,理論上是可行的。出問題的,有可能是 3G network。你可以先試用 iPhone 在家裡的 LAN (WiFi) 連線 VPN,這樣試試有沒有問題(我覺得應該沒問題)。然後再試試用 3G 連線 VPN,再看看有沒有問題。如果真是 3G 的問題,筆者也沒有解決的方法……
您好,請問,phpMyAdmin真實的路經在哪呢?
我想你問的是 Synology 的 phpMyAdmin 套件安裝好之後在那裡吧?預設值應該是:
/volume1/web/phpMyAdmin/
/volume1/web 就是 Web Station 的預設路徑。要記得這是 Linux,是大小寫有異的。
您好,第一個連結就是我要的,感恩!
因為您的文章只有提到修改檔案,
但沒看到位置。
因為對Linux不熟,
後來有查到指令了。
我用
find / -name phpMyAdmin
有查到幾個目錄。
我之前都是用.htaccess這個檔案下去擋。
(各子目錄都放)
因為我在WAMP(Windows系統底下)有看到Log檔案,
駭客會在phpMyAdmin有幾個子目錄下直接開啟特殊網頁以繞過檢查。
呵呵,你說得對,我在文中沒提到。
因為 phpMyAdmin 本來就只能放到 web station 裡面處跑嘛。而有用 web station 的用家們,通常都已經在自己的電腦上面 map 好了 \\diskstation\web 嘛。phpMyAdmin 就只是 web folder 裡面的一個 subfolder 而已,應該很好找的吧。
我本來還以為你寫其他 shell scripts 之類要用到這個路徑呢。
: )
你好,謝謝你的 文章詳細又清晰,
我跟你的方法在phpMyAdmin 的config.ini.php加入以下設定,
//block root from logging in except from the private networks
$cfg[‘Servers’][$i][‘AllowDeny’][‘order’] = ‘deny,allow’;
$cfg[‘Servers’][$i][‘AllowDeny’][‘rules’] = array( ‘deny root from all’,
‘allow root from localhost’,
‘allow root from 192.168.0.0/24’,
‘allow root from 10.0.0.0/24’ );
IP都確認過, 然後使用手耭連線到VPN,
再連線到 10.0.0.0/phpMyAdmin
但畫面顯示
phpMyAdmin – 錯誤
設定檔權限錯誤,其他人不應擁有寫入權!
不知道問題出在哪裡呢?
你好, 我較早前留了言關於”phpMyAdmin – Error”
之後我發現了原來我修改 config.inc.php 時, 使用者由”root”變成了我登入nas 的帳號名稱, 我猜大概是這個原因導致phpMyAdmin讀取不了 config.inc.php
而我也找不到方法把使用者設回root (沒有root 可以選擇)
最後我把phpMyAdmin重裝了一遍….
現在還沒有方法如何可以成功地改動config.inc.php而不會改變它的使用者
使用 SSH 用 root 帳號登入 ( windows 環境我會用 putty ) 修改 ( text editor 就用 vi ) 即可。
成功左喇!! 唔該晒!