Cách cài đặt và bảo mật phpMyAdmin với Apache trên server CentOS 7
Các hệ thống quản lý database quan hệ như MySQL và MariaDB là cần thiết cho một phần đáng kể các trang web và ứng dụng. Tuy nhiên, không phải tất cả user đều cảm thấy thoải mái khi quản lý dữ liệu của họ từ dòng lệnh.Để giải quyết vấn đề này, một dự án có tên là phpMyAdmin đã được tạo ra để cung cấp một giải pháp thay thế dưới dạng giao diện quản lý dựa trên web. Trong hướng dẫn này, ta sẽ trình bày cách cài đặt và bảo mật cấu hình phpMyAdmin trên server CentOS 7. Ta sẽ xây dựng cài đặt này trên web server Apache, web server phổ biến nhất trên thế giới.
Yêu cầu
Trước khi ta bắt đầu, có một số yêu cầu cần được giải quyết.
Để đảm bảo bạn có cơ sở vững chắc để xây dựng hệ thống này, bạn nên chạy qua hướng dẫn cài đặt server ban đầu của ta cho CentOS 7 . Trong số những thứ khác, phần này sẽ hướng dẫn bạn cách cài đặt user không phải root có quyền truy cập sudo
cho các lệnh quản trị.
Yêu cầu thứ hai phải được thực hiện để bắt đầu hướng dẫn này là cài đặt một LAMP (Linux, Apache, MariaDB và PHP) trên server CentOS 7 của bạn. Đây là nền tảng mà ta sẽ sử dụng để phục vụ giao diện phpMyAdmin của ta (MariaDB cũng là phần mềm quản lý database mà ta muốn quản lý). Nếu bạn chưa cài đặt LAMP trên server của bạn , hãy làm theo hướng dẫn của ta về cài đặt LAMP trên CentOS 7 .
Khi server của bạn ở trạng thái hoạt động bình thường sau khi làm theo các hướng dẫn này, bạn có thể tiếp tục với phần còn lại của trang này.
Bước một - Cài đặt phpMyAdmin
Với nền tảng LAMP của ta đã có sẵn, ta có thể bắt đầu ngay với việc cài đặt phần mềm phpMyAdmin. Thật không may, phpMyAdmin không có sẵn trong repository lưu trữ mặc định của CentOS 7.
Để có được các gói ta cần, ta sẽ phải thêm một kho bổ sung vào hệ thống của bạn . EPEL repo ( E xtra P ackages cho E nterprise L inux) chứa nhiều gói bổ sung, bao gồm gói phpMyAdmin mà ta đang tìm kiếm.
Kho lưu trữ EPEL có thể được cung cấp cho server của bạn bằng cách cài đặt một gói đặc biệt có tên là epel-release
. Thao tác này sẽ cấu hình lại danh sách repository của bạn và cấp cho bạn quyền truy cập vào các gói EPEL.
Để cài đặt, chỉ cần gõ:
sudo yum install epel-release
Bây giờ repo EPEL đã được cấu hình , bạn có thể cài đặt gói phpMyAdmin bằng cách sử dụng trình cài đặt gói yum
bằng lệnh :
sudo yum install phpmyadmin
Quá trình cài đặt sẽ hoàn tất. Quá trình cài đặt bao gồm file cấu hình Apache đã được cài đặt sẵn. Ta cần sửa đổi điều này một chút để nó hoạt động chính xác cho quá trình cài đặt của ta .
Mở file trong editor của bạn ngay bây giờ để ta có thể thực hiện một số thay đổi:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Bên trong, ta thấy một số khối folder với một số logic có điều kiện để giải thích policy truy cập cho folder của ta . Có hai folder riêng biệt được xác định và trong đó, các cấu hình sẽ hợp lệ cho cả Apache 2.2 và Apache 2.4 (mà ta đang chạy).
Hiện tại, cài đặt này được cấu hình để từ chối quyền truy cập vào bất kỳ kết nối nào không được thực hiện từ chính server . Vì ta đang làm việc trên server của bạn từ xa, ta cần sửa đổi một số dòng để chỉ định địa chỉ IP của kết nối nhà của bạn.
Thay đổi bất kỳ dòng nào có nội dung Require ip 127.0.0.1
hoặc Allow from 127.0.0.1
để tham chiếu đến địa chỉ IP của kết nối gia đình của bạn. Nếu bạn cần trợ giúp tìm địa chỉ IP của kết nối gia đình, hãy xem phần tiếp theo. Có bốn vị trí trong file phải được thay đổi:
. . . Require ip your_workstation_IP_address . . . Allow from your_workstation_IP_address . . . Require ip your_workstation_IP_address . . . Allow from your_workstation_IP_address . . .
Khi bạn hoàn tất, hãy khởi động lại web server Apache để áp dụng thay đổi của bạn bằng lệnh :
sudo systemctl restart httpd.service
Như vậy, cài đặt phpMyAdmin của ta hiện đã hoạt động. Để truy cập giao diện, hãy truy cập domain server của bạn hoặc địa chỉ IP công cộng, theo sau là /phpMyAdmin
, trong trình duyệt web :
http://server_domain_or_IP/phpMyAdmin
Để đăng nhập, hãy sử dụng cặp tên user / password của user MariaDB hợp lệ. User root
và password quản trị MariaDB là một lựa chọn tốt để bắt đầu. Sau đó, bạn có thể truy cập giao diện quản trị:
Tìm địa chỉ IP của bạn
Bạn cần biết địa chỉ IP của máy tính bạn đang sử dụng để truy cập database của bạn để hoàn thành bước trên. Đây là biện pháp bảo mật để những người không được phép không thể kết nối với server của bạn.
Lưu ý: Đây không phải là địa chỉ IP của VPS của bạn, nó là địa chỉ IP của máy tính ở nhà hoặc cơ quan của bạn.
Bạn có thể tìm hiểu cách web lớn hơn nhìn thấy địa chỉ IP của bạn bằng cách truy cập một trong các trang web sau trong trình duyệt web :
So sánh một vài trang web khác nhau và đảm bảo tất cả chúng đều mang lại cho bạn giá trị như nhau. Sử dụng giá trị này trong file cấu hình ở trên.
Bước hai - Bảo mật version phpMyAdmin của bạn
Phiên bản phpMyAdmin được cài đặt trên server của ta sẽ hoàn toàn có thể sử dụng được tại thời điểm này. Tuy nhiên, bằng cách cài đặt giao diện web, ta đã tiếp xúc hệ thống MySQL của bạn với thế giới bên ngoài.
Ngay cả với màn hình xác thực đi kèm, đây là một vấn đề khá nan giải. Do sự phổ biến của phpMyAdmin kết hợp với lượng lớn dữ liệu mà nó cung cấp quyền truy cập, các cài đặt như thế này là mục tiêu phổ biến của những kẻ tấn công.
Ta sẽ thực hiện hai chiến lược đơn giản để giảm nguy cơ cài đặt của ta bị nhắm đến và bị xâm phạm. Ta sẽ thay đổi vị trí của giao diện từ /phpMyAdmin
sang một thứ gì đó khác để tránh một số nỗ lực brute-force tự động của bot. Ta cũng sẽ tạo một cổng xác thực cấp web server bổ sung phải được thông qua trước khi truy cập vào màn hình đăng nhập phpMyAdmin.
Thay đổi vị trí truy cập của ứng dụng
Để web server Apache của ta hoạt động với phpMyAdmin, file cấu hình phpMyAdmin Apache của ta sử dụng alias để trỏ đến vị trí folder của file .
Để thay đổi URL mà giao diện phpMyAdmin của ta có thể được truy cập, ta chỉ cần đổi tên alias . Mở file cấu hình phpMyAdmin Apache ngay bây giờ:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Ở phía trên cùng của file , bạn sẽ thấy hai dòng trông như thế này:
Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin
Hai dòng này là alias của ta , nghĩa là nếu ta truy cập domain hoặc địa chỉ IP của trang web của ta , theo sau là /phpMyAdmin
hoặc /phpmyadmin
, ta sẽ được cung cấp nội dung tại /usr/share/phpMyAdmin
.
Ta muốn tắt các alias cụ thể này vì chúng được nhắm đến nhiều bởi bot và user độc hại. Thay vào đó, ta nên quyết định alias của riêng mình. Nó phải dễ nhớ, nhưng không dễ đoán. Nó không nên chỉ ra mục đích của vị trí URL. Trong trường hợp của ta , ta sẽ đi với /nothingtosee
.
Để áp dụng các thay đổi dự kiến của ta , ta nên xóa hoặc comment các dòng hiện có và thêm dòng của ta :
# Alias /phpMyAdmin /usr/share/phpMyAdmin # Alias /phpmyadmin /usr/share/phpMyAdmin Alias /nothingtosee /usr/share/phpMyAdmin
Khi bạn hoàn tất, hãy lưu file .
Để áp dụng các thay đổi , hãy khởi động lại dịch vụ web:
sudo systemctl restart httpd.service
Bây giờ, nếu bạn đi đến vị trí cài đặt phpMyAdmin trước đó của bạn , bạn sẽ gặp lỗi 404:
http://server_domain_or_IP/phpMyAdmin
Tuy nhiên, giao diện phpMyAdmin của bạn sẽ có sẵn tại vị trí mới mà ta đã chọn:
http://server_domain_or_IP/nothingtosee
Cài đặt cổng xác thực web server
Tính năng tiếp theo mà ta muốn cho cài đặt của bạn là dấu nhắc xác thực mà user sẽ được yêu cầu phải vượt qua trước khi nhìn thấy màn hình đăng nhập phpMyAdmin.
May mắn là hầu hết các web server , bao gồm cả Apache, đều cung cấp khả năng này. Ta sẽ chỉ cần sửa đổi file cấu hình Apache của bạn để sử dụng file ủy quyền.
Mở lại file cấu hình phpMyAdmin Apache trong editor của bạn:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Trong khối folder /usr/share/phpMyAdmin
, nhưng bên ngoài bất kỳ khối nào bên trong, ta cần thêm một chỉ thị overrides . Nó sẽ trông giống thế này:
. . . <Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . . </Directory> . . .
Điều này sẽ cho phép ta chỉ định chi tiết cấu hình bổ sung trong một file có tên là .htaccess
nằm trong chính folder phpMyAdmin. Ta sẽ sử dụng file này để cài đặt xác thực password của bạn .
Lưu file khi bạn hoàn tất.
Khởi động lại dịch vụ web để thực hiện thay đổi này:
sudo systemctl restart httpd.service
Tạo file .htaccess
Bây giờ ta có chỉ thị overrides trong cấu hình của bạn , Apache sẽ tìm kiếm một file có tên là .htaccess
trong folder /usr/share/phpMyAdmin
. Nếu nó tìm thấy một, nó sẽ sử dụng các chỉ thị có bên trong để bổ sung dữ liệu cấu hình trước đó của nó.
Bước tiếp theo của ta là tạo .htaccess
trong folder đó. Sử dụng editor của bạn để thực hiện ngay bây giờ:
sudo nano /usr/share/phpMyAdmin/.htaccess
Trong file này, ta cần nhập các thông tin sau:
AuthType Basic AuthName "Admin Login" AuthUserFile /etc/httpd/pma_pass Require valid-user
Hãy xem xét ý nghĩa của từng dòng sau:
- AuthType Basic : Dòng này chỉ định kiểu xác thực mà ta đang triển khai. Loại này sẽ triển khai xác thực password bằng file password .
- AuthName : Điều này đặt thông báo cho hộp thoại xác thực. Bạn nên giữ điều này chung chung để user lạ sẽ không biết về những gì đang được bảo vệ.
- AuthUserFile : Điều này đặt vị trí của file password thực sẽ được sử dụng để xác thực. Điều này phải nằm ngoài các folder đang được phục vụ. Ta sẽ tạo file này trong giây lát.
- Yêu cầu user hợp lệ : Điều này chỉ định rằng chỉ những user được xác thực mới được cấp quyền truy cập vào tài nguyên này. Đây là những gì thực sự ngăn user lạ xâm nhập.
Khi bạn nhập xong thông tin này, hãy lưu file .
Tạo file password để xác thực
Bây giờ ta đã chỉ định vị trí cho file password của bạn thông qua việc sử dụng chỉ thị AuthUserFile
trong .htaccess
, ta cần tạo và điền file password .
Điều này có thể được thực hiện thông qua việc sử dụng một tiện ích Apache được gọi là htpasswd
. Ta gọi lệnh bằng cách chuyển cho nó vị trí mà ta muốn tạo file và tên user mà ta muốn nhập chi tiết xác thực cho:
sudo htpasswd -c /etc/httpd/pma_pass username
Cờ -c
cho biết điều này sẽ tạo ra một file ban đầu. Vị trí folder là đường dẫn và tên file sẽ được sử dụng cho file . Tên user là user đầu tiên ta muốn thêm. Bạn sẽ được yêu cầu nhập và xác nhận password cho user .
Nếu bạn muốn thêm user bổ sung để xác thực, bạn có thể gọi lại lệnh tương tự mà không có cờ -c
và với tên user mới:
sudo htpasswd /etc/httpd/pma_pass seconduser
Với file password của ta đã được tạo, một cổng xác thực đã được triển khai và bây giờ ta sẽ thấy dấu nhắc password vào lần tiếp theo ta truy cập trang web của bạn :
http://server_domain_or_IP/nothingtosee
Khi bạn nhập thông tin đăng nhập của bạn , bạn sẽ được đưa đến trang đăng nhập phpMyAdmin bình thường. Lớp bảo vệ bổ sung này sẽ giúp giữ cho log MySQL của bạn sạch sẽ các lần xác thực ngoài lợi ích bảo mật bổ sung.
Kết luận
Đến đây bạn có thể quản lý database MySQL của bạn từ một giao diện web an toàn hợp lý. Giao diện user này hiển thị hầu hết các chức năng có sẵn từ dấu nhắc lệnh MySQL. Bạn có thể xem database và schemas , thực thi các truy vấn cũng như tạo các cấu trúc và tập dữ liệu mới.
Các tin liên quan
Cách sử dụng Apache JMeter để thực hiện kiểm tra tải trên web server2014-06-24
Cách cấu hình OCSP Stapling trên Apache và Nginx
2014-06-12
Cách tạo chứng chỉ SSL trên Apache cho Ubuntu 14.04
2014-04-23
Cách thiết lập server ảo Apache trên Ubuntu 14.04 LTS
2014-04-22
Cách cài đặt Apache Tomcat 7 trên Ubuntu 14.04 qua Apt-Get
2014-04-18
Cách thiết lập server ảo Apache trên Ubuntu 13.10
2014-04-16
Cách chạy Django với mod_wsgi và Apache với môi trường Python virtualenv trên VPS Debian
2014-04-10
Cách di chuyển cấu hình Apache của bạn từ cú pháp 2.2 sang 2.4.
2014-03-31
Cách sử dụng server Apache HTTP dưới dạng Reverse-Proxy bằng cách sử dụng extension mod_proxy
2014-02-14
Cách cài đặt và cấu hình Apache Tomcat trên server Debian
2014-01-07