ServerQueen SSD-01(CentOS 6.6)にSFTP設定

※作業前に必ずバックアップを取って、確実に復旧できる状態にしておいてください。
ログイン周りを触るため、失敗するとどのユーザーでもログイン出来ない、重要ファイルにアクセス出来ないなどで詰む可能性があります。

まずは理想の状態の確認

root SSHログイン不許可 SFTPログイン不許可
SSHユーザー SSHログイン許可
(suやsudoの昇格アリ)
SFTPログイン不許可・・・したいけど出来ないようなので
我慢して許可
SFTPユーザー SSHログイン不許可 SFTPログインのみ許可(ディレクトリ移動制限アリ)

の状態に持っていきたいのです。

SSHユーザーでSFTPログイン不許可は、SFTP自体がSSHを利用しているものなので、別々にログインを許可不許可することが出来ないようです。
と言う割りにSSH不許可でSFTP許可は出来るようなので不公平感があるというか、
分かっていても何故か気持ち悪い感じがするんですが、出来ないものは仕方がないので我慢です。
SFTPログイン出来ちゃってればSSHもログイン出来ちゃってるので、どうせ全部見えてしまうのは変わらないので。

今回参考にしたサイト

CentOS – SFTP用ユーザを作る – Qiita
ぽこつん研究所 » 自宅サーバー構築メモ(Debian squeeze)#4 SFTPファイル転送を利用可能にする

参考サイトを開けると最初にlessコマンドを使っていますが、lessはviっぽい操作ができるファイル閲覧ツール?かな?
今回はファイル最終行が見れれば良い場合が多かったので、catのほうがよく使っていました。

ユーザーの確認

グループの確認

他に、ディレクトリやファイルの一覧を見る

と、更に詳細情報(所有者やパーミッション設定)を見る

を使います。

「ls -l」では最後の方しか見られなくて、途中に見たいのがあるんだけどどうすんの、という時は、コマンドを追加します。

これで1ページずつ読み進めることが出来ます。

また、特定のファイル/ディレクトリだけ見れればいいという時は、

で「hogeだけ見る」ということも出来ます。

その他の詳しい操作はGoogle先生へどうぞ。

では始めていきます。

ユーザー作成

まずはSSHユーザー作成、パスワード設定。

次にSFTPユーザー作成、パスワード設定。

ユーザーを作成すると、同名のグループが自動で作成され、そのグループに所属している状態になります。
セキュリティ的に各ユーザーは別グループに分離されていたほうが嬉しいので、そこは変更せず、そのままいきます。

「/etc/passwd」で確認すると、他のユーザーと違ってどちらも「sbin/nologin」がついていないはずです。
どちらもSSHログインが可能な状態です。

で、SFTPユーザーでのSSHログインを不許可に設定します。

次に、SFTPログイン後のホームディレクトリを作成します。
通常は、ユーザー作成後のホームディレクトリは「/home/sftp-user」のような感じに初期設定されていますが、
自分一人使えればいい、かつ、webに関わるファイルだけ操作できれば十分なので、ホームディレクトリも移してしまいます。

これで、「/var/www/html/public_html」が出来ました。
Apacheでドメイン指定した場合の標準ディレクトリをここにします。

ただし制限があって、ホームディレクトリ以上の上位のディレクトリはすべて、
・所有者がrootであること
・パーミッションが755以上であること
という必要があります。
基本的には何もしなくてもそうなっているはずですが、

で設定できます。

実際のホームディレクトリの変更は後から行います。

ちなみに、wwwディレクトリ内に、cgi-binディレクトリやなんかがありますが、
個人的にはこれらのディレクトリを使わないので上記の設定だけで済ませています。
sftp-userからこれらのディレクトリを触りたい場合は、それぞれchownとchmodで所有権の設定をしておく必要があります。

さて次が本題です。SFTPログインのためには、SSHのログイン設定を触ります。
SSHのログイン設定は「/etc/ssh/sshd_config」にあります。

vi操作

viでの操作は、初めての方のために超大雑把に書くと、
起動直後は閲覧モードです。上下左右キーやPageDownキー等で、編集したい項目の近くを表示します。
「i」キーで編集モードへ移行します。
編集モードでは通常のテキストエディタのように、キーを押すとそのキーの文字入力が出来ます。
「Insert」キーで上書き/挿入の切り替えも出来ます。
「ESC」キーで編集モード終了です。
閲覧モードに戻ったら、「:wq」とキーを続けて打つと、保存して終了が出来ます。
「:w」がファイルの保存、「:q」がviを終了で、同時に指定出来ます。
ちなみに、間違って編集してしまって保存せずに終了したい時は「:q!」です。
意外とたまにあるので覚えておくと良いかもです。
その他の詳しい操作はGoogle先生へどうぞ。

sshd_config編集

最初にサブシステムの変更します。
デフォルトではOpenSSHでSFTPログイン出来るようになっていますが、
ログイン後のユーザーの操作可能な領域を簡単に設定するために、internal-sftp(内蔵SFTP)の機能を利用するよう変更します。

それから最終行以降に、SFTPユーザーでのSFTPログインの設定を追記します。

ChrootDirectoryで指定するディレクトリは、root所有のディレクトリでなければいけませんので、
ここでは「/var/www/html」ではなく、「/var/www」を指定してください。
ChrootDirectoryで指定したディレクトリ以下しか触れなくなります。

またユーザーの指定でなく、グループ指定で「Match Group sftp-user」でもOKです。
グループ指定の場合は、sftp-userグループに所属させたユーザー全員がSFTPログイン出来るようになります。

sshd_configを変更したら、sshdを再起動して、変更を有効にします。

sshd_configの記述が間違っていると、赤字のFAILEDと、どこが間違っているかが表示されて、再起動が失敗しますので、
再度「vi /etc/ssh/sshd_config」して記述の間違いを直してください。

sshdの再起動に成功したら、
これでやっとホームディレクトリの移動が出来ます。

で行います。
「/」だとルートディレクトリの指定になりますが、
SFTPログインするとルートディレクトリがChrootDirectoryになりますので、これでOKです

SSHユーザー設定

作っただけで何もしていないssh-userの設定として、
sudoの実行権限の追加と、SFTPログインの設定を追加します。

sudoの設定ファイルは「/etc/sudoers」です。
ですが、これは今までのように通常のviでは編集できません。

専用の編集コマンドがあるので、そちらを使います。

操作方法は通常のviと同じです、
スクロールしていくと、途中の行にrootユーザーの設定が出てくるので、その次の行に追記します。

これで、sudoすることでrootユーザーの代わりに操作出来るようになります。

最終確認

sshdが正しく再起動できている、
SFTPユーザーはSFTPログインの設定をしてあり、SSHログイン不許可になっている、
SSHユーザーはsudoの実行が可能、という設定になっていることを再確認したら、
rootでログインしているSSHから一旦ログアウトして、SSHユーザーでログインし直します。

SSHユーザーでログイン出来ること、SSHユーザーでsudoとsuが使えること、
SFTPユーザーではSSHにログイン出来ず、SFTPログインは出来ることを確認してください。

rootではログイン出来ない設定にしますので、ここで設定をミスっていると修正できなくなる場合もあります。
設定は慎重に、確認は念入りに行ってください。

rootログイン不可設定

sshd_configファイルは、行の途中にrootでのSSHログインを不可にする設定があるので、そこを触ります。

「PermitRootLogin no」を追加します。

sshdを再起動してログアウトしたら、rootでのログインが出来なくなっていることを確認して、設定完了です。
以降のサーバ操作はすべてssh-userで行ってください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です