Thứ tư, 18/09/2013 | 00:00 GMT+7

Cách bảo mật sao chép MySQL bằng SSH trên VPS

Việc cấu hình sao chép MySQL để lại cổng 3306 mở với Internet và dữ liệu giữa các server sao chép không được mã hóa. Sử dụng tunnel SSH dữ liệu sao chép MySQL có thể được chuyển qua kết nối SSH. Phương pháp này không cần bất kỳ cổng bổ sung nào để mở trong firewall

Đối với bài viết này:

  • IP chính là 1.1.1.1
  • IP phụ là 2.2.2.2

Các lệnh được nhập vào tổng thể được đánh dấu (master) và các lệnh dành cho slaver được đánh dấu (slave) .

Giả sử rằng bạn đã đọc bài viết này về bản sao MySQL.

Bước 1: Cài đặt SSH Tunneling

Tạo user và gán password . User này sẽ được sử dụng để tạo tunnel SSH: (chính)

root@mysql-master:~# useradd -d /home/tunneluser -m tunneluser
root@mysql-master:~# passwd tunneluser

User đường hầm chỉ được phép kết nối từ server slaver , do đó, nó phải được nhập vào file / etc / ssh / sshd_config với quyền là user được phép. (bậc thầy)

root@mysql-master:~# nano /etc/ssh/sshd_config

Vì user được phép đang được xác định, user không có trong danh sách này sẽ bị từ chối truy cập, vì vậy hãy thêm admin-user sẽ sử dụng SSH để đăng nhập vào VPS này. (bậc thầy)

AllowUsers root alice bob tunneluser@2.2.2.2

Khởi động lại server SSH: (chính)

root@mysql-master:~# service ssh restart

Các bước tạo SSH key được đề cập trongbài viết này nhưng tôi sẽ lặp lại các lệnh ở đây. ( slaver )

[root@mysql-slave ~]# ssh-keygen

Đầu ra mẫu:

[root@mysql-slave ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5d:db:9c:50:e8:b2:88:18:de:78:5f:ed:83:14:47:d7 root@mysql-slave
The key's randomart image is:
+--[ RSA 2048]----+
|             ... |
|            o.. E|
|           oo.   |
|    .    .o.o= . |
|   . = .S..*. +  |
|    + + . + .    |
|     . . o o     |
|        . . o    |
|             .   |
+-----------------+

KHÔNG nhập passphrase (password bảo vệ) vì khóa này sẽ được sử dụng để tự động cài đặt tunnel SSH, điều này sẽ không thể thực hiện được nếu nó chứa passphrase (password bảo vệ) . Sao chép public key vào server chính. ( slaver )

[root@mysql-slave ~]# ssh-copy-id tunneluser@1.1.1.1

Đầu ra mẫu:

[root@mysql-slave ~]# ssh-copy-id tunneluser@1.1.1.1
The authenticity of host '1.1.1.1 (1.1.1.1)' can't be established.
RSA key fingerprint is 3f:33:0c:73:bd:da:51:b9:45:2e:d7:2e:00:47:33:17.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '1.1.1.1' (RSA) to the list of known hosts.
tunneluser@1.1.1.1's password:
Now try logging into the machine, with "ssh 'tunneluser@1.1.1.1'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

User tunneluser sẽ chỉ được sử dụng cho tunnel và không cho chính quyền để thay đổi vỏ để nologin và loại bỏ password . (bậc thầy)

usermod -s /sbin/nologin tunneluser
passwd -d tunneluser

User Debian và Ubuntu thay thế / sbin / nologin bằng / usr / sbin / nologin .

Tạo tunnel SSH bằng lệnh sau. ( slaver )

ssh -L 33061:localhost:3306 tunneluser@1.1.1.1 -f -N

Đường hầm đã được tạo, vì vậy việc truy cập cổng 33061 tại localhost sẽ kết nối slaver với chủ thông qua SSH. Tham số -f chạy lệnh này ở chế độ nền và tham số -N nghĩa là "Không thực hiện lệnh" vì user tunnel có shell nologin .

Bước 2: Thay đổi cấu hình MySQL

Phần này chỉ đề cập đến những thay đổi trong các bước được nêu trong bài viết này về sao chép MySQL. Tất cả những thứ cần thay đổi được đề cập bằng màu cam . Nếu file my.cnf đã được chỉnh sửa để lắng nghe trên địa chỉ IP công cộng, hãy thay đổi nó trở lại localhost.

(chủ)( slaver )
root@mysql-master:~# nano /etc/mysql/my.cnf

Dòng sau:

bind-address	= 1.1.1.1

sẽ được thay đổi thành địa chỉ IP localhost:

bind-address	= 127.0.0.1

Thay đổi quyền của slave_user thành chỉ đăng nhập từ localhost. (bậc thầy)

root@mysql-master:~# mysql -u root -p
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'localhost' IDENTIFIED BY 'password';

Truy vấn CHANGE MASTER đã nhập trước đó trỏ đến địa chỉ IP công cộng của server Chính và không chỉ định số cổng. Truy vấn sau sẽ thay đổi điều đó. ( slaver )

root@mysql-slave:~# mysql -u root -p
mysql>STOP SLAVE;
mysql>CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_PORT=33061, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
mysql>START SLAVE;

Kết nối có thể được kiểm tra từ server bằng cách sử dụng lệnh sau: ( server )

mysql -h 127.0.0.1 -u slave_user -P 33061 -p

Vui lòng không sử dụng localhost với tham số -h vì MySQL sẽ đăng nhập local bằng số cổng mặc định.

Đệ trình bởi:

Tags:

Các tin liên quan

Cách tạo và quản lý database trong MySQL và MariaDB trên server cloud
2013-07-29
Cách thực hiện các truy vấn cơ bản trong MySQL và MariaDB trên server cloud
2013-07-29
Cách cài đặt Etherpad cho Sản xuất với Node.js và MySQL trên VPS
2013-07-26
Cách bảo mật database MySQL và MariaDB trong VPS Linux
2013-07-23
Chuyển sang MariaDB từ MySQL
2013-07-18
Cách di chuyển database MySQL giữa hai server
2012-08-09
Cách thiết lập Master Slave Replication trong MySQL
2012-07-25
Cách nhập và xuất database và đặt lại mật khẩu gốc trong MySQL
2012-06-12
Hướng dẫn MySQL Cơ bản
2012-06-12
Hướng dẫn MySQL Cơ bản
2012-06-12