Thứ tư, 22/07/2015 | 00:00 GMT+7

Cách cài đặt và cấu hình scponly trên CentOS 7

scponly là một giải pháp thay thế an toàn cho FTP ẩn danh. Nó cung cấp cho administrator khả năng cài đặt account user an toàn với quyền truy cập file từ xa bị hạn chế và không có quyền truy cập vào shell tương tác.

Tại sao sử dụng scponly thay vì SSH thông thường? Với scponly, bạn đang cấp cho user quyền truy cập từ xa để download và tải lên các file cụ thể. Chúng sẽ không có shell tương tác, nghĩa là chúng không thể thực hiện các lệnh. User chỉ có thể truy cập vào server thông qua scp , sftp hoặc các client hỗ trợ các giao thức này. Từ góc độ bảo mật, điều này làm giảm bề mặt tấn công của bạn bằng cách hạn chế quyền truy cập không cần thiết vào shell tương tác trên server .

Yêu cầu

Đối với hướng dẫn này, bạn cần một server CentOS 6 hoặc 7 mới.

Tất cả các lệnh trong hướng dẫn này phải được chạy với quyền user không phải root. Nếu cần có quyền truy cập root cho lệnh, nó sẽ được đặt trước sudo . Nếu bạn chưa có cài đặt đó, hãy làm theo hướng dẫn sau: Cài đặt Server Ban đầu trên CentOS 6 hoặc Cài đặt Server Ban đầu cho CentOS 7 .

Bước 1 - Cài đặt Gói

scponly có sẵn trong một số repository của bên thứ ba, nhưng các bản dựng này của scponly đã lỗi thời và thiếu một số tính năng mà ta sẽ bổ sung khi xây dựng scponly từ nguồn.

Để xây dựng scponly từ nguồn, bạn cần cài đặt 5 gói sau:

  • wget (Để download file qua dòng lệnh)
  • gcc (Để biên dịch scponly từ nguồn)
  • người đàn ông (Để đọc trang người đàn ông)
  • rsync (Để cung cấp tính năng sao chép file nâng cao)
  • openssh-client-tools (Để cung cấp các công cụ ssh khác nhau)

Ta sẽ sử dụng yum để cài đặt các gói tiên quyết cần thiết để xây dựng scponly. Trong quá trình cài đặt yum, ta sẽ chuyển các tên gói bắt buộc cũng như -y sẽ tự động trả lời có cho bất kỳ dấu nhắc nào.

Cài đặt wget , gcc , man , rsyncopenssh-clients bằng lệnh yum install :

  • sudo yum install wget gcc man rsync openssh-clients -y

Bước 2 - Download và extract scponly

Trong phần này, ta sẽ download bản dựng mới nhất của scponly từ sourceforge bằng cách sử dụng wget và extract các file bằng tar .

Trước khi download scponly, hãy chuyển sang folder /opt . Thư mục này thường được chỉ định cho phần mềm tùy chọn .

  • cd /opt

Theo bài viết này, ảnh chụp nhanh mới nhất của scponly là 2011.05.26 . Bạn có thể kiểm tra trang Sourceforge để biết bản phát hành sau và điều chỉnh lệnh wget phù hợp.

Download nguồn scponly bằng cách sử dụng wget :

  • sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

Extract mã nguồn scponly:

  • sudo tar -zxvf scponly-20110526.tgz

Bước 3 - Xây dựng và cài đặt scponly

Trong phần này, ta sẽ sử dụng 3 lệnh chính để xây dựng scponly: configure , makemake install . Đây là 3 lệnh thường được sử dụng nhất khi bạn tải và cài đặt phần mềm từ mã nguồn.

Thay đổi folder chứa mã nguồn scponly mà bạn vừa extract :

  • cd /opt/scponly-20110526

Trước tiên, chạy configure lệnh để xây dựng một makefile với tất cả các tính năng mà bạn muốn kích hoạt hay vô hiệu hóa khi xây dựng từ nguồn:

  • sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server

Các tùy chọn sau đã được sử dụng:

  • --enable-chrooted-binary: Cài đặt scponlyc binary đã chroot
  • --enable-winscp-compat: Cho phép tương thích với WinSCP, một ứng dụng client Windows scp / sftp
  • --enable-rsync-compat: Kích hoạt khả năng tương thích với rsync, một tiện ích sao chép file rất linh hoạt
  • --enable-scp-compat: Cho phép tương thích với các lệnh scp kiểu UNIX

Tiếp theo, ta sẽ xây dựng scponly bằng lệnh make . Các make lệnh đưa tất cả các lựa chọn của bạn mà bạn được thông qua bằng cách sử dụng configure lệnh và xây dựng nó thành những chương trình sẽ được cài đặt và chạy trên hệ điều hành.

  • sudo make

Tiếp theo, ta sẽ cài đặt các file binary với make install :

  • sudo make install

Cuối cùng, thêm các shell scponly vào file /etc/shells :

  • sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"

Tệp /etc/shells cho hệ điều hành biết shell nào có sẵn cho user . Vì vậy, ta đang nói với hệ điều hành rằng ta đã thêm một shell mới vào hệ thống có tên là scponly và file binary được đặt tại /usr/local/bin/scponly .

Bước 4 - Tạo group scponly

Bây giờ ta sẽ tạo một group có tên là scponly để có thể dễ dàng quản lý tất cả những user sẽ truy cập vào server với scponly.

  • sudo groupadd scponly

Bước 5 - Tạo Thư mục Tải lên và Đặt Quyền thích hợp

Trong phần này, ta sẽ tạo một folder tải lên tập trung cho group scponly. Điều này cho phép bạn kiểm soát vị trí và lượng dữ liệu có thể được tải lên server .

Tạo folder có tên /pub/upload đây sẽ là folder dành riêng cho tải lên:

  • sudo mkdir -p /pub/upload

Thay đổi quyền sở hữu group của folder /pub/upload thành scponly :

  • sudo chown root:scponly /pub/upload

Bước tiếp theo là cài đặt quyền trên folder /pub/upload . Bằng cách đặt quyền trên folder này thành 770, ta chỉ cấp quyền truy cập cho user root và thành viên của group scponly.

Thay đổi quyền trên folder /pub/upload để đọc, ghi và thực thi đối với chủ sở hữu và group và xóa tất cả quyền đối với những người khác:

  • sudo chmod 770 /pub/upload

Bước 6 - Tạo account user với scponly Shell

Bây giờ ta sẽ cài đặt một account user thử nghiệm để xác minh cấu hình scponly của ta .

Tạo một user có tên testuser1 và chỉ định scponly làm group thay thế và /usr/local/bin/scponly làm shell:

  • sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

Lưu ý: Tiếp theo là bước rất quan trọng. Thư mục chính của user không được ghi vì họ có thể sửa đổi các tham số SSH nhất định và có thể lật đổ shell scponly.

Thay đổi quyền trên folder chính testuser1 để chỉ đọc và thực thi đối với chủ sở hữu:

  • sudo chmod 500 /home/testuser1

Cuối cùng, đặt password cho user testuser1 :

  • sudo passwd testuser1

Bước 7 - Xác minh user không có quyền truy cập vào lớp vỏ tương tác

Bây giờ ta sẽ kiểm tra quyền truy cập scponly shell và xác minh nó hoạt động như mong đợi.

Hãy xác minh account testuser1 không có quyền truy cập vào terminal .

Cố gắng đăng nhập vào server với quyền testuser1:

  • su - testuser1

Thiết bị terminal của bạn sẽ bị treo vì bạn không có quyền truy cập vào một shell tương tác. Nhấn CTRL+C để thoát khỏi shell scponly.

Bạn cũng có thể kiểm tra quyền truy cập từ máy local của bạn :

  • ssh testuser1@your_server_ip

, terminal của bạn sẽ bị treo vì testuser1 không được phép truy cập shell . Nhấn CTRL+C để thoát khỏi shell scponly.

Bước 8 - Kiểm tra khả năng download file của user

Trong phần này, ta sẽ kết nối qua sftp từ máy local của bạn với DigitalOcean Server để xác minh account testuser1 có thể download file .

Đầu tiên, hãy tạo một file 100 Megabyte bằng fallocate :

  • sudo fallocate -l 100m /home/testuser1/testfile.img

Thay đổi quyền sở hữu file testfile.img thành testuser1:

  • sudo chown testuser1:testuser1 /home/testuser1/testfile.img

Trên hệ thống local của bạn thay đổi folder thành /tmp :

  • cd /tmp

sftp tiếp theo đến server DigitalOcean của bạn:

  • sftp testuser1@your_server_ip

Bạn có thể được yêu cầu lưu khóa ssh khi nhập password .

Sau khi đăng nhập, vấn đề ls -l tại dấu nhắc sftp> :

  • ls -l

Download file bằng lệnh get :

  • get testfile.img

Sau khi tải xong file , gõ quit để thoát:

  • quit

Quay lại máy local của bạn, xác minh file đã được download thành công:

  • ls -l testfile.img

Bước 9 - Kiểm tra khả năng tải file của user lên

Trong phần này, ta sẽ kiểm tra khả năng tải file lên server của account testuser1 bằng sftp .

Lưu ý: Trong phần này, ta sẽ giới hạn quyền truy cập vào folder /pub/upload . Điều này không bắt buộc nhưng là một lợi ích bảo mật bổ sung vì nhiều lý do như quản lý quota hoặc sử dụng đĩa và dễ dàng giám sát tất cả các tải lên ở vị trí trung tâm.

Trên hệ thống local của bạn, hãy tạo một file 100 megabyte có tên uploadfile.img bằng cách sử dụng fallocate :

  • fallocate -l 100m /home/testuser1/uploadfile.img

Từ hệ thống local của bạn, hãy kết nối với DigitalOcean Server.

  • sftp testuser1@your_server_ip

Tiếp theo, tải uploadfile.img lên /pub/upload từ dấu nhắc sftp :

  • put uploadfile.img /pub/upload/

Xác minh file đã được tải lên thành công bằng cách đưa ra lệnh sau tại dấu nhắc sftp :

  • ls -ltr /pub/upload

Kết quả sẽ tương tự như:

-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img 

Cuối cùng gõ quit tại dấu nhắc sftp :

  • quit

Kết luận

scponly nên có trong mọi hộp công cụ của administrator . Nó được dùng như một giải pháp thay thế an toàn cho FTP ẩn danh hoặc như một cách cung cấp cho user đã xác thực khả năng download và tải lên file mà không cần có shell tương tác. Việc ghi log scponly xảy ra trong file log ssh tiêu chuẩn /var/log/secure . Như mọi khi đọc các trang người đàn ông và cập nhật hệ thống của bạn.

Để biết thêm thông tin về scponly, hãy truy cập trang GitHub của scponly .


Tags:

Các tin liên quan

Cách viết quy tắc kiểm tra hệ thống tùy chỉnh trên CentOS 7
2015-07-16
Cách viết quy tắc kiểm tra hệ thống tùy chỉnh trên CentOS 7
2015-07-16
Cách thiết lập firewall bằng FirewallD trên CentOS 7
2015-06-18
Cách thiết lập firewall bằng FirewallD trên CentOS 7
2015-06-18
Cách phát hiện bất thường với Skyline trên CentOS 7
2015-06-16
Cách cài đặt và cấu hình mod_deflate trên CentOS 7
2015-06-12
Cách hạn chế tài nguyên bằng cách sử dụng nhóm trên CentOS 6
2015-06-10
Cách phân tích chỉ số hệ thống với InfluxDB trên CentOS 7
2015-06-04
Cách quản lý / vv với Kiểm soát phiên bản bằng Etckeeper trên CentOS 7
2015-04-20
Cách cài đặt WordPress với OpenLiteSpeed trên CentOS 7
2015-04-16