it-swarm-ja.com

共有キー.ssh / authorized_keysとSudoを連携させる方法は?

.ssh/authorized_keysを設定し、pub/privateキーを使用して新しい「ユーザー」でログインできます...また、sudoersリストに「ユーザー」を追加しました...現在の問題は、私はSudoコマンドを実行しようとします。

$ Sudo cd /root

入力したパスワードの入力を求められますが、機能しません(設定した秘密鍵のパスワードを使用しています)

また、私は使用してユーザーのパスワードを無効にしました

$ passwd -l user

何が欠けていますか?

どこかで私の最初の発言が誤解されています...

私はシステムを強化しようとしています...最終的な目標は、単純なパスワード認証ではなく、pub/privateキーを使用してログインすることです。私はauthorized_keysファイルを介してそれらすべてを設定する方法を理解しました。

さらに、ルートアカウントを介したサーバーログインを最終的に防止します。しかしその前に、2番目のユーザー(常にシステムにログインするユーザー)のためにSudoを動作させる必要があります。

この2番目のユーザーについては、 "passwd -l user ...を介してユーザーをロックしない場合、通常のパスワードログインを禁止し、pub/private keyログインのみを強制したいのですが、キーを使用しない場合でも、通常のパスワードでサーバーに入ります。

しかし、もっと重要私は、Sudoに、パスワードが無効になっているユーザーとのpub/private keyセットアップを機能させる必要があります。


編集: OK、わかったと思います(解決策):

1)/ etc/ssh/sshd_configを調整してPasswordAuthentication noを設定しました。これにより、sshパスワードのログインができなくなります(これを実行する前に、公開/秘密鍵が機能していることを確認してください)

2)sudoersリストvisudoを調整して追加しました

root      ALL=(ALL) ALL
dimas     ALL=(ALL) NOPASSWD: ALL

3)rootはパスワードを持つ唯一のユーザーアカウントです。パスワードが設定されていない2つのユーザーアカウント "dimas"と "sherry"でテストしています(パスワードは空白、passwd -d user

上記は本質的に誰もがパスワードでシステムにログインすることを防ぎます(公開/秘密鍵を設定する必要があります)。

さらに、sudoersリストのユーザーには管理機能があります。また、別のアカウントにsuすることもできます。したがって、基本的に「dimas」はSudo su sherryを実行できますが、「dimasはsu sherryを実行できません。同様に、sudoersリストにないユーザーはsu userまたはSudo su userを実行できません。

[〜#〜] note [〜#〜]上記は機能しますが、セキュリティが不十分と見なされます。 「dimas」または「sherry」ユーザーとしてコードにアクセスできるすべてのスクリプトは、Sudoを実行してrootアクセスを取得できます。設定に関係なくリモートユーザーがログインできるようにするsshのバグ、Firefoxなどでのリモートコード実行、またはユーザーとして不要なコードを実行できるようにするその他の欠陥が、rootとして実行できるようになりました。 Sudoは常にパスワードを要求する必要があります。そうしないと、他のユーザーの代わりにrootとしてログインすることもできます。

15
farinspace

sshSudoは、互いに何の関係もありません。 ssh認証方法を設定しても、Sudoに対して何も実行されません。 Sudosshパスワードを理解しません。

passwd -lは、ユーザーのアカウントをロックすることを目的としているため、ユーザーはパスワードで認証できなくなります。これは、ユーザーがパスワードなしで認証できるようにすることとは正反対です。

あなたが欲しいのは your NOPASSWD filesudoersオプションだと思います。

(PS、cdコマンドをSudoで実行する理由はありません。cdは親プロセスに伝達されないため、Sudoが終了するとすぐに、元の場所に戻ります)。

編集:アカウントのパスワードをロックし、Sudoに公開鍵/秘密鍵を認識させたいと言い続けます。 Sudoはsshキーを使用しません。 sshではありません。ユーザーが自分のパスワードでログインできないようにしたい場合、答えは sshパスワード認証を無効にする であり、アカウントをロックしないことです。次に、ユーザーがssh authorized_keysを介してログインした後にSudoに使用できるパスワードを保持できます。

10
coneslayer

やりたいことは可能ですが、pam-ssh-agent-authというPAMモジュールをコンパイルする必要があるため、ある程度の経験が必要になります。

プロセスはかなり単純です:

$ Sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3

$ ./configure --libexecdir=/lib/security --with-mantype=man

$ make
$ Sudo checkinstall

Sudo構成を編集します。

$ Sudo visudo

以下を追加します。

Defaults env_keep += SSH_AUTH_SOCK

Sudo PAM設定を変更して続行します。

$ Sudo vi /etc/pam.d/Sudo

追加(@include行のすぐ上):

**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account
18

Andre de Mirandaの答えは pam_ssh_agent_auth を使用した素晴らしい解決策を提供しますが、部品が古くなっています。特に/etc/pam.d/Sudo現在の多くのLinuxバージョンを使用する場合の手順。

Ubuntu 12.04を正確に実行している場合、私は実際にプロセスを単純化しました。PPAからpam_ssh_agent_authビルドを提供するためです ppa:cpick/pam-ssh-agent-auth

次のコマンドを実行して、パッケージをインストールできます。

Sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
Sudo apt-get install pam-ssh-agent-auth

インストール後、このPAMモジュールをSudoで使用する場合は、Sudoの設定とPAM構成を構成する必要があります。Ubuntu12.04では、次の2つのファイルを作成することで正確に行うことができます。

/etc/sudoers.d/pam-ssh-agent-auth:

Defaults    env_keep+="SSH_AUTH_SOCK"

/etc/pam.d/Sudo:

ent#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive

Chefを使用している場合、上記のプロセスは、次の2つの場所のいずれかにある私のクックブックで自動化できます。
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth

クックブックのfilesディレクトリには/etc/pam.d/Sudoおよび/etc/sudoers.d/pam-ssh-agent-auth上記のファイルはUbuntu 12.04で正確に動作し、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。

4
Chris Pick