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
screen
。そのため極端な場合、クライアントはあなたがしていることをライブで見ることができます。