彼らは、中古の家や車を買うことは、他の誰かの問題を買うことだと言っています。壁の内側またはボンネットの下に隠れているダクトテープの修理は何ですか?メンテナンス履歴がわからない場合は、予期しない事態を回避するために調査する必要があります。
不正なサーバー、会社を辞める管理者、買収や合併など、システム管理者の旅のある時点で、構築していないが突然責任を負うサーバーを継承します。この記事では、新しいシステムの保護と習熟を開始するためのいくつかの領域に焦点を当てます。トリアージアプローチを採用することは出発点にすぎません。セキュリティは、システム管理の継続的なライフサイクルの一部です。
このシステムは、引き続き利用可能である必要があるアプリケーションまたはサービスをホストしていることに注意してください。会社で実施されている必要な変更管理プロセスを使用します。また、会社のセキュリティポリシーと、適切な設定のためにそれらを参照できる場所をよく理解してください。
常に適切なバックアップ計画を立ててください…そして回復可能なバックアップを!
システムが定期的にバックアップされ、バックアップが回復可能であることを確認して、レビューを開始します。復元が必要になるまで待って、それが悪いことを確認しないでください。バックアップチェックには、リモートファイルシステムもどこかにバックアップされていることの確認を含める必要があります。
一部のアプリケーションとデータベースでは、適切なバックアップを取得するために特別なプロセスまたはエージェントが必要になるため、これらの追加のバックアップが適切に実行されていることを確認する良い機会です。リカバリ後の機能についてアプリケーションをテストすることを含む定期的なリカバリテストを実施することで、バックアップに関するギャップや問題を特定します。
続行する前に、1回限りのバックアップを取ることもできます。完全なシステムの復元は必要ない場合がありますが、調整がひどく間違っている場合、このバックアップはフォールバックするための動作状態を提供します。変更管理を使用し、可能な回復を支援する別の方法として作業を文書化します。
次のステップには、システムにアクセスできるユーザーとその認証方法の確認が含まれます。 sudo
などによる昇格された特権 、またチェックする必要があります。パスワードの有効期限や複雑さのルールなどの会社のセキュリティポリシーを理解して、それらが実施されていることを確認します。このナレッジベースの記事では、パスワードポリシーを構成する方法の詳細について説明します。
注: システムがIDM、AD、LDAPなどのIDソースを使用しているかどうかを必ず確認してください。逆に、システムが外部を使用している場合でも、ローカルアカウントを確認する必要があります。
検討する必要のある問題の具体例とその対処方法を見てみましょう。
このシステムは継承されているため、前の管理者がまだアカウントを必要としているかどうかを検討してください。そうでない場合は、アカウントを削除しないでください。代わりにロックしてください。そうすることで、アカウント情報が保持され、UIDの不注意な再利用を防ぐことができます。 usermod
コマンドを使用してアカウントをロックできます:
$ sudo user mod -L <username>
sudoersを確認して、両方のsudoers
を含めます ファイル(/etc/sudoers
)およびインクルードディレクトリ(/etc/sudoers.d
)。特にALL
を含む割り当てがないか確認してください 。この割り当てには通常、グループwheel
が含まれます 。グループからユーザーを削除するには、groupmems
を使用します このようなコマンド:
$ sudo groupmems -g wheel -d <username>
次のように、任意のユーザーに対してsudoで許可されているコマンドを一覧表示することもできます。
$ sudo -l -U <username>
複数のユーザーが共有するアカウントがある場合は、この引き継ぎの一環としてパスワードの変更を強制することを検討してください。共有アカウントへのより良いアプローチは、ファイルのアクセス許可にグループとACLを活用することです。
ベストプラクティスとして、サービスアカウントにログインアクセスを許可しないでください。これらのアカウントは通常、ロックされているかパスワードがなく、/usr/sbin/nologin
のようなシェルを持っています 。サービスアカウントにインタラクティブシェルが必要な場合は、管理者にsudo su <accountname>
を付与することを検討してください 直接ログインの代わりに。
アカウントを確認するときに役立つその他のコマンドは、chage
です。 およびlast
。 chage
コマンドは、アカウントの有効期限設定を表示および調整するためのオプションを提供します。 last
コマンドは最近のログインに関する情報を表示します。
アカウントの有効期限情報を表示するには:
$ sudo chage -l <username>
アカウントの最後の5つのログインを表示するには:
$ last <username> -5
実行中のサービスとポートを確認すると、不要で無効にできるものを特定するのに役立ちます。これらの余分なサービスを停止すると、攻撃ベクトルとしても削除されます。
何がリッスンしているかを示す簡単な方法の1つは、ss
を使用することです。 指図。この例では、オプションを使用してTCPとUDPをリッスンしているソケットを表示し、プロセスの詳細も含めています。
$ sudo ss -tulnp
サンプルWebサーバーでこのコマンドを実行すると、次のように表示されます。
この出力は、httpd
があることを示しています ポートをリッスンするプロセス80
、443
、8080
、および8443
。その他のリスニングプロセスには、mariadb
が含まれます (mysqld
)ポート3306
、xvnc
ポート5901
、およびvsftpd
ポート21
。これらの最後の3つのプロセスは、いくつかの懸念を引き起こす可能性があります。
アプリやシステムが機能するために必要のないものはすべて無効にする必要があります。 PIDをsystemd
までさかのぼる必要がある場合 サービス、systemctl status
を実行します :
$ systemctl status <PID>
残りのサービスの構成を調査します。一部のアプリケーションは、ACLをサポートして別の保護レイヤーを追加する場合があります。マルチホームシステムでは、サービスが1つのネットワークセグメントでのみ必要かどうかを確認します。 Local Address:Port
列には、サービスが特定のIPでリッスンしているか、すべてのネットワークでリッスンしているかが表示されます(*
、0.0.0.0
、または::
。
ポートとサービスを保護するためにできるその他のことを見てみましょう。
nmap
などのツールを使用してポートをスキャンする 別のシステムから到達可能なポートを示します。このツールを使用して、ファイアウォールが期待どおりに機能していることを検証することもできます。 nmap
にはいくつかのオプションがあります 、ただし、すばやく簡単にスキャンするには、ホスト名またはIPアドレスを指定するだけです。
$ nmap <host-to-scan>
すべてのサービスにアクティブなネットワークリスナーがあるわけではないため、サービスにアクセスして、実行中の必要なものを確認してください。 --state
を使用して、実行中のサービスのリストを取得できます systemctl
のオプション 、このように:
$ systemctl --state=running -t s
systemctl
を使用すると、サービスの停止と無効化が簡単になります。 :
$ sudo systemctl stop <service name>
$ sudo systemctl disable <service name>
また、失敗してメンテナンスが必要なサービスがないか確認してください。
$ systemctl --state=failed
または、サービスがまったく必要ない場合は、systemctl disable
で無効にします 。
SELinux
SELinuxを有効にして、強制するように設定する必要があります。この状態は、sestatus
を使用して確認できます :
$ sestatus -v
必要に応じて、次のコマンドを使用してSELinuxをenforcingに変更できます。
$ sudo setenforce Enforcing
/etc/selinux/config
に移動して、変更を永続的に維持します SELINUX=disable
のいずれかを探す またはSELINUX=permissive
、次に行を次のように変更します:
SELINUX=enforcing
SELinuxのトラブルシューティングはこのガイドを超えていますが、最初の参考資料として、このナレッジベースの記事を参照してください。
システムの保守と保護には、更新が含まれます。継承されたサーバーの場合、システムがサブスクライブされ、更新を受信するように構成されていることを確認することから始めます。 Red Hat Enterprise Linux(RHEL)では、次のコマンドを使用して、サブスクリプション管理サービスに関する情報を表示します。
$ sudo subscription-manager config --list
baseurl
[rhsm
にリストされています ]セクションは、このシステムがサブスクライブしているものに関する情報を提供します。 cdn.redhat.com
の場合 がリストされている場合、システムはRed Hat ContentDeliveryNetworkに直接サブスクライブされています。
この例は、RedHatに直接サブスクライブされているシステムを示しています。 baseurl
の場合 はサテライトサーバーです。同期されたリポジトリをチェックして、同期されたコンテンツが最新であることを確認してください。
次のコマンドを使用して、システムで有効になっているリポジトリを確認します。
$ yum repolist --all
この出力には、構成されているリポジトリーとその状況が表示されます。リポジトリが無効になっている場合、システムの更新時にパッチがチェックされません。
注: RHEL 8、CentOS 8、Fedora 22以降、yum
dnf
に置き換えられました 。 yum
オプションはすべてdnf
のオプションとほぼ同じです 、およびyum
それ自体は、dnf
への単なるシンボリックリンクです。 。
yum check-update
を実行しています 更新可能なパッケージとバージョンが一覧表示されます。ベストプラクティスは、利用可能なすべてのパッチを適用しますが、セキュリティ関連の修正のみが必要な場合もあります。 --security
を使用してこれを行うことができます オプション。
このオプションは、check-update
と組み合わせることができます セキュリティの脆弱性を軽減するパッチのリストを返しますが、それ以外はスキップします。 update
に含めることもできます コマンド。
$ yum check-update
--security
を追加します この出力をセキュリティ関連の更新に制限するオプション。
Red Hat Enterprise Linuxシステムの場合、RedHatSatelliteまたはカスタマーポータルから各アップデートの重要度を確認できます。各セキュリティエラッタには、潜在的なリスクに基づいた評価(クリティカル、重要、中、または低)があります。評価は、システムの更新をスケジュールする必要がある時期を判断するのに役立ちます。
パッチを適用する準備ができたら、yum update
を実行します コマンド:
$ sudo yum update
出力を確認して、 Yを押します プロンプトが表示されたら。
注: カーネルの更新には再起動が必要です。この記事では、RHELシステムの再起動が必要な他のパッケージを示します。 yum-utils
パッケージにはneeds-restarting
も含まれています 再起動が必要かどうかをチェックするユーティリティ。
脆弱性スキャンとコンプライアンスチェックは、時間の許す限りスケジュールして実行する必要があります。このトピックを探索するための2つのツールは、OpenVASとOpenSCAPです。これらのツールは、システムのより詳細な分析を提供し、既存の脆弱性とコンプライアンスのギャップを報告します。これらのツールを以前に使用したことがない場合は、セットアップして慣れるために時間がかかることがありますが、管理するすべてのシステムを保護するための頼りになるツールになるはずです。
他の誰かが構築したシステムを管理するように割り当てられることは、確かに恐ろしいことです。継承されたシステムのこのレビューを通して、あなたはそれをよりよく知っているべきであり、あなたはそのセキュリティを改善するでしょう。システムライフサイクルの一環として、すべてのシステムの定期的なセキュリティレビューを継続します。
脆弱性スキャンとSTIGプロセスについて詳しく説明しますので、今後の記事を確認してください。
[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]