Giới thiệu
Các hệ thống quản lý cơ sở dữ liệu 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ả người dùng đề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 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, chúng tôi sẽ trình bày cách cài đặt và bảo mật cấu hình phpmyadmin trên máy chủ CentOS 7. Chúng tôi sẽ xây dựng thiết lập này trên đầu máy chủ web Apache, máy chủ web phổ biến nhất thế giới.
Điều kiện tiên quyết
Trước khi chúng tôi bắt đầu, có một vài yêu cầu cần phải giải quyết.
Để đảm bảo rằng bạn có một 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 thiết lập máy chủ ban đầu của chúng tôi cho Centos 7. Trong số những điều khác, điều này sẽ hướng dẫn bạn thiết lập người dùng không rễ với quyền truy cập
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
0 cho các lệnh quản trị.Điều kiện tiên quyết thứ hai phải được thực hiện để bắt đầu trên hướng dẫn này là cài đặt ngăn xếp đèn [Linux, Apache, Mariadb và PHP] trên máy chủ Centos 7 của bạn. Đây là nền tảng mà chúng tôi sẽ sử dụng để phục vụ giao diện phpmyadmin của chúng tôi [Mariadb cũng là phần mềm quản lý cơ sở dữ liệu mà chúng tôi muốn quản lý]. Nếu bạn chưa có cài đặt đèn trên máy chủ của mình, hãy làm theo hướng dẫn của chúng tôi về cài đặt đèn trên Centos 7.
Khi máy chủ của bạn ở trạng thái hoạt động đú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 đèn của chúng tôi đã có sẵn, chúng tôi 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 kho lưu trữ mặc định của Centos 7.
Để có được các gói chúng tôi cần, chúng tôi sẽ phải thêm một repo bổ sung vào hệ thống của chúng tôi. EPEL REPO [các gói bổ sung cho doanh nghiệp Linux] chứa nhiều gói bổ sung, bao gồm cả gói PHPMyAdmin mà chúng tôi đang tìm kiếm.Extra Packages for Enterprise Linux] contains many additional packages, including the phpMyAdmin package we are looking for.
Kho lưu trữ EPEL có thể được cung cấp cho máy chủ của bạn bằng cách cài đặt một gói đặc biệt có tên
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
1. Điều này sẽ cấu hình lại danh sách kho lưu trữ của bạn và cung cấp cho bạn quyền truy cập vào các gói EPEL.Để cài đặt, chỉ cần nhập:
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 hệ thống đóng gói
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
2 bằng cách nhập:sudo yum install phpmyadmin
Việc cài đặt bây giờ sẽ hoàn tất. Việc cài đặt bao gồm một tệp cấu hình Apache đã được đưa vào vị trí. Chúng tôi sẽ cần sửa đổi điều này một chút để làm cho nó hoạt động chính xác cho cài đặt của chúng tôi.
Mở tệp trong trình soạn thảo văn bản của bạn ngay bây giờ để chúng tôi có thể thực hiện một vài thay đổi:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Bên trong, chúng tôi thấy một số khối thư mục với một số logic có điều kiện để giải thích chính sách truy cập cho thư mục của chúng tôi. Có hai thư mục riêng biệt được xác định và trong đó, các cấu hình sẽ có giá trị cho cả Apache 2.2 và Apache 2.4 [mà chúng tôi đang chạy].
Hiện tại, thiết lập 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 tạo từ chính máy chủ. Vì chúng tôi đang làm việc trên máy chủ của mình từ xa, chúng tôi 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
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
3 hoặc sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
4 để tham khảo địa chỉ IP 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 nhà, hãy xem phần tiếp theo. Cần có bốn vị trí trong tệp 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 kết thúc, hãy khởi động lại máy chủ web Apache để thực hiện sửa đổi của bạn bằng cách nhập:
sudo systemctl restart httpd.service
Cùng với đó, việc cài đặt PHPMyAdmin của chúng tôi hiện đang hoạt động. Để truy cập giao diện, hãy truy cập tên miền máy chủ hoặc địa chỉ IP công khai của bạn theo sau là
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
5, trong trình duyệt web của bạn://server_domain_or_IP/phpMyAdmin
Để đăng nhập, hãy sử dụng cặp tên người dùng/mật khẩu của người dùng Mariadb hợp lệ. Người dùng
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
6 và mật khẩu quản trị Mariadb là một lựa chọn tốt để bắt đầu. Sau đó, bạn sẽ có thể truy cập giao diện quản trị:Tìm địa chỉ IP của bạn
Bạn sẽ cần biết địa chỉ IP của máy tính bạn đang sử dụng để truy cập cơ sở dữ liệu của mình để hoàn thành bước trên. Đây là một biện pháp phòng ngừa bảo mật để những người trái phép không thể kết nối với máy chủ của bạn.
Lưu ý: Đây không phải là địa chỉ IP của VPS của bạn, đó là địa chỉ IP của nhà hoặc máy tính làm việc của bạn.
Bạn có thể tìm hiểu làm thế nào 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 này trong trình duyệt web của bạn:
- Địa chỉ IP của tôi là gì?
- IP của tôi gì?
- Địa chỉ IP của tôi
So sánh một vài trang web khác nhau và đảm bảo tất cả chúng đều cung cấp cho bạn cùng một giá trị. Sử dụng giá trị này trong tệp cấu hình ở trên.
Bước hai - Bảo mật phiên bản phpmyadmin của bạn
Phiên thể PHPMyAdmin được cài đặt trên máy chủ của chúng tôi sẽ hoàn toàn có thể sử dụng được vào thời điểm này. Tuy nhiên, bằng cách cài đặt giao diện web, chúng tôi đã phơi bày hệ thống MySQL của chúng tôi với thế giới bên ngoài.
Ngay cả với màn hình xác thực được bao gồm, đây là một vấn đề. Do sự phổ biến của PHPMyAdmin, kết hợp với lượng dữ liệu lớn 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 cho những kẻ tấn công.
Chúng tôi sẽ thực hiện hai chiến lược đơn giản để giảm bớt cơ hội cài đặt của chúng tôi bị nhắm mục tiêu và xâm phạm. Chúng tôi sẽ thay đổi vị trí của giao diện từ
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
5 thành một thứ khác để vượt qua một số nỗ lực vũ phu bot tự động. Chúng tôi cũng sẽ tạo một cổng xác thực cấp máy chủ web bổ sung, phải được truyền trước khi đi vào màn hình đăng nhập PHPMyAdmin.Thay đổi vị trí truy cập ứng dụng
Để máy chủ web Apache của chúng tôi hoạt động với PHPMyAdmin, tệp cấu hình Apache PHPMyAdmin của chúng tôi sử dụng bí danh để trỏ đến vị trí thư mục của các tệp.
Để thay đổi URL nơi có thể truy cập giao diện phpmyadmin của chúng tôi, chúng tôi chỉ cần đổi tên bí danh. Mở tệp cấu hình Apache PHPMyAdmin ngay bây giờ:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Về phía trên của tệp, 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à bí danh của chúng tôi, có nghĩa là nếu chúng tôi truy cập tên miền hoặc địa chỉ IP của trang web của chúng tôi, theo sau là
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
5 hoặc sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
9, chúng tôi sẽ được phục vụ nội dung vào lúc ____30.Chúng tôi muốn vô hiệu hóa các bí danh cụ thể này vì chúng được nhắm mục tiêu nhiều bởi bot và người dùng độc hại. Thay vào đó, chúng ta nên quyết định bí danh của chính mình. Nó nên 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 chúng tôi, chúng tôi sẽ đi vớ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
. . .
1.Để áp dụng các thay đổi dự định của chúng tôi, chúng tôi nên xóa hoặc nhận xét các dòng hiện có và thêm của riêng chúng tôi:
# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /nothingtosee /usr/share/phpMyAdmin
Khi bạn kết thúc, lưu và đóng tệp.
Để thực hiện 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 đến vị trí trước đó của cài đặt PHPMyAdmin, bạn sẽ gặp lỗi 404:
//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 chúng tôi đã chọn:
sudo yum install phpmyadmin
1Thiết lập cổng xác thực máy chủ web
Tính năng tiếp theo mà chúng tôi muốn cho cài đặt của chúng tôi là một lời nhắc xác thực mà người dùng sẽ được yêu cầu vượt qua trước khi thấy màn hình đăng nhập PHPMyAdmin.
May mắn thay, hầu hết các máy chủ web, bao gồm cả Apache, cung cấp khả năng này tự nhiên. Chúng tôi sẽ chỉ cần sửa đổi tệp cấu hình Apache của chúng tôi để sử dụng tệp ủy quyền.
Mở lại tệp cấu hình Apache PhpMyAdmin trong trình soạn thảo văn bản của bạn:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Trong khối thư mục
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
0, nhưng bên ngoài bất kỳ khối nào bên trong, chúng ta cần thêm một chỉ thị ghi đè. Nó sẽ trông giống thế này:sudo yum install phpmyadmin
3Điều này sẽ cho phép chúng tôi chỉ định chi tiết cấu hình bổ sung trong một tệp có tên
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
3 nằm trong chính thư mục phpmyadmin. Chúng tôi sẽ sử dụng tệp này để thiết lập xác thực mật khẩu của chúng tôi.Lưu và đóng tệp khi bạn hoàn thành.
Khởi động lại dịch vụ web để thực hiện thay đổi này:
sudo systemctl restart httpd.service
Tạo tệp .htaccess
Bây giờ chúng tôi có chỉ thị ghi đè trong cấu hình của chúng tôi, Apache sẽ tìm kiếm một tệp có tên
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
3 trong thư mục . . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
0. Nếu nó tìm thấy một, nó sẽ sử dụng các chỉ thị có trong để bổ sung dữ liệu cấu hình trước đó.Bước tiếp theo của chúng tôi là tạo tệp
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
3 trong thư mục đó. Sử dụng trình soạn thảo văn bản của bạn để làm như vậy ngay bây giờ:sudo yum install phpmyadmin
5Trong tệp này, chúng tôi cần nhập thông tin sau:
sudo yum install phpmyadmin
6Hãy cùng đi qua những gì trong số các dòng này có nghĩa là:
- AuthType Basic: Dòng này chỉ định loại xác thực mà chúng tôi đang thực hiện. Loại này sẽ thực hiện xác thực mật khẩu bằng tệp mật khẩu.: This line specifies the authentication type that we are implementing. This type will implement password authentication using a password file.
- 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 chung này để người dùng trái phép giành được kiến thức về những gì đang được bảo vệ.: This sets the message for the authentication dialog box. You should keep this generic so that unauthorized users won’t gain knowledge about what is being protected.
- AuthuserFile: Điều này đặt vị trí của tệp mật khẩu thực tế sẽ được sử dụng để xác thực. Điều này nên ở bên ngoài các thư mục đang được phục vụ. Chúng tôi sẽ tạo tập tin này trong một khoảnh khắc.: This sets the location of the actual password file that will be used for authentication. This should be outside of the directories that are being served. We will create this file in a moment.
- Yêu cầu người dùng hợp lệ: Điều này chỉ định rằng chỉ người dùng được xác thực nên đượ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 người dùng trái phép nhập.: This specifies that only authenticated users should be given access to this resource. This is what actually stops unauthorized users from entering.
Khi bạn hoàn thành việc nhập thông tin này, hãy lưu và đóng tệp.
Tạo tệp mật khẩu để xác thực
Bây giờ chúng tôi đã chỉ định vị trí cho tệp mật khẩu của chúng tôi thông qua việc sử dụng Chỉ thị
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
7 trong tệp . . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
3 của chúng tôi, chúng tôi cần tạo và điền vào tệp mật khẩu.Điều này có thể được thực hiện thông qua việc sử dụng tiện ích Apache gọi là
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
9. Chúng tôi gọi lệnh bằng cách chuyển nó vị trí nơi chúng tôi muốn tạo tệp và tên người dùng chúng tôi muốn nhập chi tiết xác thực cho:sudo yum install phpmyadmin
7Cờ
sudo systemctl restart httpd.service
0 chỉ ra rằng điều này sẽ tạo một tệp ban đầu. Vị trí thư mục là đường dẫn và tên tệp sẽ được sử dụng cho tệp. Tên người dùng là người dùng đầu tiên chúng tôi muốn thêm. Bạn sẽ được nhắc nhập và xác nhận mật khẩu cho người dùng.Nếu bạn muốn thêm người dùng bổ sung vào xác thực, bạn có thể gọi lại cùng một lệnh mà không cần cờ
sudo systemctl restart httpd.service
0 và với tên người dùng mới:without the sudo systemctl restart httpd.service
0 flag, and with a new username:sudo yum install phpmyadmin
8Với tệp mật khẩu của chúng tôi được tạo, một cổng xác thực đã được triển khai và bây giờ chúng tôi sẽ thấy một lời nhắc mật khẩu vào lần tới khi chúng tôi truy cập trang web của mình:
sudo yum install phpmyadmin
1Khi bạn nhập thông tin đăng nhập của mình, bạn sẽ được đưa vào trang đăng nhập PHPMyAdmin thông thường. Lớp bảo vệ được thêm vào này sẽ giúp giữ cho nhật ký MySQL của bạn sạch sẽ các nỗ lực xác thực ngoài lợi ích bảo mật được thêm vào.
Sự kết luận
Bây giờ bạn có thể quản lý cơ sở dữ liệu MySQL của mình từ giao diện web an toàn hợp lý. Giao diện người dùng 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 cơ sở dữ liệu và lược đồ, thực hiện truy vấn và tạo các bộ và cấu trúc dữ liệu mới.