Bài hướng dẫn này giải thích cách thiết lập và sử dụng máy chủ SFTP trên CentOS. Trước khi bắt đầu, hãy để tôi giải thích SFTP thực sự đại diện cho cái gì và nó được sử dụng để làm gì. Hiện tại, hầu hết mọi người đều biết rằng chúng ta có thể sử dụng FTP thông thường để truyền, tải xuống hoặc tải lên dữ liệu từ máy chủ đến máy khách hoặc máy khách đến máy chủ. Nhưng giao thức này dễ bị tấn công (nếu không sử dụng TLS) bởi những kẻ xâm nhập ẩn danh vì các cổng mở rộng cho bất kỳ ai. Do đó, SFTP đã được giới thiệu như một giải pháp thay thế khác để đáp ứng mục đích chính là tăng cường mức độ bảo mật.
SFTP là viết tắt của SSH File Transfer Protocol hoặc Secure File Transfer Protocol. Nó sử dụng một giao thức riêng được đóng gói với SSH để cung cấp kết nối an toàn.
Chạy:
Đầu ra sẽ tương tự như sau:
Vậy là xong, bây giờ chúng ta sẽ tiếp tục thực hiện cấu hình SFTP.
Về cơ bản, những gì tôi đang cố gắng thực hiện với bước trên là lấy một thư mục riêng làm thư mục chính để truy cập SFTP. Tất cả các thư mục người dùng cho người dùng SFTP sẽ là các thư mục con của thư mục dữ liệu này.
Hãy tạo một nhóm cho người dùng SFTP, sau đây là các bước:
Sau đó, tạo một người dùng 'howtoforge' và chỉ định người dùng đó vào nhóm SFTPUSERS. Dưới đây là các bước:
Dưới đây là giải thích về các lệnh trên:
Bây giờ chúng ta hãy tạo thư mục /upload trong /data/mysftpuser, sau đó chỉ định quyền sở hữu phù hợp cho thư mục.
Sau khi hoàn tất, hãy xác minh rằng thư mục mới trong thư mục /data tồn tại và chúng tôi đã cấu hình đúng.
Bây giờ hãy cấu hình giao thức SSH để tạo một quy trình SFTP. Bạn có thể thực hiện việc này bằng cách chỉnh sửa tệp cấu hình trong /etc/ssh/sshd_config. Sau đây là các bước:
Thêm các dòng sau vào cuối tệp.
Sau khi hoàn tất, hãy khởi động lại dịch vụ SSH, dưới đây là các bước thực hiện:
Tôi sẽ truy cập SFTP bằng cách sử dụng một máy chủ khác có tên là TEST01. Đầu tiên, tôi sẽ xác minh Cổng của máy chủ SFTP. Để thực hiện việc đó, tôi sẽ sử dụng hàm nmap. Nếu máy chủ khách hàng của bạn không có, bạn có thể tải xuống và cài đặt bằng yum như hiển thị bên dưới:
Bạn sẽ nhận thấy rằng hiện tại trên máy chủ SFTP của chúng ta, cổng mở duy nhất là SSH 22. Bây giờ, hãy thử truy cập máy chủ SFTP (IP: 192.168.1.100 trong trường hợp của tôi) từ máy khách TEST01. Dưới đây là các bước:
Tuyệt! Bây giờ máy chủ SFTP của chúng ta có thể truy cập được từ bên ngoài. Lưu ý rằng thư mục mặc định là /upload. Điều này có nghĩa là SFTP sẽ chỉ hiển thị đường dẫn mặc định là /upload mặc dù cấu hình trước đó của chúng ta được thực hiện trong thư mục máy chủ SFTP là /data/mysftpuser/upload.
Bây giờ chúng ta hãy thử lấy một tệp từ thư mục máy chủ SFTP vào máy khách thử nghiệm của chúng ta. Đầu tiên, hãy tạo một tệp thử nghiệm trong /data/mysftpuser/upload. Sau đây là các bước:
Sau đó, quay lại trang thử nghiệm TEST01 của chúng tôi và xem liệu chúng tôi có thể lấy và tải xuống tệp đã tạo hay không.
Tuyệt! Kiểm tra SFTP của chúng ta đã thành công, hãy thử truy cập SSH bằng người dùng mysftpuser. Như trước đây, chúng ta đã đặt cấu hình là /sbin/nologin, do đó người dùng sẽ không thể sử dụng các dịch vụ SSH:
Tuyệt! Bây giờ chúng ta đã có một máy chủ SFTP được bảo mật và đang chạy.
SFTP là viết tắt của SSH File Transfer Protocol hoặc Secure File Transfer Protocol. Nó sử dụng một giao thức riêng được đóng gói với SSH để cung cấp kết nối an toàn.
1. Lưu ý sơ bộ
Đối với bài hướng dẫn này, tôi đang sử dụng CentOS7 ở phiên bản 64bit. Các bước tương tự cũng sẽ hoạt động trên CentOS 6. Kết quả hướng dẫn sẽ chỉ ra cách một máy khách có thể được cung cấp quyền truy cập vào máy chủ SFTP nhưng không thể đăng nhập vào chính máy chủ đó bằng SSH.2. Cài đặt SFTP
Không giống như FTP thông thường, không cần phải cài đặt thêm các gói để sử dụng SFTP. Chúng tôi chỉ yêu cầu gói prebuildSSHd đã được cài đặt trong quá trình cài đặt trên máy chủ. Do đó, chỉ cần kiểm tra để xác nhận xem bạn đã có gói SSH cần thiết hay chưa. Sau đây là các bước:Chạy:
Mã:
rpm -qa|grep ssh
Mã:
[root@localhost ~]# rpm -qa|grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-7.4p1-13.el7_4.x86_64
openssh-server-7.4p1-13.el7_4.x86_64
openssh-clients-7.4p1-13.el7_4.x86_64
3. Cấu hình SFTP
Sau khi hoàn tất mọi điều kiện tiên quyết để cài đặt, chúng ta sẽ chuyển sang giai đoạn cấu hình. Để thực hành tốt nhất, chúng ta cần tạo một nhóm và người dùng để có thể quản lý tất cả người dùng sẽ được truy cập SFTP. Nhưng trước tiên, hãy tạo một thư mục bổ sung có tên là data. Sau đây là các bước:
Mã:
mkdir -p /data/sftp
chmod 701 /data
Hãy tạo một nhóm cho người dùng SFTP, sau đây là các bước:
Mã:
groupadd sftpusers
Mã:
useradd -g sftpusers -d /upload -s /sbin/nologin mysftpuser
passwdmysftpuser
Mã:
Đổi mật khẩu cho người dùng mysftpuser.
Mật khẩu mới:
Nhập lại mật khẩu mới:
passwd: tất cả mã xác thực đã được cập nhật thành công.
- Tôi tạo một người dùng và đưa người dùng đó vào nhóm sftpusers bằng lệnh -g.
- Tôi chỉ định thư mục chính cho người dùng nằm trong thư mục /upload bằng cách thiết lập lệnh -d /upload. Điều này có nghĩa là sau này thư mục /upload sẽ nằm trong /data/mysftpuser/upload.
- Tôi giới hạn quyền truy cập vào shell /sbin/nologin để đảm bảo người dùng chỉ có thể sử dụng giao thức SFTP, không phải SSH.
- Tôi đặt tên cho người dùng là "mysftpuser".
- Đặt mật khẩu cho người dùng "mysftpuser".
Bây giờ chúng ta hãy tạo thư mục /upload trong /data/mysftpuser, sau đó chỉ định quyền sở hữu phù hợp cho thư mục.
Mã:
mkdir -p /data/mysftpuser/upload
chown -R root:sftpusers /data/mysftpuser
chown -R mysftpuser:sftpusers /data/mysftpuser/upload
Mã:
[root@localhost ~]# ls -ld /data/
drwx-----x. 5 root root 54 Mar 22 14:29 /data/
Mã:
[root@localhost ~]# ls -ld /data/mysftpuser
drwxr-xr-x. 3root sftpusers 20 Mar 22 14:29 /data/mysftpuser
Mã:
[root@localhost ~]# ls -ld /data/mysftpuser/upload
drwxr-xr-x. 2 mysftpuser sftpusers 6 tháng 3 năm 22 14:29 /data/mysftpuser/upload
Mã:
[root@localhost ~]# cat /etc/passwd|grep mysftpuser
mysftpuser:x:1001:1001::/upload:/sbin/nologin
Mã:
nano /etc/ssh/sshd_config
Mã:
Match Group sftpusers
ChrootDirectory /data/%u
ForceCommand internal-sftp
Mã:
service sshd status
Mã:
Đang chuyển hướng đến /bin/systemctl status sshd.service
? sshd.service - Daemon máy chủ OpenSSH
Đã tải: đã tải (/usr/lib/systemd/system/sshd.service; đã bật; cài đặt trước của nhà cung cấp: đã bật)
Hoạt động: đang hoạt động (đang chạy) kể từ Thu 2018-03-22 14:21:38 CET; 16 phút trước
Tài liệu: man:sshd(8)
man:sshd_config(5)
PID chính: 942 (sshd)
CGroup: /system.slice/sshd.service
??942 /usr/sbin/sshd -D
Mã:
22-03 14:21:37 localhost.localdomain systemd[1]: Đang khởi động trình nền máy chủ OpenSSH...
22-03 14:21:38 localhost.localdomain sshd[942]: Máy chủ đang lắng nghe trên cổng 0.0.0.0 22.
22-03 14:21:38 localhost.localdomain sshd[942]: Máy chủ đang lắng nghe trên :: cổng 22.
22-03 14:21:38 localhost.localdomain systemd[1]: Đã khởi động máy chủ OpenSSH daemon.
22/03 14:21:49 localhost.localdomain sshd[1375]: Đã chấp nhận mật khẩu cho root từ cổng 192.168.1.9 59465 ssh2
Mã:
service sshd restart
Mã:
[root@localhost ~]# service sshd restart
Đang chuyển hướng đến /bin/systemctl restart sshd.service
4. Kiểm traSFTP
Bây giờ mọi thứ đã được cấu hình, chúng ta hãy thực hiện một bài kiểm tra để đảm bảo thiết lập đáp ứng mục đích của chúng ta.Tôi sẽ truy cập SFTP bằng cách sử dụng một máy chủ khác có tên là TEST01. Đầu tiên, tôi sẽ xác minh Cổng của máy chủ SFTP. Để thực hiện việc đó, tôi sẽ sử dụng hàm nmap. Nếu máy chủ khách hàng của bạn không có, bạn có thể tải xuống và cài đặt bằng yum như hiển thị bên dưới:
Mã:
yum list nmap
Mã:
Các plugin đã tải: fastestmirror
Đang tải tốc độ phản chiếu từ tệp lưu trữ được lưu trong bộ nhớ đệm
* cơ sở: centos.copahost.com
* epel: mirror.imt-systems.com
* phần bổ sung: mirror.imt-systems.com
* remi-php72: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* bản cập nhật: ftp.rz.uni-frankfurt.de
Các gói có sẵn
nmap.x86_64 2:6.40-7.el7
Mã:
yum install nmap -y
Mã:
Các plugin đã tải: fastestmirror
Đang tải tốc độ phản chiếu từ tệp lưu trữ được lưu trong bộ nhớ đệm
* cơ sở: centos.copahost.com
* epel: mirror.imt-systems.com
* phần bổ sung: mirror.imt-systems.com
* remi-php72: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* bản cập nhật: ftp.rz.uni-frankfurt.de
Giải quyết các phụ thuộc
--> Đang chạy kiểm tra giao dịch
---> Gói nmap.x86_64 2:6.40-7.el7 sẽ được cài đặt
--> Xử lý phụ thuộc: nmap-ncat = 2:6.40-7.el7 cho gói: 2:nmap-6.40-7.el7.x86_64
--> Kiểm tra giao dịch đang chạy
---> Gói nmap-ncat.x86_64 2:6.40-7.el7 sẽ được cài đặt
--> Đã hoàn tất giải quyết sự phụ thuộc
Mã:
Đã giải quyết sự phụ thuộc
Mã:
= ... Kích thước
= ... x86_64 2:6.40-7.el7 cơ sở 201 k
Mã:
Tóm tắt giao dịch
= ... class="system">Tổng kích thước tải xuống: 4,2 M
Kích thước đã cài đặt: 17 M
Đang tải xuống các gói:
(1/2): nmap-ncat-6.40-7.el7.x86_64.rpm | 201 kB 00:00:01
(2/2): nmap-6.40-7.el7.x86_64.rpm | 4,0 MB 00:00:14
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Tổng cộng 300 kB/giây | 4,2 MB 00:00:14
Đang chạy kiểm tra giao dịch
Đang chạy thử nghiệm giao dịch
Kiểm tra giao dịch thành công
Đang chạy giao dịch
Đang cài đặt: 2:nmap-ncat-6.40-7.el7.x86_64 1/2
Đang cài đặt: 2:nmap-6.40-7.el7.x86_64 2/2
Đang xác minh: 2:nmap-ncat-6.40-7.el7.x86_64 1/2
Đang xác minh: 2:nmap-6.40-7.el7.x86_64 2/2
Mã:
Đã cài đặt:
nmap.x86_64 2:6.40-7.el7
Mã:
Đã cài đặt phần phụ thuộc:
nmap-ncat.x86_64 2:6.40-7.el7
Mã:
Hoàn tất!
Mã:
[root@localhost ~]# nmap -n 192.168.1.100
Mã:
Khởi động Nmap 6.40 ( http://nmap.org ) lúc 2018-03-22 14:51 CET
Báo cáo quét Nmap cho 192.168.1.100
Máy chủ đang hoạt động (độ trễ 0,000016 giây).
Không hiển thị: 997 cổng đã đóng
DỊCH VỤ TRẠNG THÁI CỔNG
22/tcp mở ssh
Mã:
Nmap đã hoàn tất: 1 địa chỉ IP (1 máy chủ đang hoạt động) đã được quét trong 0,12 giây
Bạn sẽ nhận thấy rằng hiện tại trên máy chủ SFTP của chúng ta, cổng mở duy nhất là SSH 22. Bây giờ, hãy thử truy cập máy chủ SFTP (IP: 192.168.1.100 trong trường hợp của tôi) từ máy khách TEST01. Dưới đây là các bước:
Mã:
[root@TEST01 /]#sftp [emailprotected]
Mật khẩu của [emailprotected]:
Đã kết nối tới 192.168.1.100.
sftp> pwd
Thư mục làm việc từ xa: /upload
sftp>
Bây giờ chúng ta hãy thử lấy một tệp từ thư mục máy chủ SFTP vào máy khách thử nghiệm của chúng ta. Đầu tiên, hãy tạo một tệp thử nghiệm trong /data/mysftpuser/upload. Sau đây là các bước:
Mã:
cd /data/mysftpuser/upload
touch testing_file.txt
Mã:
[root@TEST01 /]#sftp [emailprotected]
Mật khẩu của [emailprotected]:
Đã kết nối tới 192.168.1.100.
sftp> pwd
Thư mục làm việc từ xa: /upload
sftp> ls
testing_file.txt
sftp> get testing_file.txt
Đang tải /upload/testing_file.txt tới testing_file.txt
sftp> quit
Mã:
[root@TEST01 ~]#ssh [emailprotected]
Mật khẩu của [emailprotected]:
Dịch vụ này chỉ cho phép kết nối sftp.
Kết nối đến 192.168.1.100 đã đóng.