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 đặtscponlyc
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 .
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