web-dev-qa-db-ja.com

Ubuntuで制限付きSFTPサーバーをセットアップする方法は?

ログイン時に公開鍵認証を必要としないルート、Sudo、sftpのみのユーザーアカウントを設定する方法を知りたいです。sftpのみのユーザーのホームディレクトリを設定する方法も知りたいです。上位レベルの他のディレクトリにアクセスできません。

80
Yuya Kobayashi

Ubuntuを使用してホストマシンでsshサービスのセットアップを開始するのに役立つ最適なリソースは、 OpenSSHサーバー です。これにより、 SSHファイル転送プロトコル (セキュアファイル転送プロトコル、またはSFTP)を使用して、クライアントマシンからSSH経由でファイルにアクセス、転送、および管理できます。

ソリューションの概要

  • Ubuntuでは、ホストマシンでOpenSSH serverを設定でき、ユーザーはsshを使用して、ユーザー名とパスワードのみを使用してクライアントからホストのサーバーに接続できます。ただし、公開鍵認証が推奨されることに注意してください。

「SSHサーバーをインストールする前に、 強力なパスワード があることを確認してください( パスワードをすべて無効にする

  • ホストで作成された管理ユーザーアカウントにはSudo特権がありますが、ホストで作成された標準ユーザーアカウントにはありません。

ホストにOpenSSHサーバーをインストールして構成する

ホストにOpenSSHサーバーをインストールするには:

Sudo apt-get install openssh-server

ホストに確実に接続できるように、ホストに静的IPアドレスを付与します。

nm-connection-editor

OpenSSHサーバーを設定するには 、「最初に、sshd_configファイルをホームディレクトリにコピーするか、/ etc/sshで読み取り専用コピーを作成してバックアップを作成します。」

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

sshd_configファイルをバックアップしたら、次のようにテキストエディタで変更できます。」

Sudo -H gedit /etc/ssh/sshd_config

これらの変更を有効にするには、ホストでsshサービスを再起動する必要があります

Sudo service ssh restart

次のセキュリティ対策を検討してください

  • ルーターでポート転送を有効にしないでください:部外者がルーターに部外者をポート22などに接続するように要求すると、ポート転送を有効にしない限り、ルーターは準拠しません
  • ルートログインを無効にします。コメントPermitRootLogin without-password; PermitRootLogin noをホストの/etc/ssh/sshd_configに追加します
  • 非標準のSSHポートを選択します。コメントアウトPort 22; Port <new-port-number>をホストの/etc/ssh/sshd_configに追加します
  • ローカル接続のみを許可する:ListenAddress 192.168.0.10を追加します
  • 特定のポートの特定のユーザーを許可する:AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>またはAllowUsers <username>@111.222.333.*をホストの/etc/ssh/sshd_configに追加します
  • RSAキー(パスワードなし)接続のみを許可する:各クライアントからの~/.ssh/id_rsa.pubの内容をホストの~/.ssh/authorized_keysの新しい行として追加します。次に、PasswordAuthentication noをホストの/etc/ssh/sshd_configに追加します
  • 攻撃者のクラッキング試行が遅い:ホストでufw(複雑でないファイアウォール)を使用して、着信接続を10 /分にレート制限します:Sudo apt-get install ufw && Sudo ufw limit OpenSSH
  • その他のアイデアについては、「 SSHアクセスを安全に保つ 」を参照してください

必要に応じて、sshd_configファイルでPasswordAuthenticationを有効にします

PasswordAuthenticationを含む行を見つけて、読み上げます。

PasswordAuthentication yes

新しいsshd_configファイルを保存してから、ホストのsshサービスを再起動します。

Sudo service ssh restart

インターネット経由でどこからでもアクセスする必要がある場合は、ローカルルーターでポートフォワーディングを設定して、OpenSSHサーバーにトラフィックを転送します

ホストのsshサービスがsshd_configファイルでリッスンするポートに注意し、このポートを宛先とするTCP/UDPトラフィックをOpenSSHサーバーのIPアドレスに転送するようにルーターを設定します。

ホストに接続し、コマンドラインまたはターミナル経由でログインします

  • ホストで<username>としてSFTPシェルターミナルを開くには、クライアントでターミナルを開き、123.123.1.23をホストのIPアドレスに置き換えて次のコマンドを入力します。

    sftp <username>@123.123.1.23
    
    • ホストのOpenSSHサーバーがリッスンするポート番号を変更した場合は、次を実行します。

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • ホストで<username>としてSSHシェルターミナルを開くには、クライアントでターミナルを開き、123.123.1.23をホストのIPアドレスに置き換えて次のコマンドを入力します。

    ssh <username>@123.123.1.23
    
    • ホストのOpenSSHサーバーがリッスンするポート番号を変更した場合は、次を実行します。

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

ホストに接続し、GUIファイルマネージャー(例:Nautilus)を介してログインし、より視覚的なSFTPアクセスでファイル転送を有効にします

  1. クライアントでNautilusを開く
  2. [ファイル]> [サーバーに接続]を選択します
  3. タイプ:SSH
  4. サーバー:ホストのIPアドレスを入力します
  5. ポート:ホストのsshd_configファイルで指定されたポート番号
  6. ユーザー名:ユーザー名
  7. パスワード:パスワード

enter image description here

14.04で:

  1. クライアントでNautilusを開く
  2. サーバーに接続
  3. タイプ: `ssh @ 123.123.1.23:

ホスト上の標準ユーザーアカウントを作成し、ホームフォルダー以外のファイルアクセスを制限します

ホスト上に適切なファイル許可を設定すると、ホスト上で作成する各標準ユーザー(Sudo特権なし)が/home/new_userディレクトリを所有しますが、ディレクトリ構造の残りの部分で制限されたアクセス許可を持ちます。

  • 制限されたアクセス許可は、必ずしもファイル名とディレクトリ構造を表示できないことを意味しません。

お役に立てば幸いです!

90
jtd

手順1:OpenSSHパッケージがインストールされていない場合はインストールする

Sudo apt-get install openssh-server

ステップ2:SFTPユーザー用に個別のグループを作成します。

Sudo addgroup ftpaccess

ステップ3:/etc/ssh/sshd_configファイルを編集し、次のように変更します。以下の行を見つけてコメントします。

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

これらの行をファイルの最後に追加します。

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

ステップ4:sshdサービスを再起動します。

Sudo service ssh restart

ステップ5:ftpaccessグループでユーザーを追加し、パスワードを作成します。

Sudo adduser paul --ingroup ftpaccess --Shell /usr/sbin/nologin

手順6:ホームディレクトリのアクセス許可を変更します。

Sudo chown root:root /home/paul

ステップ7:アップロード用のホーム内にディレクトリを作成し、グループで権限を変更します。

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

それでおしまい 。

参照: buntuでのSFTPのセットアップ

50
ytgmuabm

ユーザーへのアクセスを制限する

ここでは、ユーザーにファイル転送のみを許可し、ターミナルアクセスを無効にします。

そのために、構成ファイルの下部に次のコードを追加します。

$ Sudo nano /etc/ssh/sshd_config

これで、ファイルが開き、コードが貼り付けられます。

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

filemgをユーザー名に置き換えます。次に、ファイルを保存して閉じます。

それでおしまい。

参照: buntu 16.04でSFTPを使用する方法

0
Aimal

Denyhosts は、「jtd」で言及されているものとは別の別のツールです。 SSHサーバーへの繰り返しの接続試行を自動的にブロックできます。 Ubuntuリポジトリにインストールできます。

0
firefly2442