GNU/Linux >> Linux の 問題 >  >> Linux

継承されたLinuxシステムの保護

彼らは、中古の家や車を買うことは、他の誰かの問題を買うことだと言っています。壁の内側またはボンネットの下に隠れているダクトテープの修理は何ですか?メンテナンス履歴がわからない場合は、予期しない事態を回避するために調査する必要があります。

不正なサーバー、会社を辞める管理者、買収や合併など、システム管理者の旅のある時点で、構築していないが突然責任を負うサーバーを継承します。この記事では、新しいシステムの保護と習熟を開始するためのいくつかの領域に焦点を当てます。トリアージアプローチを採用することは出発点にすぎません。セキュリティは、システム管理の継続的なライフサイクルの一部です。

このシステムは、引き続き利用可能である必要があるアプリケーションまたはサービスをホストしていることに注意してください。会社で実施されている必要な変更管理プロセスを使用します。また、会社のセキュリティポリシーと、適切な設定のためにそれらを参照できる場所をよく理解してください。

バックアップ

常に適切なバックアップ計画を立ててください…そして回復可能なバックアップを!

システムが定期的にバックアップされ、バックアップが回復可能であることを確認して、レビューを開始します。復元が必要になるまで待って、それが悪いことを確認しないでください。バックアップチェックには、リモートファイルシステムもどこかにバックアップされていることの確認を含める必要があります。

一部のアプリケーションとデータベースでは、適切なバックアップを取得するために特別なプロセスまたはエージェントが必要になるため、これらの追加のバックアップが適切に実行されていることを確認する良い機会です。リカバリ後の機能についてアプリケーションをテストすることを含む定期的なリカバリテストを実施することで、バックアップに関するギャップや問題を特定します。

続行する前に、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です。 およびlastchage コマンドは、アカウントの有効期限設定を表示および調整するためのオプションを提供します。 last コマンドは最近のログインに関する情報を表示します。

アカウントの有効期限情報を表示するには:

$ sudo chage -l <username>

アカウントの最後の5つのログインを表示するには:

$ last <username>  -5
ポートとサービス

実行中のサービスとポートを確認すると、不要で無効にできるものを特定するのに役立ちます。これらの余分なサービスを停止すると、攻撃ベクトルとしても削除されます。

何がリッスンしているかを示す簡単な方法の1つは、ssを使用することです。 指図。この例では、オプションを使用してTCPとUDPをリッスンしているソケットを表示し、プロセスの詳細も含めています。

$ sudo ss -tulnp 

サンプルWebサーバーでこのコマンドを実行すると、次のように表示されます。

この出力は、httpdがあることを示しています ポートをリッスンするプロセス804438080 、および8443 。その他のリスニングプロセスには、mariadbが含まれます (mysqld )ポート3306xvnc ポート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を試してみませんか?今すぐ無料でダウンロードしてください。]


Linux
  1. Linux での resize2fs コマンドの例

  2. Linux 稼働時間の履歴

  3. Linux の R の「memory.size()」に代わるものは?

  1. Linuxでホスト名を変更する方法

  2. Linux での「shutdown」コマンドの例

  3. Linux での localectl コマンドの例

  1. Linuxファイルシステムの概要

  2. Linux での vsyscall の無効化

  3. Linux 待ち行列システム