GNU/Linux >> Linux の 問題 >  >> Linux

LShell(制限付きシェル)を使用してユーザーのSSHアクセスを制限する方法

LShellまたはLimitedShellは、特定のコマンドとディレクトリのセットに対してユーザーを制限するためにPythonで記述されています。アクセスが制限されたユーザー環境を作成できます。また、SSHアクセスを介してコマンドを無効にすることもできます。

限定シェルのインストール

次のコマンドを使用して、DebianベースのシステムにLShellパッケージをインストールします。その他のオペレーティングシステムの場合は、ディストリビューション用のlshellのパッケージをGoogleで検索する必要があります。

$ sudo apt-get install lshell

ユーザーをLShellに切り替えます

次に、必要なユーザーのデフォルトシェルとしてLShellを設定します。たとえば、ユーザーsarahのシェルを変更します。

$ sudo chsh sarah

Changing the login shell for sarah
Enter the new value, or press ENTER for the default
	Login Shell [/bin/lshell]: /usr/bin/lshell 

次のように、ユーザーアカウントの作成時にユーザーのデフォルトシェルとしてlshellを設定することもできます。

$ sudo adduser --shell /usr/bin/lshell raj

LShellの構成

次に、lshellの構成から始めます。 lshell構成ファイル/etc/lshell.confを編集します 。構成ファイルには4つの基本的なセクションがあります。

  • <オレンジ>[グローバル]: このセクションでは、グローバルに適用される設定を定義します。たとえば、ログ。
  • <オレンジ>[デフォルト]: このセクションでは、すべてのユーザーとグループに適用されるデフォルト値を設定します。このセクションの設定は、ユーザーおよびグループ固有の設定で上書きできます。
  • <オレンジ>[ユーザー名]: このセクションでは、ユーザー固有の設定を指定します。このセクション設定はユーザーにのみ適用されます
  • <オレンジ>[grp:GROUPNAME]: このセクションでは、グループ固有の設定を指定します。このセクション設定は、グループのすべてのユーザーに適用されます

[デフォルト] プロファイルは、lshellを使用するすべてのユーザーに適用されます。 [ユーザー名]を作成できます セクションまたはグループ[grp:groupname] ユーザーとグループ固有の設定をカスタマイズするセクション。

優先順位はユーザーです>>グループ>>デフォルト 。ユーザーセクションの優先度が最も高く、デフォルトの優先度が最も低くなります。

[global]
logpath         : /var/log/lshell/
loglevel        : 2

[default]
allowed         : ['ls','pwd','cd','cat','cp']
forbidden       : [';', '&', '|','`','>','<', '$(', '${']
sudo_commands   : ['ls', 'more']
warning_counter : 2
aliases         : {'ll':'ls -l', 'vim':'rvim'}
prompt          : "%[email protected]%h"
timer           : 0
path            : ['/home', '/usr']
env_path        : ':/usr/bin/usr/local/bin'
env_vars        : {'foo':1, 'bar':'helloworld'}
scp             : 1 # or 0
sftp            : 1 # or 0
overssh         : ['rsync','ls']
strict          : 0
history_file    : "/home/%u/.lshell_history"

[grp:wheel]
warning_counter : 5
overssh         : - ['ls']

[raj]
allowed         : 'all' - ['su','rm','mv']
path            : ['/etc', '/usr'] - ['/usr/local']
home_path       : '/home/raj'

[sarah]
allowed         : + ['ping'] - ['ls']
path            : - ['/usr/local']
strict          : 1
scpforce        : '/home/sarah/uploads/'

たとえば、ユーザー「rja」とユーザー「sarah」はどちらも「wheel」UNIXグループに属しています。
グループホイール:

  • ホイールグループのユーザーの警告カウンターは5に設定されています
  • ホイールグループのユーザーは「ls」コマンドを使用できません。

ユーザーraj:

  • /etcおよび/varにはアクセスできますが、/ usr/localにはアクセスできません
  • 彼のPATHexecptコマンドのすべてのコマンドにアクセスできます– su、rm、vm
  • 警告カウンターが5に設定されています[デフォルト]
  • ホームパスが「/home/raj」に設定されています

ユーザーサラ:

  • /homeと/usrにはアクセスできますが、/ usr/localにはアクセスできません
  • デフォルトのコマンド「ping」は許可されていますが、「ls」は許可されていません
  • strictnessは1に設定されています(不明なコマンドを入力することはできません)
オプション名 説明
logpath ログディレクトリ(デフォルトは/ var / log / lshell /)
ログレベル ログレベルを0、1、2、3、または4に設​​定します(0:ログなし、1:冗長性が最も少ない、4:すべてのコマンドをログに記録する)
logfilename ログファイル名を設定します(デフォルトは%u、つまりusername.logです)
許可 許可されたコマンドのリスト、またはユーザーのPATH内のすべてのコマンドを許可するための「すべて」
禁止 禁止されている文字またはコマンドのリスト— lshellをエスケープできるため、vimを拒否します
sudo_commands sudo(8)で使用できるコマンドのリスト
warning_counter ユーザーがlshellを終了する前に禁止値を入力したときの警告の数。無効にするには、-1に設定します。
エイリアス コマンドエイリアスリスト(bashのエイリアスディレクティブに類似)
イントロ 印刷する紹介テキスト(lshellを入力する場合)
プロンプト %uまたは%h(デフォルト:ユーザー名)を使用してpromtを構成します
prompt_short ソートプロンプトの現在のディレクトリ更新を設定します(デフォルト:0)
タイマー セッションタイマーの秒単位の値
パス ユーザーを「地理的に」制限するパスのリスト
home_path ユーザーのホームフォルダを設定する
env_path ユーザーの環境変数$PATHを設定します
allowed_cmd_path パスのリスト。これらのパス内のすべての実行可能ファイルが許可されます
env_vars 環境変数を追加する
scp scpの使用を許可または禁止します(1または0に設定)
scp_upload scpのアップロードを禁止する
scp_download scpのダウンロードを禁止する
sftp sftp(1または0に設定)の使用を禁止することを許可する
overssh ssh上で実行できるコマンドのリスト
厳密な ログの厳密さ。不明なコマンドの場合は1が禁止され、0が不明と見なされます
scpforce scpを介して特定のディレクトリに送信されるファイルを強制する
history_size 履歴ファイルの最大サイズ
history_file 履歴ファイル名を設定します(デフォルトは/home/%u/.lhistory)
login_script ユーザーログイン時に実行するスクリプトを定義する

Linux
  1. SSH ユーザーが SSH トンネリングのみを許可するように制限するには?

  2. ssh トンネリングのみのアクセス

  3. SSH シェル アクセスを有効にしますが、SFTP アクセスは無効にします

  1. Linux – LinuxでIptablesを使用して、LAN上の特定のユーザーのインターネットアクセスを制限する方法は?

  2. Sshアクセスで新しいユーザーを作成する方法は?

  3. Ubuntu でユーザーに ssh アクセスを許可する方法

  1. ログイン後に SSH ユーザーを定義済みの一連のコマンドに制限する方法は?

  2. すべてのファイルへの読み取り専用アクセス権を持つユーザーを作成するにはどうすればよいですか? (つまり、書き込み権限のないルート)

  3. 別のユーザーとして ssh する方法