電子書籍の厳選無料作品が豊富!

Linux(centOS)での、サーバ管理を行うことになりました。
一般ユーザの作業により、サーバに影響を与えないように制限をかけておきたいのですが、どのような方法が有意義なのか?悩んでいます。アドバイスを頂けませんでしょうか?

【やりたいこと】
 1)払いだしたアカウントで利用できるコマンドを制限したい(ls,cd,sftp,sshなどのみ)
 2)ホームディレクトリから上位ディレクトリなどへの移動を制限したい。
 3)ユーザが意識をせずに、実行したコマンドを自動強制記録して、後から管理者が参照したい。

【これまでに確認してきたこと】
 1)chrootなどがあるようですが、root権限での実行が必要と思われる。
  ログインシェルをrbashに変更することも検討。
 2)同じく、chrootで実現可能?(同じく、root権限が必要?)
  その他、FTPソフト毎の設定方法はあるようだが...。
 3)scriptコマンドやttyrecなどがあるようでしたが、どれがよいのか?実装方法(.bash_profileに記載だけで良い?)がわからない。

いろいろ、検索しておりますが、どのような方法があるのか?どの方法が良いのか?アドバイスを頂ければと思います。よろしくお願いします。

A 回答 (2件)

コマンドも実行する環境ですか…。

大変ハードルが高い状況ですね…

libpam-chrootの件は、申し訳ございません。思ったより情報すくなかったですね。
ですが、OpenSSHのバージョンが5.6との事ですので、それであれば、sshd_configの
ChrootDirectoryを用いられた方が良いと思います。

それと、ログ出力の件ですが…
scriptコマンド自体もchrootの制限下にありますし、かつscriptは当該ユーザ権限で
動作しており、当該ユーザ権限でファイルへログ出力を行っております。
この為、当該ユーザでのログ改竄や削除が出来てしまうので…


> killで終了させることや、.bash_profileの設定を削除上書き、ログイン時に別のシェ
> ルを起動という手段については、chrootさせて、suコマンドなどを制限しても回避
> できないものでしょうか?

こちらは、.bash_profileのownerをrootにし、rbashで実行コマンドを制限しkillコマンド
などを提供しないという意図だと思います。
自身所有のディレクトリ(ホームディレクトリ)直下に、root権限でファイルを生成したと
しても、カレントディレクトリのownerが自身である為、ファイルを削除することが出来
るんです。
ファイルを削除した上で、都合よくPATHを弄った.bash_profileをアップロードし、killコ
マンドをuploadすれば…

rbash自体は、sshd_configの「ForceCommand」で強制することは出来ますが、上記
の.bash_profileを削除できてしまうという問題と、sftpとscpが出来なくなってしまう問
題があります。


> 確かに、root権限を奪取された場合は、どのケースにおいてもNGとは思いますが
> ...。
これは気にしないで下さい。
単にリモートからroot権限奪取を防ぐのより、ローカルからroot権限奪取を防ぐ方が
必要となる作業量が多くなるという一般論です。
運用が大変だけど本当にやられるのかな?と半信半疑なところが私の方にありまし
たので…

あれも駄目、これも駄目と否定的な回答になって申し訳ございません。
何としても制限しなければならないという意気込みが見えましたので、穴がないよう
に可能な限り協力しようと思っただけですので…


やはりSELinuxが必要だと思います。
私も勉強していたのですが、より優先度の高いものが出てきた為に、途中で勉強が
止まっています。
ですので、情けないのですが、SELinuxについては、具体的なアドバイスができません。
申し訳ありません。
    • good
    • 0
この回答へのお礼

いろいろ熱心なコメントありがとうございます。
自分でもSELinuxについて、勉強したみたいと思います。

ログ出力については、ハードルが高そうですが、ttyrecなど他の方法についても、もう少し考えてみたいと思います。
例えば、sshでログインする際に、読み込まれる.bash_profileなどにscreen等のコマンドを仕掛けておけば、chrootされる前のフォルダ構成の任意のフォルダに格納できないでしょうか?(思いつきレベルのため、すいません。いろいろ試してみます)

最悪の場合は、ログイン,ログアウト情報のみを管理しておいて、ユーザにコマンドのログを取っておいてもらい、それを定期的に回収してチェックするなどの対応も検討したいと思います。(どうしても簡単に改竄できるというリスクやログの取得漏れなどの懸念が残りますが...)

できる限り、安全にかつ簡易にサーバ運用ができる方法がないかを引き続き検討していきたいと思います。

お礼日時:2010/12/18 18:01

目的が、「一般ユーザにSSH経由でファイルのUpload/Downloadのみに限定したい。

」であれば、比較的簡単なのですが…


1.に関しては、一般ユーザを「sftp」にのみに限定することで余計なコマンドを実行される懸念がなくなります
2.に関しては、OpenSSHのバージョンによって手段が異なってきます。
   ver4.9未満 libpam_chrootで、chrootを実施 (sshd_configをUsePrivilegeSeparation noにする
                              必要がある為、セキュリティ的には若干低下する)
           または、scponlycを用いる
   ver4.9以降 OpenSSHそのものがchrootの機能を持っている
           または、scponlycを用いる

libpam_chrootやscponlyは、情報が豊富にあると思いますので割愛します。不明点があれば再度レスいたします。

sshd_configに以下の様に記述してください
Match group sftponly
   ChrootDirectory /home/%u
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp
制限させたい一般ユーザを「sftponly」グループに追加しておいてください。これでchroot環境でsftpのみに限定できるはずです
libpam_chrootやscponlycでsftpを用いる場合は、ChrootDirectoryの設定は不要です。



で、ファイル転送ではなく、実際に何らかのコマンドを実行する環境が必要な場合ですが…
chrootは、libpam_chrootやChrootDirectoryで何とかできます。

ですが、バイナリやライブラリ、必要最低限の/etc以下のファイルなどを、chroot環境以下に設置してあげる必要があります。
makejail等のコマンドで、必要なバイナリとライブラリを整えることができます。
# ただし、コピーしたバイナリやライブラリにsecurity/bug fixが発生するたびにmakejailしてあげる
# 必要があります
# chrootは、root権限を奪取された場合にchrootを突破できてしまうので、securityまわりには
# 気を配っておく必要があるので…。
# ユーザ数が多い、security/bug fixが頻繁に発生すると環境を維持することだけで結構な作業
# 量になります。


ログ出力ですが、これが一番厄介です。
scriptやttyrecは、killで終了させることもできますし、.bash_profileの設定を削除上書き、ログイン時に別のシェルを起動という手段で逃げられてしまいます。
SELinux等を用いてログを出力させるのが一番確実です。

ただ、SELinuxを用いるのであれば、そもそも1)も2)もSELinuxで解決できてしまいますが…
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

1.については、「sftp」にのみに限定することができません。確かに、それで制限できると良いのかもしれませんが...。

2.について、OpenSSHのバージョンは、現在の最新バージョンである5.6を採用したいと考えています。

chrootは、導入やメンテナンスを考えると大変ですが、コマンドの制限やディレクトリ制限をかけられる点については要件を満たしているように思えました。他に良い策があれば検討したいと思いますが。

libpam_chrootについては、どのようなものなのか?をもう少し調べてみたいと思います。

3.のログ出力ですが、
killで終了させることや、.bash_profileの設定を削除上書き、ログイン時に別のシェルを起動という手段については、chrootさせて、suコマンドなどを制限しても回避できないものでしょうか?確かに、root権限を奪取された場合は、どのケースにおいてもNGとは思いますが...。


SELinuxがどのようなものなのかが分からないため(Linuxプロダクト???オプション機能???)、もう少し調べてみます。

教えて頂いた設定についてもう少し調べてみたいと思います。不明点があれば、追加で質問させてください。
よろしくお願いします。

お礼日時:2010/12/17 07:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!