Linux:リモートsysadminのセットアップ


51

Linuxシステムでのリモートサポート、トラブルシューティング、および/またはパフォーマンスチューニングを提供するという奇妙な要求を時々受けます。

大企業では、ベンダー/サプライヤーにリモートアクセスを提供するための手順が確立されていることがよくあり、それらに準拠する必要があるだけです。(良くても悪くても。)

一方、小さな会社や個人は、私を立ち上げるために何をする必要があるかを常に教えてくれるよう常に頼りにしています。通常、サーバーはインターネットに直接接続されており、既存のセキュリティ対策は、Linuxディストリビューションが何であれ、デフォルトで構成されています。

ほとんどの場合、ルートレベルのアクセスが必要になりますが、アクセスを設定する人はシステム管理者ではありません。ルートパスワードは必要ありません。また、自分のアクションが悪意のあるものではないと確信しいますが、次のような合理的な簡単な指示を与える必要があります。

  • アカウントを設定し、資格情報を安全に交換します
  • ルート(sudo)アクセスをセットアップする
  • アカウントへのアクセスを制限する
  • 監査証跡を提供する

(はい、悪意のあるアクションを非表示にする管理者アクセス権を持っていると、クライアントに常に警告しますが、監査証跡の作成に非表示にして積極的に参加するものは何もないと仮定しましょう。)

以下の手順で何を改善できますか?


私の現在の命令セット:

アカウントを設定し、資格情報を安全に交換します

パスワードハッシュを提供し、その暗号化されたパスワードでアカウントがセットアップされていることを確認します。そのため、クリアテキストパスワードを送信する必要はありません。パスワードを知っているのは私だけです。予測可能な脆弱なパスワード。

sudo useradd -p '$1$********' hbruijn

私は公開鍵SSH(クライアントごとに特定の鍵ペア)を提供し、彼らにその鍵で私のアカウントをセットアップするよう依頼します:

sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 

ルート(sudo)アクセスをセットアップする

クライアントにsudo sudoedit、お気に入りのエディターを使用して、または追加してsudoをセットアップし、以下に追加するよう依頼します/etc/sudoers

hbruijn ALL=(ALL) ALL

アカウントへのアクセスを制限する

通常、クライアントは引き続きパスワードベースのログインを許可/etc/ssh/sshd_configし、少なくともアカウントをSSHキーのみに制限するために、次の2行を追加するように依頼します。

Match user hbruijn
PasswordAuthentication no

クライアントに応じて、すべてのSSHアクセスを単一の要塞ホスト経由でルーティングして、常に単一の静的IPアドレス(たとえば192.168.1.2)を提供するか、ISPが使用するIPアドレス範囲(たとえば10.80)を提供します。 0.0 / 14)。SSHアクセスが制限されている場合、クライアントはファイアウォールホワイトリストにそれらを追加する必要がある場合があります(ただし、sshはフィルタリングされていないことが多い)。

これらのIPアドレスfrom=は、~.ssh/authorized_keysファイルへの制限として、システムへのアクセスに私のキーを使用できるホストを制限するものとして既に見ました。

監査証跡を提供する

これまで、クライアントは私にそれを求めませんでした、そして、私は私のロバをカバーするために以下を超えて特定の何もしませんでした:

私は一貫しsudoて個々のコマンドで使用し、sudo -iまたはを使用しないようにしsudo su -ます。私は使用しないようにしようsudo vim /path/to/file が、使うsudoedit代わりに。

デフォルトでは、すべての特権アクションがsyslog(および/var/log/secure)に記録されます:

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

私はほとんど作業環境のカスタマイズをあきらめましたが、実際に行う唯一のことは~/.bash_profile、bashの履歴を増やしてタイムスタンプを含めるように以下を設定することです。

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend

8
あなたはログインすることができ(事実の後に簡単に変更できます)、さらにセッションを共有することもできますscreen。そのため極端な場合、クライアントはあなたがしていることをライブで見ることができます。
スヴェン

あなたがより良い監査証跡を追加したい場合は、彼らが可能性がある場合は、リモートロギングを有効にするためにそれらを指示する必要があります
フレディ

回答:


24

頭に浮かぶのは--expiredateadduser通話に追加することだけです。
これにより、お客様はアクセスが固定日に自動的に期限切れになることを知っています。

ルートアクセス権があるため、彼はまだあなたを信頼する必要があり、期限切れフラグを削除することもできます。


15

script(1)ユーティリティを使用してセッションを記録できます。

$ script session.log
Script started, file is session.log
$ ls
file1  session.log
exit
Script done, file is session.log

その後、すべてがsession.logにあります。


リモートシステムへのsshセッションを開始する前に、それを自分のホストで実行することをお勧めしますか、それをリモートシステムのプロファイルの一部として含めますか?
HBruijn

1
どちらでもできると思います-私は一度だけ使用しましたが、ほとんどの人はあまり気にしません。
user9517はGoFundMonicaを16

7

既にSSH公開キーを使用してログインしているため、パスワードハッシュを指定しなかった場合は、状況が少し厳しくなります。代わりadduser --disabled-passworduseradd -p '!'、(同じように、私が思うに)使用するように指示します。これはPasswordAuthentication no、そのアカウントの場合と実質的に同等です。


3
Match user hbruijn \n PasswordAuthentication nosshd_configへの追加により、復号化されたパスワード(だれでもローカルユーザーが使用できる可能性があります)で誰もがリモートでログインできなくなりますがsu - hbruijn、私が知る限り、sudo目的のために有効なパスワードが必要です。ログインした後、単にパスワードをリセットする必要がありますか?
HBruijn

ああ、sudoの良い点。--disabled-password状態のアカウントにpasswdそのアカウントから実行することでパスワードを付与できるかどうかはわかりません。
-zwol

また、あなたが提供するパスワードハッシュを聞いている人を止めるものは何ですか?その部分は、公開キーがインターセプトされても問題ではないsshキーの使用を弱める弱いリンクです。
ジェームズライアン

3
クライアントがsudoersファイルに次のような行を追加することで、その弱いリンクを解決できますhbruijn ALL=(ALL) NOPASSWD: /usr/bin/passwd hbruijnか?
デザ

2

公開/秘密キーを使用する場合に、パスワードを提供する理由。

公開鍵は共有されるため、ハッシュされたパスワードではなく、秘密鍵証明書を安全に交換するために使用する必要があります。

sudo useradd --disabled-password hbruijn

公開鍵を送信するときは、電話のように2番目のチャネルで指紋を確認してください。

sudoを使用するためのパスワードはもうないので、sudoersファイルの行も次のように変更する必要があります。

hbruijn ALL=(ALL) NOPASSWD:ALL

sudoのパスワードがないことに不安があり、本当にパスワードが必要な場合は、ハッシュされたパスワードを送信したり、パスワードなしでアカウントを作成したり、公開キーを設定したり、アカウントがいったんセットアップすると、ssh経由でログインして実行passwdし、独自のパスワードを設定でき ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.