Bật SFTP không cần truy cập Shell trên CentOS 7 chỉ với Vài Lệnh

SFTP có thể được thiết lập mà không cần quyền truy cập SSH để giới hạn người dùng. Bài viết này, LANIT sẽ chia sẻ chi tiết cách bật SFTP không cần truy cập Shell trên CentOS7 chi tiết. Cùng Theo dõi nhé!

SFTP viết tắt của “Secure File Transfer Protocol” (Giao thức Truyền tệp an toàn). Nó là một giao thức mạng được sử dụng để truyền tệp tin một cách bảo mật qua mạng máy tính. SFTP kết hợp sự bảo mật của SSH (Secure Shell) với chức năng truyền tệp tin đến Server.

Điều kiện để bật SFTP

Để thực hiện theo như các bước hướng dẫn của LANIT trong bài viết này, bạn cần có sẵn một server CentOS 7 có user non-root với quyền sudo và text editor, chẳng hạn như nano hoặc vim.

Nếu bạn đang có nhu cầu thuê VPS giá rẻ – tốc độ cao để thiết lập Sftp trên CentOS7 thì có thể tham khảo các gói của LANIT.

Sau khi đáp ứng các điều kiện trên, chúng ta tiến hành thiết lập một daemon SSH nhằm giới hạn truy cập SFTP vào thư mục không có quyền truy cập SSH cho từng user.

Các bước bật SFTP không cần truy cập Shell trên CentOS 7

Bước 1: Tạo user mới

Đầu tiên, bạn cần tạo một user mới, chỉ được cấp quyền truy cập truyền file vào server.

Sau đây là ví dụ với username là lanit:

sudo adduser lanit

Và đặt mật khẩu:

sudo passwd lanit

Nhập lại mật khẩu để xác nhận

Bat Sftp Khong Can Truy Cap Shell

Tiếp đến, 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 cần đảm bảo thư mục thỏa mãn các yêu cầu về quyền của server SSH.

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 lanit, do đó user này sẽ có quyền upload file vào đó.

Tiến hàng tạo thư mục bằng lệnh sau:

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 và các user khác chỉ có quyền đọc và thực thi

chmod 755 /var/sftp/

Cuối cùng là đổi chủ sở hữu cho thư mục uploads thành lanit:

sudo chown lanit:lanit /var/sftp/uploads/
Bat Sftp Khong Can Truy Cap Shell 1

Bước 3: Giới hạn truy cập cho một thư mục

Ở bước này, chúng ta sẽ tiến hành thay đổi cấu hình server SSH để chặn truy cập terminal cho user lanit, nhưng vẫn cho phép truyền file.

Tiến hành mở file cấu hình SSH bằng một text editor bất kỳ:

vi /etc/ssh/sshd_config

Kéo xuống dưới cùng và thêm đoạn cấu hình sau vào file:

Match User lanit
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Sau đó lưu và đóng file lại

Bat Sftp Khong Can Truy Cap Shell 2

Trong đó:

  • Match User lanit: Dòng này bắt đầu một khối cấu hình áp dụng cho người dùng cụ thể. Người dùng được gọi là “lanit”. Bất kỳ cài đặt cụ thể bên dưới chỉ áp dụng cho người dùng này.
  • ForceCommand internal-sftp: Dòng này xác định rằng mọi kết nối SFTP từ người dùng “lanit” sẽ bị giới hạn bởi lệnh “internal-sftp”. Đảm bảo người dùng chỉ có thể sử dụng SFTP và không thể thực thi các lệnh hệ thống khác.
  • PasswordAuthentication yes: Cho phép người dùng “lanit” xác thực bằng mật khẩu khi kết nối SFTP. Nếu đặt thành “no”, người dùng sẽ không thể đăng nhập bằng mật khẩu và phải sử dụng phương pháp xác thực khác, ví dụ như khóa SSH.
  • ChrootDirectory /var/sftp: Đây là thư mục gốc mà user “lanit” giới hạn trong khi sử dụng SFTP. Người dùng sẽ chỉ có thể xem và truy cập các tệp tin và thư mục bên trong thư mục này.
  • PermitTunnel no: Ngăn chặn người dùng “lanit” khởi tạo các kết nối tunnel bằng cách sử dụng tunneling SSH.
  • AllowAgentForwarding no: Ngăn chặn người dùng “lanit” sử dụng chức năng Agent Forwarding, tính năng của SSH cho phép người dùng chuyển tiếp chứng chỉ xác thực từ máy khách đến máy chủ.
  • AllowTcpForwarding no: Ngăn chặn người dùng “lanit” khởi tạo các kết nối chuyển tiếp TCP thông qua SSH.
  • X11Forwarding no: Tắt tính năng chuyển tiếp giao diện đồ họa X11 (X Window System) qua SSH cho người dùng “lanit”.

Sau đó Restart lại SSH để áp dụng thay đổi:

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 lanit đã có khả năng truyền file như mong muốn chưa.

Tiến hành đăng nhập vào server bằng user lanit sử dụng shell thông thường bằng lệnh sau:

ssh lanit@localhost
Bat Sftp Khong Can Truy Cap Shell 3

Tiếp theo hãy truy cập SFTP để truyền file:

sftp lanit@localhost
Bat Sftp Khong Can Truy Cap Shell 4

Đến đây là cấu hình đã được cài đặt xong. Lúc này lanit 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 trên CentOS7.

Ngoài cung cấp VPS giá rẻ, LANIT còn được biết đến là đơn vị cho thuê máy chủ vật lý, cho thuê chỗ đặt máy chủ, thuê hosting web giá rẻ uy tín với nhiều gói đa dạng đáp ứng nhu cầu của khách hàng. Nếu bạn còn thắc mắc hay cần hỗ trợ về dịch vụ vui lòng liên hệ ngay với chúng tôi nhé!

avata Hải

Triệu Huyền Trang

Triệu Huyền Trang chuyên gia 3 năm kinh nghiệm trong ngành Công Nghệ, Phần Mềm. Chuyên chia sẻ các kiến thức phần mềm mã nguồn, ứng dụng và thông tin về công nghệ hữu ích.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!