「ssh」タグアーカイブ

一般ユーザにホームディレクトリ以外を見せなくする。

表題があまり正確ではないので、正確に。

Linux(CentOS 6.x)ですが、sshでログインしたユーザが/を見えたりする状態って嬉しくない時があります。

そういう時に、自分のホームディレクトリ以下のフォルダーやファイル以外を見えなくしてしまおうというのが今回の説明です。

本当は、sshでrootにログイン出来なくした上で、他のユーザからsu -でrootにスイッチしたいと考えました。
その時、他のユーザにおいてホームディレクトリ以下しか見えない設定にしたかったのですが、思うように出来なさそうなので・・・諦めました。

なので、実のところ副産物に過ぎず、あまり問題も気にせず、一応出来たよ・・・ということで書きますね。

まず、前回sshでrootアカウントのログインを出来なくしました。
その続きで見ている人がいたら要注意です。
これから作成するユーザをrootの代わりに作ったユーザIDには設定しないでください。
これから作成するユーザはsu コマンドを利用してrootにスイッチすることは出来ません。

あまり利用される機会は少ないと思いますが・・・

順序を説明します。

まず、新たにユーザを作成します。

一応、フォルダーも作成されて.bashrcなんかも入れてくれています。
useraddコマンドで作成するとちょっと違った感じになっちゃいますので、必ずadduserコマンドで作成してください。

出来上がったホームディレクトを確認します。

chrootするだけなら、この時点で特に設定を変更する必要はないのですが、最終目的はsshでログインまでさせることを考えているので、ここで設定を少し変更します。

理由は、sshでログインして移動させることが出来るディレクトリはroot権限になっている必要があるようです。
更に、オーナーをrootにしてしまうと、パーミッションを変えてやらないと一般ユーザが何も出来ない状態になってしまうからです。

では先程作ったabcユーザのフォルダーに対し設定変更を行います。

ここから必要最小限のファイルをコピーします。
と言いながら、面倒なのでがっつりと(^^ゞ

これで、chroot出来る環境が整ったはずです。
確認します。

これで成功です。

CTRL+Dで一度抜けます。

ここから、今度は作成したユーザ(abc)にsshでログインします。

入れることを確認したら、これも一旦抜けます。
このままでは、cd ..とすると/homeへ移動できてしまうはずです

sshdの設定を変更します。sshd_configファイルに以下の設定を追加します。最後に追加すれば良いはずです。

sshdの設定を再読み込みします。

こんな感じになっていればOKです。

仕上げの確認です。

cd ..で上位のディレクトリへ移動しようとしても移動できていないことが判ると思います。

設定は以上なのですが・・・ここで問題です。

そうです。ファイルを作ることが出来ないんです!

入れるけど、何も作成することが出来ない状態なのです。

そこで、ファイルが作れる環境を準備します。

何度も済みませんが、また抜けてください。
root権限で作業を行う必要があります。

rootアカウントに戻ったら、以下の操作を行います。
作成するディレクトリは任意の名称で構いません。

これで、/home/abc/user_spaceでabcユーザが自由に使えるスペースが出来ました。

先程と同じようにsshでログインしても大丈夫です。

今回この資料を残したのは、chrootで以下のエラーが発生したためです。

この問題を解決する方法が他のサイトにも記載されてはいたのですが、私が調べたサイトでコピーしているフォルダーの内容などをチェックしても失敗してしまったので、それらしきフォルダーをコピーして動くようにした経緯を残したかったからです。

誰かの参考になるかな?
正直、あまり使い道が無い結果になっているのですが・・・

私の最終目的は、ここからsu コマンドでrootユーザにスイッチ出来るところまでだったのですが、それには/etc/passwdをコピーするなど、本来隠しておきたいファイルが公になってしまうことが解りました。
まあ、それでも良かったのかも知れませんが・・・取りあえず、この段階でやる気が尽きましたのでご勘弁ください。

どなたかフォローのコメントを頂ければ幸いです。

P.S.ほとんど見られていないだろうから、コメント無いよな~寂しいなぁ~(8_8)

 

 

rootのssh接続を禁止する。

CentOS 6.Xにおいて、rootでssh接続が出来なくするための設定です。

デフォルトで接続できなくなっている環境もあるかと思いますが、今回は自分で設定します。

必ず、別途のユーザでssh接続できる状態にしておかなければいけません!!

ユーザの追加などはuseraddコマンドを使うなりなんなりとw

さて、簡単です。

sshdの設定ファイルを開きます。

ファイルの中身はこんな感じ
(セキュリティの関係で、説明に必要が無い部分は省略しています。)

ついでになりますが、sshポートをデフォルト状態にしておくと外部からの攻撃の的になりやすいです。

そこで、ポート番号を別のポートに変更します。
例えば、51222とか任意のポートを指定します。
このポートで接続できることも確認しておきたいですね。

さらに23行目をコピーして以下の様に設定します。

最後にsshdのサービスで設定を再読み込みします。

敢えて、再起動(restart)はしませんでした。

理由は、reloadだと既に接続されている状態が維持されるからです。

この時点でssh接続を行っていた状態は維持されているはずです。

別途、他のssh端末を開いて上記で行った設定を元に接続を行ってみてください。(ポート番号の指定を忘れない様に)

rootへのssh接続が出来ないこと。
ポート番号が任意の指定した番号に変更になり、デフォルトの22ポートでは接続出来なくなっていることを確認してください。

これで、sshポートに対する不正アクセスは大幅に削減できるはずです。

そもそもICMP(PING)を禁止しておくべきなのですが、pingを死活監視に使いたかったので、ファイアウォールで禁止にしました。
サーバ自身はpingに応答出来る様にして、死活監視が可能な状態が欲しかったのです。

ファイアウォールが提供されていない環境では、インターネットからの不正アクセスを軽減する(禁止にはならない)ために、iptablesなどを使ってICMPを拒否することが望ましいと思います。
私の様にそれでも死活監視などの理由で残したい方は、特定のIPからのみ許可するなどの対策をご検討下さい。