Tìm hiểu về giao thức SFTP
SFTP 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.
Để 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.
Hướng dẫn bật FTP không cần truy cập Shell trên CentOS 7
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.
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
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/
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
Trong đó:
- Match User lanit: Bắt đầu một khối cấu hình áp dụng cho người dùng cụ thể như LANIT, bất kỳ cài đặt cụ thể nào cũng chỉ áp dụng cho người dùng này.
- ForceCommand internal-sftp: 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: 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
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
Tiếp theo hãy truy cập SFTP để truyền file:
sftp lanit@localhost
Đế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.
Có thể bạn quan tâm:
- Cài Đặt MySQL Trên CentOS 7
- Cài Đặt NodeJS Trên CentOS 7
- Cách Tạo User và Xóa User trên server CentOS 7
Lời kết
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 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é!