CentOS 7でscponlyをインストールおよび構成する方法

前書き

_scponly_は、匿名FTPの安全な代替手段です。 管理者は、リモートファイルへのアクセスが制限され、インタラクティブシェルにアクセスすることなく、安全なユーザーアカウントを設定できます。

通常のSSHの代わりにscponlyを使用する理由 scponlyでは、特定のファイルをダウンロードおよびアップロードするためのリモートアクセスをユーザーに許可しています。 インタラクティブなシェルはありません。つまり、コマンドを実行できません。 ユーザーは、「+ scp」、「+ sftp」、またはこれらのプロトコルをサポートするクライアントを介してのみサーバーにアクセスできます。 セキュリティの観点から、これはサーバー上の対話型シェルへの不必要なアクセスを制限することにより、攻撃対象を減らします。

前提条件

このチュートリアルでは、新しいCentOS 6または7ドロップレットが必要です。

このチュートリアルのすべてのコマンドは、非rootユーザーとして実行する必要があります。 コマンドにルートアクセスが必要な場合は、先頭に「+ sudo +」が付きます。 まだセットアップしていない場合は、このチュートリアルに従ってください:https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-6[CentOS 6での初期サーバーセットアップ]またはhttps ://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7の初期サーバーセットアップ]。

ステップ1-パッケージのインストール

scponlyはサードパーティのリポジトリで利用できますが、これらのscponlyのビルドは時代遅れであり、ソースからscponlyをビルドするときに追加する機能の一部が欠落しています。

ソースからscponlyをビルドするには、次の5つのパッケージをインストールする必要があります。

  • wget(コマンドラインからファイルをダウンロードするには)

  • gcc(ソースからscponlyをコンパイルするには)

  • man(manページを読むため)

  • rsync(高度なファイルコピーを提供するため)

  • openssh-client-tools(さまざまなsshツールを提供するため)

yumを使用して、scponlyのビルドに必要な前提条件パッケージをインストールします。 yumのインストール中に、必要なパッケージ名と、プロンプトに対して自動的にyesと応答する `+ -y +`を渡します。

+ yum install +`コマンドを使用して、 `+ wget、` + gcc + + man`、 + rsync、および` + openssh-clients`をインストールします。

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

ステップ2-scponlyのダウンロードと抽出

このセクションでは、 `+ wget `を使用してsourceforgeからscponlyの最新ビルドをダウンロードし、 ` tar +`を使用してファイルを抽出します。

scponlyをダウンロードする前に、 `+ / opt +`ディレクトリに移動します。 このディレクトリは通常、_optional_ソフトウェア用に指定されています。

cd /opt

この記事の時点で、scponlyの最新のスナップショットは* 2011.05.26 *です。 Sourceforge pageで今後のリリースを確認し、それに応じて `+ wget +`コマンドを調整できます。

`+ wget +`を使用してscponlyソースをダウンロードします。

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

scponlyソースコードを抽出します。

sudo tar -zxvf scponly-20110526.tgz

ステップ3-scponlyのビルドとインストール

このセクションでは、3つの主要なコマンドを使用してscponlyをビルドします: + configure ++ make +、および + make install +。 これらは、ソースコードからソフトウェアをダウンロードしてインストールするときに最もよく使用される3つのコマンドです。

解凍したばかりのscponlyソースコードを含むディレクトリに移動します。

cd /opt/scponly-20110526

最初に、 `+ configure +`コマンドを実行して、ソースからビルドするときに有効または無効にするすべての機能を備えたメイクファイルをビルドします。

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

次のオプションが使用されました。

  • +-enable-chroot-binary:+`インストールされたchrootバイナリ `+ scponly c +

  • -enable-winscp-compat: Windows scp / sftpクライアントであるWinSCPとの互換性を有効にします

  • `-enable-rsync-compat:`非常に用途の広いファイルコピーユーティリティであるrsyncとの互換性を有効にします

  • -enable-scp-compat: UNIXスタイルのscpコマンドとの互換性を有効にします

次に、 `+ make `コマンドでscponlyをビルドします。 ` make `コマンドは、 ` configure +`コマンドを使用して渡したすべてのオプションを取得し、OSにインストールおよび実行されるバイナリにビルドします。

sudo make

次に、 `+ make install`でバイナリをインストールします:

sudo make install

最後に、 `+ / etc / shells +`ファイルにscponlyシェルを追加します。

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

`+ / etc / shells `ファイルは、ユーザーが使用できるシェルをオペレーティングシステムに通知します。 したがって、システムに「 scponly 」という新しいシェルを追加し、バイナリが「 / usr / local / bin / scponly +」にあることをオペレーティングシステムに伝えています。

ステップ4-scponlyグループを作成する

次に、scponlyというグループを作成して、scponlyでサーバーにアクセスするすべてのユーザーを簡単に管理できるようにします。

sudo groupadd scponly

ステップ5-アップロードディレクトリを作成し、適切な権限を設定する

このセクションでは、scponlyグループの集中アップロードディレクトリを作成します。 これにより、サーバーにアップロードできるデータの場所と量を制御できます。

`+ / pub / upload +`という名前のディレクトリを作成します。これはアップロード専用のディレクトリになります:

sudo mkdir -p /pub/upload

`+ / pub / upload `ディレクトリのグループ所有権を ` scponly +`に変更します。

sudo chown root:scponly /pub/upload

次のステップは、 `+ / pub / upload +`ディレクトリにパーミッションを設定することです。 このディレクトリのアクセス許可を770に設定することにより、ルートユーザーとscponlyグループのメンバーのみにアクセスを許可しています。

`+ / pub / upload +`ディレクトリのパーミッションを所有者とグループの読み取り、書き込み、実行に変更し、他のユーザーのすべてのパーミッションを削除します。

sudo chmod 770 /pub/upload

ステップ6-scponlyシェルでユーザーアカウントを作成する

次に、テストユーザーアカウントをセットアップして、scponly構成を確認します。

  • testuser1 という名前のユーザーを作成し、代替グループとして scponly *を指定し、シェルとして `+ / usr / local / bin / scponly +`を指定します。

sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1
  • testuser1 *ホームディレクトリのアクセス許可を変更して、所有者のみが読み取りおよび実行できるようにします。

sudo chmod 500 /home/testuser1

最後に、* testuser1 *ユーザーのパスワードを設定します。

sudo passwd testuser1

手順7-ユーザーが対話型シェルにアクセスできないことを確認する

次に、scponlyシェルアクセスをテストし、期待どおりに機能することを確認します。

  • testuser1 *アカウントに端末へのアクセス権がないことを確認しましょう。

testuser1としてサーバーにログインしてみてください。

su - testuser1

対話型シェルにアクセスできないため、端末がハングします。 `+ CTRL + C +`を押してscponlyシェルを終了します。

ローカルマシンからアクセスをテストすることもできます:

ssh testuser1@

繰り返しますが、testuser1はシェルアクセスを許可されていないため、ターミナルがハングします。 `+ CTRL + C +`を押してscponlyシェルを終了します。

ステップ8-ファイルをダウンロードするユーザーの能力をテストする

このセクションでは、ローカルマシンからDigitalOcean Dropletに「+ sftp」経由で接続し、「+ test user1」アカウントがファイルをダウンロードできることを確認します。

最初に、 `+ fallocate +`を使用して100メガバイトのファイルを作成します。

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

`+ testfile.img +`ファイルの所有権をtestuser1に変更します。

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

ローカルシステムでディレクトリを「+ / tmp +」に変更します。

cd /tmp

DigitalOceanサーバーの次の + sftp +

sftp testuser1@

パスワードを入力すると、sshキーを保存するように求められる場合があります。

ログインしたら、「+ sftp> 」プロンプトで「 ls -l +」を発行します。

ls -l

`+ get +`コマンドを使用してファイルをダウンロードします。

get testfile.img

ファイルのダウンロードが終了したら、「+ quit +」と入力して終了します。

quit

ローカルマシンに戻り、ファイルが正常にダウンロードされたことを確認します。

ls -l testfile.img

ステップ9-ファイルをアップロードするユーザーの能力をテストする

このセクションでは、 `+ sftp `を使用してサーバーにファイルをアップロードする ` testuser1 +`アカウントの機能をテストします。

ローカルシステムで、 `+ fallocate `を使用して ` uploadfile.img +`という100メガバイトのファイルを作成します。

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

ローカルシステムからDigitalOcean Dropletに接続します。

sftp testuser1@

次に、 + sftp`プロンプトから + uploadfile.img + + / pub / upload`にアップロードします。

put uploadfile.img /pub/upload/

`+ sftp +`プロンプトで次のコマンドを発行して、ファイルが正常にアップロードされたことを確認します。

ls -ltr /pub/upload

結果は次のようになります。

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

最後に、「+ sftp 」プロンプトで「 quit +」と入力します。

quit

結論

scponlyはすべての管理者のツールボックスに含まれている必要があります。 これは、匿名FTPの安全な代替手段として、または認証されたユーザーが対話型シェルを使用せずにファイルをダウンロードおよびアップロードできるようにする方法として使用できます。 scponlyのロギングは、標準のsshログファイル `+ / var / log / secure +`で行われます。 いつものようにマニュアルページを読み、システムを最新の状態に保ちます。

scponlyの詳細については、https://github.com/scponly/scponly/wiki [scponly GitHub page]にアクセスしてください。