Trên một số bản phân phối Linux, cổng 3306 được mở sau khi bạn cài đặt MySQL. Bài viết này mô tả hai phương pháp để hạn chế hoặc chặn quyền truy cập vào cổng 3306 trên máy chủ không được quản lý.
Thông tin trong bài viết này chỉ áp dụng cho các sản phẩm không được quản lý. Bạn phải có quyền truy cập root vào máy chủ để làm theo các quy trình được mô tả bên dưới.Phương pháp # 1:Tắt mạng MySQL
Nếu bạn không cần truy cập MySQL từ một máy tính bên ngoài, bạn có thể tắt mạng MySQL.
Làm theo quy trình thích hợp bên dưới cho bản phân phối Linux của bạn.
Ngay cả khi mạng MySQL bị vô hiệu hóa, bạn vẫn có thể truy cập MySQL một cách an toàn từ một máy tính từ xa nếu cần. Để làm điều này, bạn có thể cấu hình một đường hầm SSH. Để biết thông tin về cách làm điều này, vui lòng xem bài viết này.CentOS và Fedora
Để tắt mạng MySQL trên CentOS và Fedora, hãy làm theo các bước sau:
- Đăng nhập vào máy chủ của bạn bằng SSH.
- Tại dấu nhắc lệnh, sử dụng trình soạn thảo văn bản ưa thích của bạn để mở /etc/my.cnf tệp.
- Tìm dòng sau trong my.cnf tệp:
#skip-networking
Nếu dòng này không có trong my.cnf hãy thêm tệp. -
Xóa # ký hiệu ở đầu dòng để dòng có dạng như sau:
skip-networking
- Lưu các thay đổi của bạn vào /etc/my.cnf và sau đó thoát khỏi trình soạn thảo văn bản.
-
Nhập lệnh sau để khởi động lại dịch vụ MySQL:
service mysqld restart
Cổng 3306 hiện đã bị đóng trên máy chủ.
Debian và Ubuntu
Theo mặc định, MySQL trên Debian và Ubuntu được định cấu hình để chỉ sử dụng localhost giao diện (địa chỉ IP 127.0.0.1) để kết nối mạng. Điều này có nghĩa là cổng 3306 bị đóng với các kết nối bên ngoài. Để xác nhận rằng đây là cấu hình trên máy chủ của bạn, hãy làm theo các bước sau:
- Đăng nhập vào máy chủ của bạn bằng SSH.
- Tại dấu nhắc lệnh, sử dụng trình soạn thảo văn bản ưa thích của bạn để mở /etc/mysql/my.cnf tệp.
- Định vị MySQL địa chỉ ràng buộc trong dòng my.cnf tập tin. Nó sẽ giống như sau:
bind-address = 127.0.0.1
Nếu MySQL địa chỉ ràng buộc dòng được đặt thành 0.0.0.0 (hoặc không có địa chỉ nào cả), khi đó các kết nối sẽ mở trên tất cả các giao diện. - Nếu bạn đã thực hiện bất kỳ thay đổi nào đối với /etc/my.cnf , lưu chúng rồi thoát khỏi trình soạn thảo văn bản.
-
Để khởi động lại dịch vụ MySQL, hãy nhập lệnh sau:
service mysql restart
Cổng 3306 hiện đã bị đóng trên máy chủ.
Phương pháp # 2:Định cấu hình quy tắc tường lửa
Bạn có thể sử dụng iptables để tạo các quy tắc tường lửa hạn chế quyền truy cập vào cổng 3306. Ưu điểm của phương pháp này là bạn có thể cấp hoặc từ chối có chọn lọc quyền truy cập vào cổng 3306 dựa trên địa chỉ IP hoặc các tiêu chí khác.
Ví dụ:để chặn hoàn toàn quyền truy cập bên ngoài vào cổng 3306, hãy nhập lệnh sau:
iptables -A INPUT -p tcp --dport 3306 -j DROP
Tương tự, để cấp quyền truy cập vào một địa chỉ IP cụ thể và chặn tất cả các địa chỉ khác, hãy nhập các lệnh sau. Thay thế xxx.xxx.xxx.xxx với địa chỉ IP mà bạn muốn cấp quyền truy cập:
iptables -A INPUT -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP
Bạn có thể cấp cho MySQL quyền truy cập vào các địa chỉ IP bổ sung bằng cách chèn các quy tắc trong INPUT chuỗi trước DROP luật lệ. Ví dụ:
iptables -I INPUT 1 -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT