• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linuxでのコマンド制限とログ取得について)

Linuxでのコマンド制限とログ取得について

このQ&Aのポイント
  • Linux(centOS)での、サーバ管理を行うことになりました。一般ユーザの作業により、サーバに影響を与えないように制限をかけておきたいのですが、どのような方法が有意義なのか?悩んでいます。
  • 1)払いだしたアカウントで利用できるコマンドを制限したい(ls,cd,sftp,sshなどのみ) 2)ホームディレクトリから上位ディレクトリなどへの移動を制限したい。 3)ユーザが意識をせずに、実行したコマンドを自動強制記録して、後から管理者が参照したい。
  • chrootやrbash、chrootによる制限、FTPソフトの設定、scriptコマンドやttyrecの利用など、いくつかの方法を調査していますが、どの方法が効果的か迷っています。アドバイスをいただけると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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については、具体的なアドバイスができません。 申し訳ありません。

sweet-panda
質問者

お礼

いろいろ熱心なコメントありがとうございます。 自分でもSELinuxについて、勉強したみたいと思います。 ログ出力については、ハードルが高そうですが、ttyrecなど他の方法についても、もう少し考えてみたいと思います。 例えば、sshでログインする際に、読み込まれる.bash_profileなどにscreen等のコマンドを仕掛けておけば、chrootされる前のフォルダ構成の任意のフォルダに格納できないでしょうか?(思いつきレベルのため、すいません。いろいろ試してみます) 最悪の場合は、ログイン,ログアウト情報のみを管理しておいて、ユーザにコマンドのログを取っておいてもらい、それを定期的に回収してチェックするなどの対応も検討したいと思います。(どうしても簡単に改竄できるというリスクやログの取得漏れなどの懸念が残りますが...) できる限り、安全にかつ簡易にサーバ運用ができる方法がないかを引き続き検討していきたいと思います。

その他の回答 (1)

回答No.1

目的が、「一般ユーザに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で解決できてしまいますが…

sweet-panda
質問者

お礼

早速のご回答ありがとうございます。 1.については、「sftp」にのみに限定することができません。確かに、それで制限できると良いのかもしれませんが...。 2.について、OpenSSHのバージョンは、現在の最新バージョンである5.6を採用したいと考えています。 chrootは、導入やメンテナンスを考えると大変ですが、コマンドの制限やディレクトリ制限をかけられる点については要件を満たしているように思えました。他に良い策があれば検討したいと思いますが。 libpam_chrootについては、どのようなものなのか?をもう少し調べてみたいと思います。 3.のログ出力ですが、 killで終了させることや、.bash_profileの設定を削除上書き、ログイン時に別のシェルを起動という手段については、chrootさせて、suコマンドなどを制限しても回避できないものでしょうか?確かに、root権限を奪取された場合は、どのケースにおいてもNGとは思いますが...。 SELinuxがどのようなものなのかが分からないため(Linuxプロダクト???オプション機能???)、もう少し調べてみます。 教えて頂いた設定についてもう少し調べてみたいと思います。不明点があれば、追加で質問させてください。 よろしくお願いします。

関連するQ&A