Làm cách nào để thiết lập máy chủ SFTP bị hạn chế trên Ubuntu?


81

Tôi muốn biết cách thiết lập tài khoản người dùng root, sudo, chỉ sftp mà sẽ không được yêu cầu xác thực khóa công khai khi đăng nhập. Tôi cũng muốn biết cách thiết lập thư mục nhà của người dùng chỉ sftp nơi họ không thể truy cập các thư mục khác cấp trên.

Câu trả lời:


91

Tài nguyên tốt nhất để giúp bạn bắt đầu thiết lập dịch vụ ssh trên máy chủ bằng Ubuntu là OpenSSH Server . Điều này sẽ cho phép bạn sử dụng Giao thức truyền tệp SSH (cũng là Giao thức truyền tệp an toàn hoặc SFTP) để truy cập, chuyển và quản lý tệp qua SSH từ máy khách.

Tổng quan về giải pháp

  • Trên Ubuntu, bạn có thể thiết lập một OpenSSH servermáy chủ và sau đó người dùng có thể sử dụng sshđể kết nối từ Máy khách với máy chủ của Máy chủ chỉ bằng tên người dùng và mật khẩu. Lưu ý, tuy nhiên, xác thực khóa công khai được khuyến nghị,

"Đảm bảo bạn có mật khẩu mạnh trước khi cài đặt máy chủ SSH (bạn có thể muốn tắt hoàn toàn mật khẩu )"

  • Tài khoản người dùng quản trị được tạo trên Máy chủ sẽ có đặc quyền sudo, Tài khoản người dùng chuẩn được tạo trên Máy chủ sẽ không có.

Cài đặt và cấu hình Máy chủ OpenSSH của bạn trên Máy chủ

Để cài đặt máy chủ OpenSSH trên Host:

sudo apt-get install openssh-server

Cung cấp cho Máy chủ của bạn một địa chỉ IP tĩnh để bạn có thể kết nối với nó một cách đáng tin cậy:

nm-connection-editor

Để định cấu hình máy chủ OpenSSH của bạn , "trước tiên, hãy tạo bản sao lưu tệp sshd_config bằng cách sao chép nó vào thư mục chính của bạn hoặc bằng cách tạo một bản sao chỉ đọc trong / etc / ssh bằng cách thực hiện:"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"Khi bạn đã sao lưu sshd_configtệp của mình , bạn có thể thay đổi với bất kỳ trình soạn thảo văn bản nào, ví dụ:"

sudo -H gedit /etc/ssh/sshd_config

Bạn phải khởi động lại dịch vụ ssh của mình trên Host để những thay đổi này có hiệu lực

sudo service ssh restart

Hãy xem xét các biện pháp bảo mật sau đây

  • Không bật chuyển tiếp cổng trên bộ định tuyến của bạn: Khi người ngoài yêu cầu bộ định tuyến của bạn kết nối người ngoài với Cổng 22, v.v., bộ định tuyến của bạn không tuân thủ trừ khi bạn đã bật chuyển tiếp cổng
  • Vô hiệu hóa đăng nhập root: Nhận xét ra PermitRootLogin without-password; thêm PermitRootLogin novào máy chủ/etc/ssh/sshd_config
  • Chọn cổng SSH không chuẩn: Nhận xét Port 22; thêm Port <new-port-number>vào máy chủ/etc/ssh/sshd_config
  • Chỉ cho phép kết nối cục bộ: Thêm ListenAddress 192.168.0.10
  • Cho phép một số người dùng trên một số cổng nhất định: Thêm AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>hoặc AllowUsers <username>@111.222.333.*vào Máy chủ/etc/ssh/sshd_config
  • Chỉ cho phép các kết nối khóa RSA (không mật khẩu): Nối các nội dung ~/.ssh/id_rsa.pubtừ mỗi Máy khách dưới dạng một dòng mới của Máy chủ ~/.ssh/authorized_keys. Sau đó thêm PasswordAuthentication novào Máy chủ/etc/ssh/sshd_config
  • Nỗ lực bẻ khóa của kẻ tấn công chậm: Sử dụng ufw (tường lửa không biến chứng) trên Máy chủ để xếp hạng giới hạn kết nối đến 10 / phút: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • Để biết thêm ý tưởng, hãy xem Giữ an toàn truy cập SSH

Nếu bạn cảm thấy bạn phải, Kích hoạt PasswordAuthenticationtrong sshd_configtập tin của bạn

Tìm dòng với cụm từ PasswordAuthenticationvà làm cho nó đọc:

PasswordAuthentication yes

Lưu sshd_configtệp mới của bạn và sau đó khởi động lại sshdịch vụ của Host :

sudo service ssh restart

Nếu bạn cần truy cập từ bất cứ nơi nào qua internet, Cài đặt Chuyển tiếp cổng trên bộ định tuyến cục bộ của bạn để hướng lưu lượng truy cập đến máy chủ OpenSSH của bạn

Lưu ý sshDịch vụ của máy chủ cổng lắng nghe trong sshd_configtệp và thiết lập bộ định tuyến của bạn để chuyển tiếp lưu lượng TCP / UDP nhắm vào cổng này đến địa chỉ IP của máy chủ OpenSSH của bạn.

Kết nối với Máy chủ và đăng nhập thông qua dòng lệnh hoặc thiết bị đầu cuối

  • Để mở thiết bị đầu cuối vỏ SFTP như <username>trên Máy chủ, hãy mở Thiết bị đầu cuối trên Máy khách và nhập lệnh sau, thay thế 123.123.1.23bằng địa chỉ IP của Máy chủ:

    sftp <username>@123.123.1.23
    
    • Nếu bạn đã thay đổi số cổng Máy chủ OpenSSH của máy chủ lắng nghe, hãy làm:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • Để mở thiết bị đầu cuối vỏ SSH như <username>trên Máy chủ, hãy mở Thiết bị đầu cuối trên Máy khách và nhập lệnh sau, thay thế 123.123.1.23bằng địa chỉ IP của Máy chủ:

    ssh <username>@123.123.1.23
    
    • Nếu bạn đã thay đổi số cổng Máy chủ OpenSSH của máy chủ lắng nghe, hãy làm:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

Kết nối với Máy chủ và đăng nhập thông qua trình quản lý tệp GUI (ví dụ: Nautilus) để truy cập SFTP trực quan hơn để cho phép truyền tệp

  1. Mở Nautilus trên máy khách
  2. Chọn Tệp> Kết nối với Máy chủ
  3. Thể loại: SSH
  4. Máy chủ: Nhập địa chỉ IP của máy chủ
  5. Cổng: số cổng được chỉ định trong sshd_configtệp của Máy chủ
  6. Tên người dùng: tên người dùng
  7. Mật khẩu: mật khẩu

nhập mô tả hình ảnh ở đây

Trong 14.04:

  1. Mở Nautilus trên máy khách
  2. Kết nối với máy chủ
  3. Loại: `ssh @ 123.123.1.23:

Tạo tài khoản người dùng chuẩn trên máy chủ với quyền hạn chế tệp bên ngoài thư mục nhà của họ

Quyền truy cập tệp đúng vào Máy chủ đảm bảo rằng mỗi người dùng chuẩn (không có đặc quyền sudo) mà bạn tạo trên Máy chủ sẽ sở hữu /home/new_userthư mục của họ nhưng có quyền hạn chế với phần còn lại của cấu trúc thư mục.

  • Quyền hạn chế không nhất thiết có nghĩa là họ không thể xem tên tệp và cấu trúc thư mục.

Hy vọng điều đó hữu ích!


9
Dường như với tôi câu trả lời đó, trong khi dường như rất toàn diện thực sự không trả lời được phần khó nhất của câu hỏi OP: "nơi họ không thể truy cập các thư mục khác cấp cao hơn." Nếu được thực hiện như trên, người dùng sẽ có thể đọc phần lớn cấu trúc thư mục.
Ostergaard

2
Để mở rộng nhận xét của @ ajostergaard, điều này tạo ra một người dùng unix thông thường và cho phép họ truy cập SSH và SFTP. Một người dùng unix thông thường (không phải root) vẫn có thể truy cập và xem một số lượng rất lớn các tệp nhạy cảm như cấu hình máy chủ web và nhiều hơn nữa. Điều này chắc chắn không an toàn và chắc chắn không thỏa mãn giới hạn mà OP yêu cầu.
Simon Woodside

50

Bước 1: Cài đặt gói OpenSSH nếu chưa cài đặt

sudo apt-get install openssh-server

Bước 2: Tạo nhóm riêng cho người dùng SFTP.

sudo addgroup ftpaccess

Bước 3: Chỉnh sửa /etc/ssh/sshd_configtập tin và thay đổi như dưới đây. Tìm và bình luận dòng dưới đây.

#Subsystem sftp /usr/lib/openssh/sftp-server

và thêm các dòng này vào cuối tập tin.

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Bước 4: Khởi động lại dịch vụ sshd.

sudo service ssh restart

Bước 5: Thêm người dùng với nhóm ftpaccess và tạo mật khẩu.

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

Bước 6: Sửa đổi quyền thư mục nhà.

sudo chown root:root /home/paul

Bước 7: Tạo một thư mục trong nhà để tải lên và sửa đổi quyền với nhóm.

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

Đó là nó .

Tham khảo: Thiết lập SFTP trên Ubuntu


Đây dường như là câu trả lời chính xác. Tôi đã không kiểm tra nó, nhưng ít nhất nó đã đề cập đến khó khăn chính, hạn chế đường dẫn duyệt web.
Mohammed Noureldin

Tôi đã thử nghiệm nó và nó quá dễ dãi, do các quyền mặc định trên thư mục nhà là 755. Tôi đã làm sudo chmod 711trên thư mục nhà và nó chỉ cho phép tôi truy cập vào thư mục www. Có vẻ tốt cho đến nay nhưng có lẽ những người khác có thể kêu vang trong ...
psychboom

0

Denyhosts là một công cụ khác ngoài những công cụ được đề cập bởi "jtd" mà bạn có thể muốn xem xét. Nó có thể tự động chặn các lần thử kết nối lặp lại với máy chủ SSH của bạn. Nó có sẵn để cài đặt trong kho Ubuntu.


Paket denyhosts chỉ khả dụng cho lucid (10.04LTS) và chính xác (12.04LTS). packages.ubuntu.com/search?suite=all&keywords=denyhosts
AB

Denyhosts không còn khả dụng trong kho Ubuntu, mặc dù nó vẫn có thể được cài đặt bằng một phương pháp khác nhưng nó đã không được cập nhật từ lâu. Vì vậy, không khôn ngoan khi sử dụng Denyhosts.
Faizan Akram Dar

0

Giới hạn quyền truy cập đối với người dùng

Tại đây, chúng tôi sẽ chỉ cho phép người dùng thực hiện chuyển tập tin và chúng tôi sẽ vô hiệu hóa quyền truy cập thiết bị đầu cuối.

Cho rằng thêm các mã sau ở dưới cùng của tệp cấu hình.

$ sudo nano /etc/ssh/sshd_config

Bây giờ các tập tin sẽ mở và dán mã.

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

Thay thế filemgbằng tên người dùng của bạn. Sau đó lưu và đóng tệp.

Đó là nó.

Tham khảo: Cách sử dụng SFTP trong Ubuntu 16.04

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.