SFTP (SSH File Transfer Protocol) là một giao thức bảo mật được sử dụng để truyền tải file giữa máy khách và máy chủ thông qua kết nối SSH. Một ưu điểm nổi bật của SFTP là khả năng hạn chế quyền truy cập của người dùng chỉ trong phạm vi truyền file mà không cần cấp quyền truy cập Shell. Điều này giúp tăng cường bảo mật và hạn chế rủi ro truy cập trái phép vào hệ thống máy chủ. Cùng mình tìm hiểu cách bật SFTP không cần truy cập Shell trên CentOS 7 ngay sau đây.
Những điểm chính
- Giới thiệu về SFTP và giới hạn quyền truy cập SSH: Hiểu được SFTP là giao thức truyền file an toàn qua SSH và tại sao việc giới hạn quyền truy cập SSH lại quan trọng.
- Điều kiện tiên quyết: Liệt kê những thứ cần chuẩn bị trước khi thực hiện các bước cấu hình.
- Hướng dẫn cách bật SFTP không cần truy cập Shell trên CentOS 7: Cung cấp các bước thực hiện chi tiết như tạo user mới, tạo thư mục để truyền file, giới hạn truy cập cho một thư mục, xác thực cấu hình.
- Giới thiệu Vietnix: Biết đến Vietnix là đối tác tin cậy cho giải pháp VPS chuyên nghiệp.
Giới thiệu về SFTP và giới hạn quyền truy cập SSH
SFTP (SSH File Transfer Protocol) là một phương thức truyền tải file an toàn, đơn giản và dễ sử dụng, thường được tích hợp sẵn trên các máy chủ hỗ trợ SSH. Theo thiết lập mặc định, SSH cho phép mọi người dùng có tài khoản trên hệ thống truy cập cả tập tin (qua SFTP) và terminal shell, điều này tiềm ẩn rủi ro bảo mật.
Trong các tình huống cần tăng cường bảo mật, bạn có thể giới hạn quyền truy cập của một số người dùng, chỉ cho phép họ truyền tải tập tin qua SFTP mà không cấp quyền sử dụng shell. Cách thiết lập này giúp bảo vệ hệ thống máy chủ tốt hơn, đồng thời quản lý quyền truy cập người dùng hiệu quả hơn.

Điều kiện để thực hiện cách bật SFTP không cần truy cập Shell trên CentOS 7
Để để thực hiện cách bật SFTP không cần truy cập Shell trên CentOS 7, trước tiên bạn cần đảm bảo đã có:
- Một máy chủ CentOS 7 với một người dùng non-root có quyền sudo.
- Một trình soạn thảo văn bản (text editor) như nano hoặc vim.
Nếu bạn chưa có máy chủ, có thể cân nhắc các gói VPS của Vietnix, bao gồm VPS Giá Rẻ cho đến VPS SSD, VPS AMD và VPS NVMe, phù hợp với nhiều nhu cầu và ngân sách. Vietnix cung cấp dịch vụ VPS hiệu năng mạnh mẽ, tốc độ cao và hỗ trợ kỹ thuật 24/7, lý tưởng cho việc truyền tải và quản lý file SFTP, đặc biệt là các file lớn. Liên hệ Vietnix để biết thêm chi tiết.
Sau khi chuẩn bị xong, bạn hãy làm theo các bước tiếp theo để cấu hình daemon SSH.
Hướng dẫn cách bật SFTP không cần truy cập Shell trên CentOS 7
Bước 1: Tạo user mới
Trước tiên bạn có thể tạo một user mới, chỉ được cấp quyền truy cập truyền file vào server. Ở bài viết này, mình sẽ sử dụng username là vietnix
:
sudo adduser vietnix
Sau đó tạo mật khẩu cho user mới:
sudo passwd vietnixpassword
Nhập lại mật khẩu lần nữa để xác nhận
Sau khi tạo xong user mới, bạn sẽ tạo một thư mục để truyền file và thiết lập các quyền cần thiết.
Bước 2: Tạo thư mục để truyền file
Để giới hạn quyền truy cập SFTP cho một thư mục, trước tiên bạn cần đảm bảo rằng thư mục này tuân theo các yêu cầu về quyền của server SSH.
Cụ thể hơn, một thư mục và các thư mục ở trên nó trong cây filesystem đều phải được sở hữu bởi root và không người dùng nào có quyền được ghi. Khi đó, bạn sẽ không thể hạn chế quyền truy cập vào home directory của user vì một số home directory được sở hữu bởi user chứ không phải root.
Lưu ý
Một số phiên bản OpenSSH không có các yêu cầu này, tuy nhiên trên các bản Linux mới khác đều có.
Để khắc phục vấn đề này, bạn có thể tạo và sử dụng thư mục mới /var/sftp/uploads
làm thư mục upload đích. Trong đó /var/sftp
được sở hữu bởi root và mọi user khác đều không có quyền ghi, thư mục con /var/sftp/uploads
được sở hữu bởi vietnix, do đó user này sẽ có quyền upload file vào đó.
Trước tiên, tạo thư mục bằng lệnh sau:
sudo mkdir -p /var/sftp/uploads
Sau đó đặt chủ sở hữu của /var/sftp
thành root:
sudo chown root:root /var/sftp
Cung cấp quyền ghi cho root ở cùng thư mục đó, còn mọi user khác chỉ có quyền đọc và thực thi:
sudo chmod 755 /var/sftp
Cuối cùng là đổi chủ sở hữu cho thư mục uploads
thành vietnix:
sudo chown vietnix:vietnix /var/sftp/uploads
Bước 3: Giới hạn truy cập cho một thư mục
Ở bước tiếp theo, bạn sẽ thay đổi cấu hình server SSH để chặn truy cập terminal cho user vietnix, nhưng đồng thời vẫn cho phép truyền file.
Trước tiên, mở file cấu hình SSH bằng một text editor bất kỳ:
sudo vi /etc/ssh/sshd_config
Kéo xuống phía dưới cùng rồi thêm đoạn cấu hình sau vào file:
. . .
Match User vietnix
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Sau đó lưu rồi đóng file lại.
Trong đó:
Match User
yêu cầu server SSH áp dụng các lệnh được liệt kê ở dưới, chỉ cho user được chỉ định. Ở đây chính là user vietnix.ForceCommand internal-sftp
buộc server SSH chạy server SFTP mỗi khi login, chặn truy cập vào shell.PasswordAuthentication yes
cho phép user xác thực bằng mật khẩu.ChrootDirectory /var/sftp/
đảm bảo rằng user sẽ không được phép truy cập vào bất kỳ thứ gì ngoài thư mục/var/sftp
.AllowAgentForwarding no
,AllowTcpForwarding no
vàX11Forwarding no
disable các tính năng: chuyển tiếp cổng (port forwarding), tunnel và chuyển tiếp X11 cho user vietnix.
Các dòng cấu hình trên có thể được áp dụng cho các user khác, trong đó hãy lưu ý đổi tên user tương ứng ở dòng Match User
.
Lưu ý
Bạn có thể bỏ dòng PasswordAuthentication yes
để xác thực truy cập dựa trên SSH key nếu cần đảm bảo bảo mật tốt hơn. Ở bước sau, bạn sẽ cần kiểm tra cấu hình bằng cách truy cập SSH từ máy cục bộ và xác thực bằng mật khẩu, tuy nhiên nếu thiết lập xác thực dựa trên SSH key thì bạn cần có quyền truy cập vào máy tính có keypair của user.
Restart lại dịch vụ để áp dụng thay đổi:
sudo systemctl restart sshd
Bước 4: Xác thực cấu hình
Ở bước cuối cùng, bạn sẽ kiểm tra xem user vietnix đã có khả năng truyền file như mong muốn chưa.
Trước tiên, đăng nhập vào server bằng user vietnix sử dụng shell thông thường:
ssh vietnix@localhost
Quyền truy cập shell này đã bị chặn, khi đó bạn sẽ nhận thông báo lỗi như sau:
Error message
This service allows sftp connections only.
Connection to localhost closed.
Thông báo này cho biết user vietnix không còn quyền truy cập vào server shell bằng SSH nữa.
Tiếp theo hãy thử truy cập SFTP để truyền file:
sftp vietnix@localhost
Server sẽ cho phép user đăng nhập vào hệ thống:
SFTP prompt
Connected to localhost.
sftp>
Kiểm tra nội dung thư mục bằng lệnh ls
, sau đó prompt sẽ hiển thị thư mục uploads
được tạo trước đó:
sftp> ls
Kết quả sẽ hiển thị thư mục upload
vừa tạo ở bước trên và trả về thông báo sftp>.
SFTP file list output
uploads
Để xác thực xem user có bị giới hạn truy cập vào thư mục này và các thư mục ở trên nó hay không, bạn có thể thử dùng lệnh sau để di chuyển lên một thư mục phía trên:
cd ..
Lệnh trên sẽ dẫn đến lỗi vì ta không có quyền truy cập, mặc dù vẫn có thể xem nội dung của thư mục.
Như vậy là cấu hình đã được cài đặt chính xác. Bây giờ user vietnix chỉ có thể truy cập server bằng SFTP để truyền file, nhưng không có quyền truy cập vào shell.
Vietnix – Đối tác tin cậy cho giải pháp VPS chuyên nghiệp
Vietnix là nhà cung cấp dịch vụ VPS uy tín với hơn 12 năm kinh nghiệm trong ngành. Với hạ tầng kỹ thuật hiện đại, Vietnix mang đến các giải pháp máy chủ ảo tốc độ cao và ổn định vượt trội, đáp ứng mọi nhu cầu từ cá nhân đến doanh nghiệp. Hệ thống VPS của Vietnix hỗ trợ đa dạng hệ điều hành, cho phép khách hàng linh hoạt lựa chọn nền tảng phù hợp với ứng dụng của mình. Điểm nổi bật của Vietnix là đội ngũ kỹ thuật chuyên nghiệp, sẵn sàng hỗ trợ 24/7, giúp khách hàng nhanh chóng xử lý mọi vấn đề phát sinh, đảm bảo hệ thống luôn vận hành trơn tru và hiệu quả.
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website: https://vietnix.vn/
Hy vọng qua bài viết này, bạn đã nắm rõ cách bật SFTP không cần truy cập Shell trên CentOS 7. Phương pháp này không chỉ giúp tăng cường bảo mật cho hệ thống mà còn đảm bảo người dùng chỉ có quyền truy cập vào các thư mục được chỉ định. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình thực hiện, đừng ngần ngại tìm kiếm sự hỗ trợ từ đội ngũ kỹ thuật hoặc để lại câu hỏi để được giải đáp kịp thời. Chúc bạn thành công!