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 , rsync và openssh-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 , make và make 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 đặtscponlycbinary đã 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 .
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 72015-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
 

