ローカルネットワークからのみsshにrootユーザーを許可するにはどうすればよいですか?


38

CentOS 6.5マシンにGoogle-Authenticatorをインストールし、特定のユーザーがOTPを提供するように構成しました。

編集中に、デフォルトでコメント化され/etc/ssh/sshd_configたディレクティブ " PermitRootLogin" を見ました。

PermitRootLogin no」を設定したいのですが、ローカルネットワークからのみrootとしてマシンにsshできます。

それは可能ですか?


5
これを絶対にしないでください。ユーザーとしてSSHでログインし、sudoを使用して権限を高めます。こうすることで、紙の痕跡が残り、どのアカウントが侵害されたかを知ることができます。
SnakeDoc

3
@SnakeDoc:それは考えの一つですが、それは明確ではなく、私は反対を主張します。sudoは巨大で複雑な攻撃対象領域であり、私がこれまでにインストールしたかったものではありません。SSH pubkey authは、はるかに小さな攻撃対象です。どちらもログに記録できますが、ユーザー(root)がログを編集または削除できる場合、ログはあまり役に立ちません。これは、外部追加専用ストレージにログ記録しない限り常にそうです。
R ..

1
@R ..最小限の特権の原則を使用してsudoerを正しくセットアップした場合、説明したこれらの問題はほとんど問題ではありません。どのユーザーsudo - suもrootでsshを実行したり、ユーザーが必要としないものを実行したりすることはできません(sudoersでは、コマンドにホワイトリストを使用します)。ルートが必要な場合は、物理的にコンソールにいる必要があります-つまり。SSH経由のルートは許可されません...キーかどうか。
SnakeDoc

1
@SnakeDoc:あなたは間違っています。須藤は、独自の複雑な攻撃面の両方を有し、そしてはexecve横切っ受け継いだすべての状態の形で、SUIDバイナリであることに固有の基本的複雑な攻撃面。場合によっては、suidプログラム自体(suid)のバグも必要ありません。動的リンカー(CVE-2010-3856など)などの基盤インフラストラクチャのバグで十分な場合があります。
R ..

1
@R ..キーが漏洩したかどうかを常に知っていると仮定します。これは仮定の1つです。さらに、攻撃者は一度ルート権限を取得します。特権のないアカウントを介してそれらを送信し、ルートに昇格させる必要があります。このようにして、漏らさなければならない鍵、破るための鍵パスフレーズ、そして破るための通常のユーザーアカウントパスワードがあります。そして、攻撃者がこれらすべてを乗り越えた場合、このユーザーは非常に限られた能力を持つsudoersの下でセットアップされているため、彼らは何もできません。ssh ...期間での直接ルートログインを許可しないでください。それは良い衛生状態です
-SnakeDoc

回答:


54

構成Matchパラメーターを使用します/etc/ssh/sshd_config

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

見る man sshd_config


なぜ私はそれを考えなかったのですか?ありがとう仲間
イタイガノ

8
で認証キーのソースを制限することもできます~root/.ssh/authorized_keys。キーの前にを付けますfrom="192.168.0.0/24 "
BillThor

9
IPv6リンクローカルアドレスも許可するように変更します。IPv6でリンクローカルアドレスが機能する方法により、誤って設定されたネットワークに対して非常に堅牢になります。つまり、ネットワークの設定ミスを修正するためにsshを使用する必要がある場合、IPv6リンクローカルアドレスを使用することが唯一の選択肢である可能性があります。
カスペルド

参考までに、さらにAllowUserディレクティブを使用する場合は、追加で(そして直感に反して)追加で行う必要がありますAllowUser root
Robert Riedl

14

このMatch address方法については既に説明しましたが、システムへのログインを許可されているユーザー(またはグループ)を制限することもできます。たとえば、itai(どこからでも)root特定のネットワークから)ユーザーへのログインを制限するには、次を使用します。

AllowUsers itai root@192.168.0.*

これにより、他のすべてのユーザー(などapache)がSSH経由でログインできなくなります。

sshd_config(5)マニュアルのAllowUsersキーワードも参照してください。


4
私は好むAllowGroupsと特定のグループにSSHを使ってログインすることができるはずすべてのユーザーを追加します。それは好みの問題だと思いますが、それはsshd_configの編集が少ないように思えます(これは、混乱して全員を締め出すリスクが少ないことを意味します)。
CVn

1
@MichaelKjörlingまた、AllowGroupsは、チームが拡大または縮小する場合、sshd_configの編集権限が不要であることを意味します。これにより、より多くの管理職やインターンがそれを行うことさえ可能になります。
Nzall

良い点は、インターンがグループを誤ってクリアしてしまった場合に備えてAllowUsers itai root@192.168.0.*、オプションを組み合わせAllowGroups ssh-usersてロックアウトを誤って発生させないことに注意してください:)
Lekensteyn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.