web-dev-qa-db-ja.com

1つを除くすべてのIP /ホスト名からのルートsshを制限する

1つのIPアドレスを除くすべてのIPアドレスからのrootsshログインを制限したいと思います。

これを/etc/pam.d/sshdに追加する必要があるという印象を受けました。

account required pam_access.so

これを/etc/security/access.confに追加します。

-:root:ALL EXCEPT IPADDRESS

しかし、それはうまくいっていないようです。

4
Chad P

/ etc/ssh/sshd_config内

# Disable Root login
PermitRootLogin no
#
# [ . . . ]
#
# At the end of the file, add:
#
# Allow Root Login via Key from Admin Bastion
Match Address 10.9.8.7
        PermitRootLogin without-password
6
dannyman

なぜroot sshアクセスを許可するのですか?マーフィーの法則では、ルートアクセスが必要になると、承認されたIPアドレスから離れることになります。

これは私の意見ですが、これに対するより良いアプローチは、通常のユーザーとしてログインしてから、rootにsuすることです。 rootにアクセスするには、ユーザーパスワードとrootパスワードの両方が必要になります。そのため、通常のユーザーアカウントは、実行しているLinuxディストリビューションに応じて、adminまたはwheelグループに属している必要があります。

編集:さらに改善されたセキュリティのために、ssh接続の事前共有キー認証のみを許可します。ただし、必要な秘密鍵を備えたマシンを使用していない場合は、これは両刃の剣である可能性があります。

4
3dinfluence

これはRHEL5 +であり、この問題が発生していると思います。同じ手順がRHEL 4でも機能します。RHEL5でこれを機能させる秘訣は、アカウントが必要なpam_access.soを追加することです。

2行目または3行目の/etc/pam.d/sshdに移動します。一番下に追加するだけでは機能しません。

結果の/etc/pam.d/sshdは次のようになります。

#cat /etc/pam.d/sshd

#%PAM-1.0

auth include system-auth

アカウントに必要なpam_nologin.so

アカウントが必要ですpam_access.so

アカウントにはsystem-authが含まれます

パスワードにはsystem-authが含まれます

セッションオプションのpam_keyinit.so強制的に取り消す

セッションにはsystem-authが含まれます

セッションにはpam_loginuid.soが必要

1
Tatyaso

バックアップの作成などには厳密なルートアクセスが必要になる場合がありますが、非常に危険な場合があります。幸いなことに、sshキーとauthorized_keysファイルを使用することで、直接ルートアクセスをかなり保護できます。

まず、sshd_configでrootログインを許可しますが、事前定義されたコマンドのセットのみを実行できるようにします。PermitRootLogin forced-commands-onlyを/ etc/ssh/sshd_configまたはsshd構成が保存されている場所に配置します。これにより、rootのパスワード認証が無効になり、sshキーの使用が強制され、それでも定義したコマンドのみが許可されます。

次に、この直接ルートアクセスが必要なクライアントにログインし、新しいsshキーssh-keygen -t rsaを作成します。スクリプトで必要な場合は、そのキーをパスワードなしにします。

次に、この新しく作成されたsshキーをssh-copy-id -i ~/.ssh/id_rsa.pub root@yourserver(rootログインがまだ有効になっている場合)を使用してサーバーにコピーします。そうでない場合は、内容〜/ .ssh /id_rsa.pubを/root/.ssh/authorized_keysファイルにコピーして貼り付けます。

ここで、クライアントが/root/bin/startup_skynet.shをrootとしてsshを介して実行する必要があると仮定します。この時点で、既存のauthorized_keysファイルは次のようになります。

ssh-rsa FASBFAFfasdföjasfABGVEAGUPEGDJfsadnö2314235dfbösadköjsdfösdklf==

修正して

no-pty,no-X11-forwarding,no-agent-forwarding,no-port-forwarding,command="/root/bin/startup_skynet.sh" ssh-rsa FASBFAFfasdföjasfABGVEAGUPEGDJfsadnö2314235dfbösadköjsdfösdklf==

そしてそれを保存します。

次に、クライアントからssh root@myserver lsのようなものを実行してみます-これは失敗するはずです。次に、ssh root@myserver /root/bin/startup_skynet.shを実行してください-これでうまくいくはずです。

この方法では、直接rootログインがはるかに安全になります。セキュリティは階層化されたものであり、単一の機能が提供するものではないため、さらに多くのことができます。接続する必要のあるユーザーのサブセットが限られている場合は、sshd_configのAllowUsersパラメーターを使用して、事前定義されたIPアドレスのセットからの接続を許可することもできます。たとえば、AllowUsers [email protected] [email protected] johndoeは192.168からのルートを許可します。 .1.2と192.168.1.3、そしてどこからでもjohndoe。

1

Sshd_configファイル(通常は/ etc/ssh /にあります)のAllowUsersオプションを探しています。ウィットするには:

AllowUsers [email protected]

RootのみがIP 10.200.0.1からログインできるようにします-デフォルト設定では、すべてのホストのすべてのユーザーが許可されます...

私が見ることができる1つの欠点は、あなたがdo useAllowUsersの場合、-allアクセスが必要なユーザー-これは、十分な数のユーザーリスト(たとえば、LDAPまたは他のディレクトリからプルされている)で管理するのは間違いなく面倒です。

オプションdoesは、manページごとにワイルドカードパターンの使用を許可するため、これはある程度回避できる可能性があります。

このキーワードの後に​​は、スペースで区切ったユーザー名パターンのリストを続けることができます。指定した場合、ログインはパターンの1つに一致するユーザー名に対してのみ許可されます。 '*'および '?'パターンでワイルドカードとして使用できます。ユーザー名のみが有効です。数値のユーザーIDは認識されません。デフォルトでは、ログインはすべてのユーザーに許可されています。パターンの形式がUSER @ Hostの場合、USERとHostが別々にチェックされ、特定のホストからの特定のユーザーへのログインが制限されます。

それでも、YMMVはかなり制限される可能性があります。お役に立てれば。

0
Zayne S Halsall

sshd_configMatch機能を使用し、IP(またはサブネット)と照合することをお勧めします。

これにより、許可される機能を指定することもできます。例:「内部」サブネットセットのユーザーのみがPasswordAuthenticationを使用できると言うことができます(また、AllowRootはそれを必要とする単一/狭い範囲のIPからのみ取得できます)。

また、公開鍵による認証はPAMを経由しないため、公開鍵認証を使用する場合、pam_accessは機能しません。

0
Cameron Kerr

試しましたか :

-: ALL EXCEPT root:your_ip_address

0
Maxwell

2行試しましたか:

+:root:<your_ip>
-:root:ALL
0
Kevin M