如何在 Ubuntu 14.04 服務器上使用 Nginx 安裝和保護 phpMyAdmin

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。

介紹

像 MySQL 這樣的關系型數據庫管理系統在許多網站和應用程序中都是必不可少的。然而,并非所有用戶都習慣通過命令行來管理他們的數據。

為了解決這個問題,創建了一個名為 phpMyAdmin 的項目,旨在提供一個基于 web 的管理界面作為替代方案。在本指南中,我們將演示如何在 Ubuntu 14.04 服務器上安裝和保護 phpMyAdmin 配置。我們將在 Nginx web 服務器上構建此設置,Nginx 具有良好的性能特性,可以比其他一些 web 服務器更好地處理大量負載。

先決條件

在開始之前,有幾個要求需要解決。

為了確保您有一個堅實的基礎來構建這個系統,您應該先運行我們的 Ubuntu 14.04 初始服務器設置指南。其中,這將指導您設置一個具有 sudo 訪問權限的非根用戶,用于管理命令。

在開始本指南之前,必須滿足的第二個先決條件是在 Ubuntu 14.04 服務器上安裝 LEMP(Linux、Nginx、MySQL 和 PHP)堆棧。這是我們將用來提供 phpMyAdmin 界面的平臺(MySQL 也是我們希望管理的數據庫管理軟件)。如果您的服務器上還沒有 LEMP 安裝,請按照我們的 Ubuntu 14.04 上安裝 LEMP 的教程進行操作。

當您的服務器在按照這些指南后處于正常運行狀態時,您可以繼續閱讀本頁的其余部分。

步驟一 — 安裝 phpMyAdmin

在我們已經準備好 LEMP 平臺的情況下,我們可以立即開始安裝 phpMyAdmin 軟件。這在 Ubuntu 的默認存儲庫中可用,因此安裝過程很簡單。

首先,更新服務器的本地軟件包索引,以確保它具有最新的可用軟件包的引用。然后,我們可以使用 apt 包工具從存儲庫中獲取軟件并在我們的系統上安裝它:

sudo apt-get update
sudo apt-get install phpmyadmin

在安裝過程中,將提示您輸入一些信息。它將詢問您希望軟件自動配置哪個 web 服務器。由于我們使用的 Nginx 不是可用選項之一,您可以按 TAB 鍵跳過此提示。

接下來的提示將詢問您是否希望 dbconfig-common 配置一個數據庫供 phpmyadmin 使用。選擇 “Yes” 繼續。

您需要輸入在 MySQL 安裝期間配置的數據庫管理密碼,以允許這些更改。之后,您將被要求選擇并確認一個新數據庫的密碼,用于保存 phpMyAdmin 自己的數據。

安裝現在將完成。為了使 Nginx web 服務器能夠正確找到并提供 phpMyAdmin 文件,我們只需要通過輸入以下內容在安裝文件和我們的 Nginx 文檔根目錄之間創建一個符號鏈接:

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html

我們需要處理的最后一件事是啟用 mcrypt PHP 模塊,phpMyAdmin 依賴于它。這是隨 phpMyAdmin 一起安裝的,因此我們只需要切換它并重新啟動我們的 PHP 處理器:

sudo php5enmod mcrypt
sudo service php5-fpm restart

通過這樣,我們的 phpMyAdmin 安裝現在已經可用。要訪問界面,請在您的 Web 瀏覽器中輸入服務器的域名或公共 IP 地址,后面加上 /phpmyadmin

http://server_domain_or_IP/phpmyadmin

!phpMyAdmin 登錄界面

要登錄,請使用有效的 MySQL 用戶的用戶名/密碼對。root 用戶和 MySQL 管理密碼是一個不錯的選擇。然后,您將能夠訪問管理界面:

!phpMyAdmin 管理界面

點擊周圍以熟悉界面。在下一節中,我們將采取措施來保護我們的新界面。

步驟二 — 保護您的 phpMyAdmin 實例

我們服務器上安裝的 phpMyAdmin 實例此時應該是完全可用的。然而,通過安裝一個 web 界面,我們已經將我們的 MySQL 系統暴露給了外部世界。

即使包含了身份驗證屏幕,這也是一個相當大的問題。由于 phpMyAdmin 的流行程度以及它提供訪問的大量數據,這樣的安裝是攻擊者的常見目標。

我們將實施兩種簡單的策略來減少我們的安裝被攻擊和 compromise 的機會。我們將把界面的位置從 /phpmyadmin 更改為其他位置,以規避一些自動化的機器人暴力嘗試。我們還將創建一個額外的、基于 web 服務器級別的身份驗證網關,必須通過它才能到達 phpMyAdmin 登錄界面。

更改應用程序的訪問位置

為了使我們的 Nginx web 服務器能夠找到并提供我們的 phpMyAdmin 文件,我們在之前的步驟中創建了一個符號鏈接,將 phpMyAdmin 目錄鏈接到我們的文檔根目錄。

要更改我們的 phpMyAdmin 接口可以訪問的 URL,我們只需要重命名符號鏈接。進入 Nginx 文檔根目錄以更好地了解我們正在做什么:

cd /usr/share/nginx/html
ls -l
total 8
-rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar  4 06:46 index.html
lrwxrwxrwx 1 root root  21 Aug  6 10:50 phpmyadmin -> /usr/share/phpmyadmin

如您所見,我們在此目錄中有一個名為 phpmyadmin 的符號鏈接。我們可以將此鏈接名稱更改為任何我們想要的名稱。這將更改可以從瀏覽器訪問 phpMyAdmin 的位置,有助于隱藏硬編碼機器人的訪問點。

選擇一個不指示位置用途的名稱。在本指南中,我們將命名我們的訪問位置為 /nothingtosee。為此,我們只需重命名鏈接:

sudo mv phpmyadmin nothingtosee
ls -l
total 8
-rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar  4 06:46 index.html
lrwxrwxrwx 1 root root  21 Aug  6 10:50 nothingtosee -> /usr/share/phpmyadmin

現在,如果您訪問以前的 phpMyAdmin 安裝位置,您將收到 404 錯誤:

http://server_domain_or_IP/phpmyadmin

!phpMyAdmin 404 錯誤

但是,您的 phpMyAdmin 接口將在我們選擇的新位置上可用:

http://server_domain_or_IP/nothingtosee

!phpMyAdmin 登錄界面

設置 Web 服務器身份驗證門

我們安裝中想要的下一個功能是,用戶在看到 phpMyAdmin 登錄界面之前需要通過的身份驗證提示。

幸運的是,大多數 Web 服務器,包括 Nginx,在本機提供此功能。我們只需要修改我們的 Nginx 配置文件以添加細節。

在我們這樣做之前,我們將創建一個密碼文件,用于存儲我們的身份驗證憑據。Nginx 要求使用 crypt() 函數加密密碼。OpenSSL 套件,應該已經安裝在您的服務器上,包括此功能。

要創建加密密碼,請輸入:

openssl passwd

然后您將被提示輸入并確認您希望使用的密碼。然后實用程序將顯示密碼的加密版本,看起來類似于:

O5az.RSPzd.HE

復制此值,因為您將需要將其粘貼到我們將要創建的身份驗證文件中。

現在,創建一個身份驗證文件。我們將稱此文件為 pma_pass 并將其放在 Nginx 配置目錄中:

sudo nano /etc/nginx/pma_pass

在此文件中,您只需要指定您想要使用的用戶名,后跟一個冒號(:),后跟您從 openssl passwd 實用程序中收到的密碼的加密版本。

我們將命名我們的用戶為 demo,但您應該選擇一個不同的用戶名。本指南的文件如下所示:

demo:O5az.RSPzd.HE

完成后保存并關閉文件。

現在,我們準備修改我們的 Nginx 配置文件。打開此文件以開始編輯:

sudo nano /etc/nginx/sites-available/default

在此文件中,我們需要添加一個新的位置部分。這將針對我們選擇的 phpMyAdmin 接口位置(在本指南中我們選擇了 /nothingtosee)。

server 塊內創建此部分,但不在任何其他塊內。在我們的示例中,我們將在 location / 塊下方放置我們的新位置塊:

server {. . .location / {try_files $uri $uri/ =404;}location /nothingtosee {}. . .
}

在此塊內,我們需要將名為 auth_basic 的指令的值設置為我們的提示將向用戶顯示的身份驗證消息。我們不希望未經身份驗證的用戶知道我們正在保護什么,因此不要提供具體細節。在我們的示例中,我們將只使用 “Admin Login”。

然后,我們需要使用名為 auth_basic_user_file 的指令將我們的 Web 服務器指向我們創建的身份驗證文件。Nginx 將提示用戶輸入身份驗證詳細信息,并檢查輸入的值是否與其在指定文件中找到的值匹配。

完成后,文件應如下所示:

server {. . .location / {try_files $uri $uri/ =404;}location /nothingtosee {auth_basic "Admin Login";auth_basic_user_file /etc/nginx/pma_pass;}. . .
}

完成后保存并關閉文件。

要實施我們的新身份驗證門,我們必須重新啟動 Web 服務器:

sudo service nginx restart

現在,如果我們在 Web 瀏覽器中訪問我們的 phpMyAdmin 位置(如果您已經在使用 phpMyAdmin,則可能需要清除緩存或使用不同的瀏覽器會話),您應該會收到提示,要求輸入您添加到 pma_pass 文件中的用戶名和密碼:

http://server_domain_or_IP/nothingtosee

!Nginx 身份驗證頁面

輸入您的憑據后,您將被帶到正常的 phpMyAdmin 登錄頁面。這一額外的保護層將有助于保持您的 MySQL 日志中不受身份驗證嘗試的干擾,同時還帶來了額外的安全性益處。

結論

現在您可以通過一個相當安全的 Web 界面來管理您的 MySQL 數據庫。這個用戶界面暴露了大部分可以從 MySQL 命令提示符中使用的功能。您可以查看數據庫和模式,執行查詢,并創建新的數據集和結構。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45868.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45868.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45868.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle數據庫,怎么分頁查詢

項目場景: 使用oracle數據庫,怎么分頁查詢 問題描述 平常使用的最多的是MySQL DB, 用的是 limit 語句;Oracle DB, 沒有 limit 語句; 原因分析: 解決方案: SELECT * FROM (SELECT t.*, ROWNUM rn FROM…

java算法day16

java算法day16 112 路徑總和404 左葉子之和513 找樹左下角的值 112 路徑總和 題型判定為自頂向下類型,并且為路徑和類型。 那就套模板。 自頂向下就是從上到下處理,那么就是前序遍歷的思想。 class Solution {boolean res false;public boolean hasP…

自建Web網站部署——案例分析

作者主頁: 知孤云出岫 目錄 作者主頁:如何自建一個Web網站一、引言二、需求分析三、技術選型四、開發步驟1. 項目初始化初始化前端初始化后端 2. 前端開發目錄結構示例代碼App.jsHome.js 3. 后端開發目錄結構示例代碼app.jsproductRoutes.jsProduct.js 4. 前后端連接安裝axio…

泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)

漏洞描述: 泛微 e-cology 是泛微公司開發的協同管理應用平臺。泛微 e-cology v10.64.1的/services/接口默認對內網暴露,用于服務調用,未經身份認證的攻擊者可向 /services/WorkflowServiceXml 接口發送惡意的SOAP請求進行SQL注入,…

語音合成新篇章:Transformer模型的革新應用

語音合成新篇章:Transformer模型的革新應用 語音合成技術,又稱文本到語音(Text-to-Speech, TTS)技術,一直是人工智能領域的重要組成部分。隨著深度學習技術的飛速發展,Transformer模型憑借其卓越的處理序列…

飄雪的冬天,命運的交織

北風呼嘯,天空中飄著鵝毛般的大雪,這又是一個飄雪的冬天。京都醫院潔白的病床上躺著一個年輕女孩,她的臉上沒有一絲血色,眼睛深深地凹了進去,看上去已經病入膏肓。病房的窗口邊,一位身心俱疲的年輕男孩,望著病房外滿天飛舞的雪花,思緒不由回到了三年前的林州市…… 一…

使用JS和CSS制作的小案例(day二)

一、寫在開頭 本項目是從github上摘取,自己練習使用后分享,方便登錄github的小伙伴可以看本篇文章 50項目50天?編輯https://github.com/bradtraversy/50projects50dayshttps://github.com/bradtraversy/50projects50days有興趣的小伙伴可以自己去gith…

面向對象七大原則

學習目標 了解面向對象七大原則基本概念。 在之后實踐應用中,要給予七大原則去設計程序。 為什么有七大原則 七大原則總體要實現的目標是: 高內聚、低耦合。 使程序模塊的可重復性、移植性增強。 高內聚低耦合 從類角度來看,高內聚低…

如何在Linux上部署Ruby on Rails應用程序

在Linux上部署Ruby on Rails應用程序是一個相對復雜的過程,需要按照一系列步驟進行。下面是一個基本的部署過程,涵蓋了從安裝所需軟件到部署應用程序的所有步驟。 安裝必要的軟件 在部署Ruby on Rails應用程序之前,需要確保Linux系統上安裝了…

android 嵌套webview,軟鍵盤遮擋輸入框

實際項目中,android需要加載h5,經常遇到軟鍵盤遮蓋輸入框的情況,h5測試的時候,是沒問題的,但是在APP中是不能把頁面推上去。經測試完美解決了這個問題。 1. oncreate *************************** try {web();layout…

掌握Xcode Storyboard:iOS UI設計的可視化之旅

掌握Xcode Storyboard:iOS UI設計的可視化之旅 在iOS應用程序開發的世界中,用戶界面(UI)設計是吸引用戶的關鍵。Xcode的Storyboard功能為開發者提供了一個強大的可視化工具,通過拖放的方式快速構建和管理UI。本文將深…

AI網絡爬蟲023:用deepseek批量提取天工AI的智能體數據

文章目錄 一、介紹二、輸入內容三、輸出內容一、介紹 天工AI的智能體首頁: F12查看真實網址和響應數據: 翻頁規律: https://work.tiangong.cn/agents_api/square/sq_list_by_category?category_id=7&offset=0 https://work.tiangong.cn/agents_api/square/sq_list_b…

08 模型演化根本 深度學習推薦算法的五大范式

易經》“九三:君于終日乾乾;夕惕若,厲無咎”。九三是指陽爻在卦中處于第三位,已經到達中位,惕龍指這個階段逐漸理性,德才已經顯現,會引人注目;但要反思自己的不足,努力不…

基于 SSH 的任務調度系統的設計與實現

點擊下載源碼 基于SSH的任務調度系統的設計與實現 摘 要 隨著科學技術的飛速發展和各行各業的分工愈發明細化,對于改革傳統的人工任務調度方式的呼聲越來越大。得益于快速發展的計算機技術,我們看到了改革的方向。本系統是針對企業或者事業單位甚至一個…

Golang | Leetcode Golang題解之第234題回文鏈表

題目: 題解: func reverseList(head *ListNode) *ListNode {var prev, cur *ListNode nil, headfor cur ! nil {nextTmp : cur.Nextcur.Next prevprev curcur nextTmp}return prev }func endOfFirstHalf(head *ListNode) *ListNode {fast : headslo…

camtasia怎么剪掉不用的部分 屏幕錄制的視頻怎么裁剪上下不要的部分 camtasia studio怎么裁剪視頻時長 camtasia怎么剪輯視頻教程

有時我們錄制的屏幕內容,并不一定全部需要。那么,屏幕錄制的視頻怎么裁剪上下不要的部分?可以使用視頻剪輯軟件,或者微課制作工具來進行裁剪。屏幕錄制的視頻怎么旋轉?錄制視頻的旋轉也是一樣的,均在編輯步…

萬字長文之分庫分表里如何優化分頁查詢?【后端面試題 | 中間件 | 數據庫 | MySQL | 分庫分表 | 分頁查詢】

分庫分表的一般做法 一般會使用三種算法: 哈希分庫分表:根據分庫分表鍵算出一個哈希值,根據這個哈希值選擇一個數據庫。最常見的就是數字類型的字段作為分庫分表鍵,然后取余。比如在訂單表里,可以按照買家的ID除以8的…

【Flutter】 webview_flutter避坑

webview_flutter webview_flutter沒有SSL Error接口,也就是說等你的網頁出現SSL 錯誤的時候這個插件無法捕捉處理,除非你改它的源碼。 下面這段是webview_flutter官網的例子,它有onHttpError、onWebResourceError、但沒有任何捕捉 SSL 錯誤…

代謝組數據分析(十五):基于python語言構建PLS-DA算法構建分類模型

介紹 本教程描述了一個具有二元分類結果的研究的典型代謝組學數據分析工作流程。主要步驟包括: 從Excel表格導入代謝物和實驗數據。基于匯總QC的數據清洗。利用主成分分析可視化來檢查數據質量。兩類單變量統計。使用偏最小二乘判別分析(PLS-DA)進行多變量分析,包括: 模型…

go語言 fmt的幾個打印區別以及打印格式

文章目錄 一、打印Print1.1 fmt.Print 和 fmt.Println1.2fmt.Printf1.3 fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln1.4 fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln 二、打印格式基本格式動詞整數類型浮點數和復數類型字符串和字節切片布爾類型指針 一、打印Print Go 語言的 fm…