第2章 ネットワークのセキュリティー保護
2.1. ワークステーションのセキュリティー
Linux 環境のセキュリティー保護はワークステーションで始まります。個人マシンのロックダウンまたはエンタープライズシステムのセキュリティーを保護するかどうかは、個々のコンピューターからサウンドセキュリティーポリシーが開始されます。コンピューターネットワークは、最も弱いノードのセキュリティーレベルと同等です。
2.1.1. ワークステーションセキュリティーの評価
Red Hat Enterprise Linux ワークステーションのセキュリティーを評価する場合は、以下を検討してください。
- BIOS and Boot Loader Security - 承認されていないユーザーはマシンに物理的にアクセスして、パスワードなしで単一ユーザーまたはレスキューモードで起動できますか。
- Password Security - How secure the user account password on the machine?
- 管理 的コントロール - システムに関するアカウントと管理制御の量
- 利用可能なネットワークサービス: ネットワークからの要求をリッスンしているサービスと、それらが全く実行しているか?
- 個人ファイアウォール - 必要な場合はどの種類のファイアウォールが必要ですか?
- セキュリティー強化通信ツール - ワークステーション間の通信にどのツールを使用するか、どのツールもワークステーション間の通信に使用すべきか。
2.1.2. BIOS およびブートローダーのセキュリティー
BIOS (もしくは BIOS に相当するもの) およびブートローダーをパスワードで保護することで、システムに物理的にアクセス可能な未承認ユーザーがリムーバブルメディアを使用して起動したり、シングルユーザーモードで root 権限を取得することを防ぐことができます。このような攻撃に対するセキュリティー対策は、ワークステーションの情報の機密性とマシンの場所によって異なります。
たとえば、見本市で使用されていて機密情報を含んでいないマシンでは、このような攻撃を防ぐことが重要ではないかもしれません。ただし、同じ見本市で、企業ネットワークに暗号化されていない SSH 秘密鍵を持つ従業員のノートパソコンが同じ見本市で無人ままになっている場合は、組織全体に対して大きなセキュリティー侵害が生じる可能性があります。
一方で、ワークステーションが権限のあるユーザーもしくは信頼できるユーザーのみがアクセスできる場所に置かれてるのであれば、BIOS もしくはブートローダーの安全確保は必要ない可能性もあります。
2.1.2.1. BIOS パスワード
コンピューターの BIOS をパスワードで保護する主な 2 つの理由を以下に示します。[3]:
- BIOS 設定への変更を防止 する - 侵入者が BIOS にアクセスできる場合は、CD-ROM またはフラッシュドライブから起動するように設定できます。これにより、侵入者がレスキューモードまたはシングルユーザーモードに入り、システムで任意のプロセスを開始したり、機密データをコピーできるようになります。
- システムの起動 を防止する - BIOS の中には起動プロセスをパスワードで保護できるものもあります。これを有効にすると、攻撃者は BIOS がブートローダーを開始する前にパスワード入力を求められます。
BIOS パスワードの設定方法はコンピューターメーカーによって異なるため、具体的な手順はコンピューターのマニュアルを参照してください。
BIOS パスワードを忘れた場合は、マザーボードのジャンパーでリセットするか、CMOS バッテリーを外します。このため、可能な場合はコンピューターのケースをロックすることが推奨されます。ただし、CMOS バッテリーを外す前にコンピューターもしくはマザーボードのマニュアルを参照してください。
2.1.2.1.1. x86 以外のプラットフォームのセキュリティー保護
その他のアーキテクチャーは、異なるプログラムを使用して、x86 システムの BIOS とほぼ同等の低レベルのタスクを実行します。たとえば、Intel® Itanium™ コンピューターはEFI (Extendsible Firmware Interface )シェルを使用します。
他のアーキテクチャーで BIOS のようなプログラムをパスワードで保護する方法は、製造元の手順を参照してください。
2.1.2.2. ブートローダーのパスワード
Linux ブートローダーをパスワードで保護する主な理由を以下に示します。
- シングルユーザーモードへのアクセスを防止する - 攻撃者がシングルユーザーモードでシステムを起動できる場合は、root パスワードを求められることなく root として自動的にログインされます。警告
/etc/sysconfig/init
ファイルでSINGLE
パラメーターを編集してパスワードを使用してシングルユーザーモードへのアクセスを保護することは推奨されません。攻撃者は、GRUB のカーネルコマンドラインでカスタム初期コマンド(init=
パラメーターを使用して)を指定することで、パスワードをバイパスできます。で指定されている GRUB ブートローダーのパスワード保護が推奨され 「GRUB のパスワード保護」 ます。 - GRUB コンソールへのアクセスを防止 する - マシンが GRUB をブートローダーとして使用する場合、攻撃者は GRUB エディターインターフェースを使用して設定を変更したり、cat コマンドを使用して情報を収集したりできます。
- 非セキュアなオペレーティングシステムへのアクセスを防止する - デュアルブートシステムの場合、攻撃者は起動時にオペレーティングシステムを選択でき、アクセス制御やファイルのパーミッションを無視します。
Red Hat Enterprise Linux 6 には、x86 プラットフォームに GRUB ブートローダーが含まれています。GRUB の詳細は、『 『Red Hat Enterprise Linux インストールガイド』を参照してください』。
2.1.2.2.1. GRUB のパスワード保護
に記載されている最初の 2 つの問題に対応するように GRUB を設定 「ブートローダーのパスワード」 するには、設定ファイルに password ディレクティブを追加します。これを行うには、まず強固なパスワードを選択し、シェルを開き、root でログインしてから以下のコマンドを入力します。
/sbin/grub-md5-crypt
プロンプトが表示されたら、GRUB パスワードを入力し、を押し Enterます。これは、パスワードの MD5 ハッシュを返します。
次に、GRUB 設定ファイルを編集し
/boot/grub/grub.conf
ます。ドキュメントのメインセクションにあるファイル timeout を開き、以下の行を追加します。
password --md5 <password-hash>
<password-hash> をによって返された値に置き換えます。 /sbin/grub-md5-crypt[4].
次にシステムを起動すると、GRUB メニューは、最初に p GRUB パスワードを押さずにエディターまたはコマンドラインインターフェースにアクセスできなくなります。
ただし、このソリューションにより、攻撃者はデュアルブート環境のセキュアでないオペレーティングシステムで起動することを防ぐことはできません。そのためには、
/boot/grub/grub.conf
ファイルの異なる部分を編集する必要があります。
セキュアにするオペレーティングシステムの
title
行を探し、その下の lock ディレクティブの行を追加します。
DOS システムの場合、スタンザは以下のようになります。
title DOS lock
警告
この方法が適切に機能するには、
/boot/grub/grub.conf
ファイルのメインセクションに password
行が存在する必要があります。それ以外の場合は、攻撃者は GRUB エディターインターフェースにアクセスし、ロック行を削除できます。
特定のカーネルまたはオペレーティングシステムに別のパスワードを作成するには、スタンザに lock 行を追加し、パスワード行を追加します。
一意のパスワードで保護される各スタンザは、以下の例のような行で開始する必要があります。
title DOS lock password --md5 <password-hash>
2.1.2.2.2. 対話的な起動の無効化
ブートシーケンスの開始時に I キーを押して、システムを対話的に起動できます。対話式の起動中に、システムは各サービスを起動するように求められます。ただし、これにより、システムに物理的なアクセスを取得する攻撃者は、セキュリティー関連のサービスを無効にし、システムへのアクセスを取得する可能性があります。
ユーザーがシステムを対話的に起動しないようにするには、root で
/etc/sysconfig/init
ファイルの PROMPT
パラメーターを無効にします。
PROMPT=no
2.1.3. パスワードセキュリティー
パスワードは、Red Hat Enterprise Linux がユーザーのアイデンティティーを検証するために使用する主な方法です。このため、パスワードセキュリティーが、ユーザー、ワークステーション、およびネットワークを保護するのに非常に重要です。
セキュリティー上の理由から、インストールプログラムは、システムが Secure Hash Algorithm 512(SHA512 )とシャドウパスワードを使用するように設定します。これらの設定は変更しないことが強く推奨されます。
インストール時にシャドウパスワードを選択すると、すべてのパスワードが全読み取り
/etc/passwd
ファイルの一方向ハッシュとして保存されるため、システムがオフラインパスワードクラッキング攻撃に対して脆弱になります。侵入者が通常ユーザーとしてマシンにアクセスすることができる場合は、/etc/passwd
ファイルを自分のマシンにコピーして、任意の数のパスワードクラッキングプログラムを実行することができます。ファイルにセキュリティー保護されていないパスワードがある場合は、パスワード攻撃者が検出する前に時間がかかります。
シャドウパスワードは
/etc/shadow
、ファイルにパスワードハッシュを保存することで、この種の攻撃を防ぎます。これは、root ユーザーのみが読み取り可能です。
これにより、攻撃者は SSH や FTP などのマシン上のネットワークサービスにログインして、パスワードのクラッキングをリモートで試行することが強制されます。このブルートフォース攻撃の種別はかなり遅く、数百の失敗したログイン試行がシステムファイルに書き込まれるため、明らかな証跡が残されます。当然ながら、攻撃者が弱いパスワードを持つシステム上で攻撃を開始すると、クラッカーはログファイルを盗んで編集し、追跡内容をカバーするためにログファイルを編集する可能性があります。
フォーマットやストレージの考慮事項に加えて、コンテンツの問題も挙げられます。パスワードクラッキング攻撃に対してユーザーがアカウントを保護することが強固なパスワードを生じさせることです。
2.1.3.1. 強固なパスワードの作成
セキュアなパスワードを作成する場合、ユーザーは長いパスワードが短いパスワードや複雑なパスワードよりも強力なことを認識する必要があります。数字、特殊文字、大文字を含む場合でも、8 文字のパスワードのみを作成することは良いでしょう。john The Ripper などのパスワードクラッキングツールは、このようなパスワードを破損するように最適化されています。これは、人によって記憶が困難です。
情報交換では、エントロピーはランダムな変数と関連付けられ、ビットで示されます。エントロピーの値が大きいほど、パスワードのセキュリティーレベルは高くなります。NIST SP 800-63-1 によると、一般的に選択されるパスワードは、少なくとも 10 ビットのエントロピーを持つ必要があるディクショナリーにないパスワードです。このため、4 つのランダムな単語で構成されるパスワードには、約 40 ビットのエントロピーが含まれています。セキュリティーを強化する複数の単語で構成される長いパスワードは パスフレーズ とも呼ばれます。以下に例を示します。
randomword1 randomword2 randomword3 randomword4
システムが大文字、数字、または特殊文字を使用する場合は、たとえば最初の文字を大文字に変更して「
1!
」を追加することで、上記の推奨事項に続くパスフレーズを簡単に変更できます。このような変更により、パスフレーズのセキュリティーが大幅に強化される わけ ではないことに注意してください。
セキュアなパスワードを作成する方法は複数ありますが、常に以下の不適切なプラクティスを回避してください。
- 1 つの辞書単語、言語の単語、反転単語、または数字のみを使用します。
- パスワードまたはパスフレーズに 10 文字未満を使用します。
- キーボードレイアウトのキーシーケンスの使用
- パスワードを書き留めます。
- 写真日、匿名、ファミリーメンバー名、ペット名などのパスワードで個人情報を使用します。
- 複数のマシンで同じパスフレーズまたはパスワードを使用する。
セキュアなパスワードの作成は必須ですが、特に組織内のシステム管理者には適切に管理することが重要です。次のセクションでは、組織内でユーザーパスワードを作成して管理するのに適したプラクティスを説明します。
2.1.4. 組織内におけるユーザーパスワードの作成
組織にユーザーが多数ある場合、システム管理者には、適切なパスワードの使用を強制するために 2 つの基本的なオプションを利用できます。ユーザーのパスワードを作成したり、ユーザーが自身のパスワードを作成したり、パスワードが妥当な品質であることを検証したりできます。
ユーザーのパスワードを作成すると、パスワードは良好ですが、組織が大きくなると深刻なタスクになります。また、パスワードを書き込むリスクが高まります。
このため、システム管理者は、ユーザーによるパスワード作成を希望しますが、パスワードが適切であることをアクティブに確認します。場合によっては、パスワードエージングによってパスワードを定期的に変更します。
2.1.4.1. 強固なパスワードの強制
ネットワークを侵入から保護するには、システム管理者が、組織内で使用されているパスワードが強固であることを検証することを推奨します。パスワードの作成または変更が求められた場合、コマンドラインアプリケーションを使用できます。これはPAM( Pluggable Authentication Modules )認識しているので、パスワードが短すぎるか passwd、または簡単に解除できるかどうかを確認します。このチェックは、
pam_cracklib.so
PAM モジュールを使用して実行します。Red Hat Enterprise Linux では、pam_cracklib
PAM モジュールを使用して、一連のルールに対してパスワードの強度を確認することができます。ユーザーのログイン用にカスタムルールセットを設定するために、/etc/pam.d/passwd
ファイルの password
コンポーネントにある他の PAM モジュールとともにスタックできます。のルーチン pam_cracklib
は 2 つの部分から構成されます。提供されたパスワードがディクショナリーで見つかったかどうかをチェックします。これがディクショナリーでない場合は、多くのチェックで続行されます。これらのチェックの一覧は、pam_cracklib(8) man ページを参照してください。
例2.1 パスワードの強度チェックの設定 pam_cracklib
最小長 8 文字のパスワード(すべて 4 文字を含む)を要求するには、
/etc/pam.d/passwd
ファイルの password
セクションに以下の行を追加します。
password required pam_cracklib.so retry=3 minlen=8 minclass=4
パスワードの strength-check で連続する文字または繰り返しの文字を設定するには、
/etc/pam.d/passwd
ファイルの password
セクションに以下の行を追加します。
password required pam_cracklib.so retry=3 maxsequence=3 maxrepeat=3
この例では、「abcd」や「1234」などの連続する 3 文字を超えるパスワードを含めることはできません。また、同じ連続する文字数は 3 に制限されます。
注記
これらのチェックは root ユーザーに対して実行されないため、警告メッセージが表示されても、通常のユーザーのパスワードを設定できます。
PAM はカスタマイズできるため、パスワード整合性チェッカー(http://www.openwall.com/passwdqc/ から利用可能)や新しいモジュール の作成
pam_passwdqc
などを追加できます。利用可能な PAM モジュールの一覧は、http://uw714doc.sco.com/en/SEC_pam/pam-6.html を参照して ください。PAM の詳細は、『 『シングルサインオンおよびスマートカードの管理』を参照して』 ください。
パスワードチェックでは、作成時に実行されるパスワードを確認しても、パスワードクラッキングプログラムを実行するのと同様に、不適切なパスワードが検出されません。
多くのパスワードクラッキングプログラムは、Red Hat Enterprise Linux で実行できますが、オペレーティングシステムには同梱されていません。以下は、パスワードクラッキングプログラムの最も一般的な一覧です。
- john The Ripper - 高速で柔軟なパスワードクラッキングプログラムです。複数の単語一覧を使用でき、パスワードクラッキングをブルートフォースできます。これは http://www.openwall.com/john/ でオンラインで利用でき ます。
- crack- 最もよく知られているパスワードクラッキングソフトウェアである Crack も非常に高速ですが、Ripper として簡単に使用 できません。
- Slurpie - Slurpie は、Ripper と Crack と 似 ていますが、複数のコンピューターを同時に実行するように設計されており、分散パスワードクラッキング攻撃が発生します。このツールと、http://www.ussrback.com/distributed.htm でオンラインの分散型攻撃セキュリティー評価ツールが多数あり ます。
警告
組織内のパスワードをクラッキングする前に、必ず書き込みを承認してください。
2.1.4.2. passphrases
パスフレーズとパスワードは、現在のシステムの多くでセキュリティーの基盤となります。ただし、多くのシステムでは、biometrics や 2 要素認証などの技術がまだメインストリームになっていません。パスワードを使用してシステムのセキュリティーを保護する場合は、パスフレーズの使用を考慮する必要があります。パスフレーズはパスワードよりも長く、数字やシンボルなどの標準文字で実装されても、パスワードよりも優れた保護を提供します。
2.1.4.3. パスワードの集約
パスワードエージングは、システム管理者が組織内の不適切なパスワードに対して行うのに使用するもう 1 つの手法です。パスワードエージングとは、(通常は 90 日)指定した期間後に、新しいパスワードの作成を求めるプロンプトが付けられることを意味します。このため、ユーザーが定期的にパスワードを変更することが求められても、クラッカーしたパスワードは限られた時間だけ侵入者が役に立ちます。ただし、パスワードエージングのマイナス面は、ユーザーがパスワードをダウンする可能性が高くなります。
Red Hat Enterprise Linux でパスワードエージングを指定するために使用される主要なプログラムは、chage コマンドまたは グラフィカルユーザーマネージャー( system-config-users)アプリケーションです。
重要
chage コマンドを使用するには、シャドウパスワードを有効にする必要があります。詳細は、『 『Red Hat Enterprise Linux 6 デプロイメントガイド』を参照してください』。
chage コマンドの
-M
オプションは、パスワードが有効である日数を指定します。たとえば、ユーザーのパスワードが 90 日で期限切れになるようにするには、以下のコマンドを使用します。
chage -M 90
<username>
上記のコマンドで、<username> をユーザーの名前に置き換えます。パスワードの有効期限を無効にするには、
-M
オプションの 99999 後にの値を使用します(これは 273 年より少し類似しています)。
chage コマンドで使用可能なオプションの詳細は、以下の表を参照してください。
オプション | 説明 |
---|---|
-d days | パスワードが変更された 2017 年 1 月 1 日からの日数を指定します。 |
-E 日付 | アカウントがロックされる日付を YYYY-MM-DD の形式で指定します。日付の代わりに、2017 年 1 月 1 日以降の日数を使用することもできます。 |
-I days | パスワードの有効期限からアカウントをロックするまでの非アクティブ日数を指定します。値がの場合 0 、パスワードが失効してもアカウントはロックされません。 |
-l | 現在のアカウントエージング設定を一覧表示します。 |
-m days | ユーザーがパスワードを変更する必要のある最小日数を指定します。値がの場合 0 、パスワードは期限切れではありません。 |
-M days | パスワードが有効である日数の最大数を指定します。このオプションで指定された日数と、オプションで指定した日数が現在の日よりも小さい場合 -d は、ユーザーはアカウントを使用する前にパスワードを変更する必要があります。 |
-W days | パスワードの有効期限の日数を指定して、ユーザーを警告します。 |
インタラクティブモードで chage コマンドを使用して、複数のパスワードエージングおよびアカウントの詳細を変更することもできます。インタラクティブモードに入るには、以下のコマンドを使用します。
chage <username>
インタラクティブセッションの例を以下に示します。
~]# chage juan Changing the aging information for juan Enter the new value, or press ENTER for the default Minimum Password Age [0]:10
Maximum Password Age [99999]:90
Last Password Change (YYYY-MM-DD) [2006-08-18]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
パスワードを設定して、ユーザーが初回ログインしたときに期限切れになるように設定できます。これにより、ユーザーはパスワードをすぐに変更できるようになります。
- 初期パスワードを設定します。この手順には、デフォルトのパスワードを割り当てるか、null パスワードを使用できます。デフォルトのパスワードを割り当てるには、
root
で次のコマンドを実行します。passwd username
代わりに null パスワードを割り当てるには、以下のコマンドを使用します。passwd
-d
username可能な限り null パスワードを使用しないでください。任意のサードパーティーが最初にログインしてセキュアではないユーザー名を使用してシステムにアクセスするため、便利なパスワードを使用するのに便利です。必ずユーザーがログインできる状態であることを確認してから、null パスワードでアカウントをロックを解除してください。 root
で以下のコマンドを実行して、パスワードの有効期限を強制的に実行します。chage
-d
0
usernameこのコマンドは、パスワードが最後にエポック(1970 年 5 月 1 日)に変更された日付の値を設定します。この値により、パスワードエージングポリシー(ある場合)に関係なく、すぐにパスワードの有効期限が強制されます。
最初のログイン時に、ユーザーに新しいパスワードの入力が求められます。
また、グラフィカルの User Manager アプリケーションを使用して、以下のようにパスワードエージングポリシーを作成することもできます。注記: この手順を実行するには、管理者権限が必要です。
- パネルの system-config-users でコマンドを入力します。メニューをクリックして、以下を参照します。 をクリック し、ユーザーマネージャーを表示します。シェルプロンプト
- Users タブをクリックし、ユーザーリストで必要なユーザーを選択します。
- ツールバーをクリックして、ユーザープロパティーダイアログボックスを表示します(または メニュー で選択します)。
- Password Info タブをクリックし、パスワード有効期限の有効化 のチェックボックスを選択します。
- 必須 フィールドを変更する前に必要な値を Days に 入力し、をクリックし ます。
図2.1 パスワードエージングオプションの指定
[D]
スクリーンショットを更新する必要があります。
2.1.5. 非アクティブアカウントのロック
pam_lastlog
PAM モジュールは、最近ログインしていないユーザーのロックアウトや、ユーザーの最後のログイン試行に関する情報を表示するために使用されます。モジュールは root アカウントでチェックを実行しないため、ロックアウトされません。
lastlog コマンドは、コマンドではなく、ユーザーの最後のログインセッションを表示します。これにより last、現在のログインセッションと以前のログインセッションがすべて表示されます。コマンドは、データがバイナリー形式で保存される
/var/log/lastlog
および /var/log/wtmp
ファイルからそれぞれ読み込まれます。
- ユーザーのログインに最後に成功した前に失敗したログイン試行回数を表示するには、root で以下の行を
/etc/pam.d/login
ファイルのsession
セクションに追加します。session optional pam_lastlog.so silent noupdate showfailed
非アクティブ化によるアカウントのロックは、コンソール、GUI、またはその両方で機能するように設定できます。
- 非アクティブが 10 日後にアカウントをロックアウトするには、root で以下の行を
/etc/pam.d/login
ファイルのauth
セクションに追加します。auth required pam_lastlog.so inactive=10
- GNOME デスクトップ環境のアカウントをロックアウトするには、root で
/etc/pam.d/gdm
ファイルのauth
セクションに以下の行を追加します。auth required pam_lastlog.so inactive=10
注記
他のデスクトップ環境では、これらの環境のそれぞれのファイルを編集する必要があることに注意してください。
2.1.6. アクセス制御のカスタマイズ
pam_access
PAM モジュールを使用すると、管理者はログイン名、ホスト名、または IP アドレスに基づいてアクセス制御をカスタマイズできます。デフォルトでは、モジュールは、指定がない場合は、/etc/security/access.conf
ファイルからアクセスルールを読み取ります。これらのルールの形式の詳細な説明は、man ページの access.conf(5)
を参照してください。Red Hat Enterprise Linux では、デフォルトで pam_access
は /etc/pam.d/crond
および /etc/pam.d/atd
ファイルに含まれています。
コンソールおよびグラフィックデスクトップ環境からユーザー john がシステムにアクセスできないようにするには、以下の手順に従います。
/etc/pam.d/login
および/etc/pam.d/gdm-*
ファイルの両方のaccount
セクションに以下の行を追加します。account required pam_access.so
/etc/security/access.conf
ファイルに以下のルールを指定します。- : john : ALL
このルールは、任意の場所からユーザー john からのログインをすべて禁止します。
1.2.3.4 IP アドレスのユーザー john を除く SSH を使用したログインを試みるすべてのユーザーへのアクセスを許可するには、以下の手順に従います。
- の
account
セクションに以下の行を追加し/etc/pam.d/sshd
ます。account required pam_access.so
- /etc/security/access.conf ファイルに以下のルールを指定します。
+ : ALL EXCEPT john : 1.2.3.4
他のサービスからのアクセスを制限するには、
/etc/pam.d
ディレクトリーの各ファイルで pam_access
モジュールが必要になります。
以下のコマンドを使用して、システム全体の PAM 設定
*-auth
ファイル( /etc/pam.d
ディレクトリー)を呼び出すすべてのサービスの pam_access
モジュールを呼び出すことができます。
authconfig --enablepamaccess --update
この からを選択します。 タブから、「ローカルアクセス制御オプションの有効化」を確認します。これにより、
pam_access
モジュールは認証設定ユーティリティーを使用して有効にできます。このユーティリティーを起動するには、トップメニュー pam_access
モジュールがシステム全体の PAM 設定に追加されます。
2.1.7. 時間ベースのアクセス制限
pam_time
PAM モジュールは、1 日のある特定の時間内にアクセスを制限するために使用されます。週、ユーザー名、システムサービスの使用状況などに基づいてアクセスを制御するように設定することもできます。デフォルトでは、モジュールは /etc/security/time.conf
ファイルからアクセスルールを読み取ります。これらのルールの形式の詳細な説明は、time.conf(5)
man ページを参照してください。
root ユーザーを除くすべてのユーザーを 05:30 PM 05:30 PM から午前 08:00 時に制限するには、以下の手順を実行します。
/etc/pam.d/login
ファイルの account セクションに以下の行を追加します。account required pam_time.so
/etc/security/time.conf
ファイルに以下のルールを指定します。login ; tty* ; ALL ; !root ; !Wk1730-0800
ユーザー john が作業時間および稼働日(月曜日から開始)時に SSH サービスを使用できるようにするには、以下の手順に従います。
- に以下の行を追加します。
/etc/pam.d/sshd file:
account required pam_time.so
/etc/security/time.conf
ファイルに以下のルールを指定します。sshd ; tty* ; john ; Wk0800-1730
注記
これらの設定をデスクトップ環境に適用するには、
pam_time
モジュールを /etc/pam.d
ディレクトリー内の対応するファイルに追加する必要があります。
2.1.8. アカウント制限の適用
pam_limits
PAM モジュールは、以下の目的で使用されます。
- ユーザーごとに同時ログインセッションの最大数などの、ユーザーログインセッションに制限を適用します。
- ulimit ユーティリティーで設定する制限を指定します。
- and は、nice ユーティリティーで設定する優先度を指定します。
デフォルトでは、ルールは
/etc/security/limits.conf
ファイルから読み込まれます。これらのルールの形式の詳細な説明は、man ページの limits.conf(5)
を参照してください。さらに、特定のアプリケーションやサービス用に個別の設定ファイルを /etc/security/limits.d
ディレクトリーに作成できます。デフォルトでは、pam_limits
モジュールは/etc/pam.d/
ディレクトリー内の複数のファイルに含まれます。ユーザープロセスのデフォルトの制限は /etc/security/limits.d/90-nproc.conf
ファイルで定義され、フォークなど、サービス攻撃の悪意のある拒否を防ぐことができます。ユーザープロセスのデフォルトの上限を 50 に変更するには、ファイルでの形式を /etc/security/limits.d/90-nproc.conf
以下のように変更します。
* soft nproc 50
例2.2 ユーザーあたりの最大ログイン数の指定
- グループ内の各ユーザーに対して同時ログインの最大数を設定するには
office
、/etc/security/limits.conf
ファイルに以下のルールを指定します。@office - maxlogins 4
- にデフォルトで以下の行を追加する必要があり
/etc/pam.d/system-auth
ます。そうでない場合は、手動で追加します。session required pam_limits.so
2.1.9. 管理的コントロール
ホームマシンを管理する場合は、一部のタスクを root ユーザーで実行するか、sudo またはなどの setuid プログラムを介して有効な root 権限を付与する必要があり suます。setuid プログラムは、プログラムを実行するユーザーではなく、プログラムの所有者のユーザー ID(UID)を操作するプログラムです。このようなプログラムは、以下の例のように、長い形式のリストの
s
所有者セクションので示されます。
~]$ ls -l /bin/su
-rwsr-xr-x. 1 root root 34904 Mar 10 2011 /bin/su
注記
s
は大文字または小文字になります。大文字として表示される場合は、基礎となるパーミッションビットが設定されていないことを意味します。
ただし、組織のシステム管理者には、組織内のユーザーがマシンにどの程度必要かを決める必要があります。と呼ばれる PAM モジュールを介して通常
pam_console.so
、一部のアクティビティーは、物理コンソールでログインする最初のユーザーに対しては、再起動やリムーバブルメディアのマウントなど、root ユーザーのみに予約されています( pam_console.so
モジュールの詳細は、「『シングルサインオンの 管理」および「スマートカード』 の管理」を参照してください)。 ただし、ネットワーク設定の変更、新しいマウスの設定、ネットワークデバイスのマウントなど、その他の重要なシステム管理タスクは、管理者権限なしではできません。したがって、システム管理者は、ネットワーク上のユーザーアクセスの量を決定する必要があります。
2.1.9.1. Root アクセスの許可
組織内のユーザーが信頼され、コンピューターに命令されていれば、root アクセスを許可することは問題ではない可能性があります。ユーザーが root アクセスを許可すると、デバイスの追加やネットワークインターフェースの設定などのマイナーアクティビティーは、個々のユーザーが処理できるため、システム管理者はネットワークセキュリティーやその他の重要な問題に対処することができます。
一方、個々のユーザーに root アクセスを付与すると、以下の問題が発生する可能性があります。
- マシンの移行: root アクセスを持つユーザーはマシンを誤っ て設定し、問題の解決に支援を必要とする可能性があります。悪意あふれるとしても、それに気付いてもセキュリティーの欠陥が開く可能性があります。
- セキュアでないサービス - root アクセスを持つユーザーは、FTP、Telnet などのセキュアでないサーバーを実行すると、ユーザー名とパスワードが危険にさらされる可能性があります。これらのサービスは、プレーンテキストでネットワーク経由でこの情報を送信します。
- Email Attachments As Root の実行: Linux に影響するまれな電子メールウイルスが存在します。ただし、これらが脅威になる唯一のタイミングは、root ユーザーが実行している時です。
- 監査証跡をそのまま保持 する - ルートアカウントは複数のユーザーによって共有されることが多いため、複数のシステム管理者がシステムを管理できるため、指定した時点でどのユーザーが root であったかを特定することはできません。別のログインを使用する場合、ユーザーがでログインするアカウントと、セッション追跡目的で一意の番号がタスク構造に置かれます。これは、ユーザーが開始するすべてのプロセスが継承されます。同時ログインを使用する場合、一意の番号を使用してアクションを特定のログインを追跡できます。アクションが監査イベントを生成すると、ログインアカウントと、その一意の番号に関連付けられたセッションで記録されます。これらのログインおよびセッションを表示するには、aulast コマンドを使用します。aulast コマンドの
--proof
オプションを使用すると、特定のセッションで生成された監査可能なイベントを分離するための特定の ausearch クエリーが提案されます。
2.1.9.2. Root アクセスの拒否
管理者がこのような理由またはその他の理由で root としてログインできない場合は、root パスワードを秘密にし、1 つまたは単一ユーザーモードへのアクセスはブートローダーのパスワード保護では拒否する必要があります(本トピックの 「ブートローダーのパスワード」 詳細はを参照してください)。
以下は、管理者がルートログインを拒否する 4 つの方法になります。
- root シェルの変更
- ユーザーが root として直接ログインできないようにするには、システム管理者が
/etc/passwd
ファイル /sbin/nologin で root アカウントのシェルをに設定します。表2.2 Root Shell の無効化 影響 影響なし root シェルへのアクセスを阻止し、このような試行をログに記録します。以下のプログラムは、root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- su
- ssh
- scp
- sftp
FTP クライアント、メールクライアント、および setuid プログラムなど、シェルを必要としないプログラム。以下のプログラムは、root アカウントにアクセスでき ません。- sudo
- FTP クライアント
- メールクライアント
- コンソールデバイス(tty)による root アクセスの無効化
- root アカウントへのアクセスをさらに制限するために、管理者は
/etc/securetty
ファイルを編集して、コンソールでの root ログインを無効にすることができます。このファイルは、root ユーザーがログインできるすべてのデバイスを一覧表示します。ファイルが存在しない場合は、root ユーザーは、コンソールまたは raw ネットワークインターフェースを使用して、システム上の通信デバイスを介してログインできます。ユーザーが Telnet を介して root としてマシンにログインできるため、ネットワーク上でパスワードをプレーンテキストで送信できるため、危険です。デフォルトでは、Red Hat Enterprise Linux の/etc/securetty
ファイルでは、root ユーザーはマシンに物理的に接続されているコンソールでのみログインできます。root ユーザーがログインしないようにするには、root で次のコマンドを実行します。echo > /etc/securetty
KDM、GDM、および XDM ログインマネージャーでsecuretty
サポートを有効にするには、以下の行を追加します。auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
以下に記載されているファイル。/etc/pam.d/gdm
/etc/pam.d/gdm-autologin
/etc/pam.d/gdm-fingerprint
/etc/pam.d/gdm-password
/etc/pam.d/gdm-smartcard
/etc/pam.d/kdm
/etc/pam.d/kdm-np
/etc/pam.d/xdm
警告空の/etc/securetty
ファイルは、認証後までコンソールを開くことができ ない ため、root ユーザーがツールの OpenSSH スイートを使用してリモートでログインできないようにする訳ではありません。表2.3 root ログインの無効化 影響 影響なし コンソールまたはネットワークを使用して root アカウントにアクセスできないようにします。以下のプログラムは、root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- tty を開くその他のネットワークサービス
root としてログインせず、setuid またはその他のメカニズムを使用して管理タスクを実行します。以下のプログラムは、root アカウントにアクセスでき ません。- su
- sudo
- ssh
- scp
- sftp
- root SSH ログインの無効化
- SSH プロトコルを使用した root ログインを防ぐには、SSH デーモンの設定ファイルを編集して
/etc/ssh/sshd_config
、の行を変更します。#PermitRootLogin yes
以下で読み込むには、以下のコマンドを実行します。PermitRootLogin no
表2.4 root SSH ログインの無効化 影響 影響なし OpenSSH スイートを使用して root アクセスを阻止します。以下のプログラムは、root アカウントにアクセスできません。- ssh
- scp
- sftp
OpenSSH スイートに含まれないプログラム。 - PAM を使用したサービスへの root アクセスを制限する
/lib/security/pam_listfile.so
モジュールを介して PAM により、特定のアカウントを柔軟に拒否できます。管理者は、このモジュールを使用して、ログインが許可されないユーザーの一覧を参照できます。システムサービスへの root アクセスを制限するには、/etc/pam.d/
ディレクトリー内のターゲットサービスのファイルを編集し、pam_listfile.so
モジュールが認証に必要であることを確認します。以下は、/etc/pam.d/vsftpd
PAM 設定ファイルの vsftpd FTP サーバーでモジュールがどのように使用されているかの例になります(ディレクティブが 1 行目にある場合は、最初の行の最後にある\
文字は必要あり ません )。auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
これにより、PAM が/etc/vsftpd.ftpusers
ファイルを確認し、一覧表示されたユーザーのサービスへのアクセスを拒否するよう指示します。管理者はこのファイルの名前を変更でき、サービスごとに個別の一覧を保持することや、1 つの中央リストを使用して複数のサービスへのアクセスを拒否することができます。管理者が複数のサービスへのアクセスを拒否する場合は、メールクライアント/etc/pam.d/pop
や SSH クライアントなど、PAM 設定ファイルに同様/etc/pam.d/imap
の行/etc/pam.d/ssh
を追加できます。PAM の詳細は、『 『Red Hat Enterprise Linux Managing Single Sign-On and Smart Cards』 』の「 『Using Pluggable Authentication Modules(PAM)』 」の章を参照してください。表2.5 PAM を使用した root の無効化 影響 影響なし PAM 対応ネットワークサービスへの root アクセスを防ぎます。以下のサービスは、root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- ssh
- scp
- sftp
- FTP クライアント
- メールクライアント
- PAM 対応サービス
PAM に対応していないプログラムやサービス
2.1.9.3. 自動ログアウトの有効化
root
としてユーザーがログインすると、無人ログインセッションによりセキュリティー上のリスクが大幅に低下する可能性があります。このリスクを軽減するには、一定期間後にアイドルユーザーを自動的にログアウトするようにシステムを設定できます。
- screen パッケージがインストールされていることを確認します。これを行うには、
root
で以下のコマンドを実行します。~]# yum
install
screen
Red Hat Enterprise Linux でパッケージをインストールする方法は、『 『Red Hat Enterprise Linux 6 デプロイメントガイド』の「 パッケージのインストール 」セクションを参照してください』。 root
で以下の行をファイルの先頭に追加し、この/etc/profile
ファイルの処理を中断しないようにします。trap "" 1 2 3 15
- ユーザーが仮想コンソールまたはリモートでログインするたびに screen セッションを開始するには、
/etc/profile
ファイルの末尾に以下の行を追加します。SCREENEXEC="screen" if [ -w $(tty) ]; then trap "exec $SCREENEXEC" 1 2 3 15 echo -n 'Starting session in 10 seconds' sleep 10 exec $SCREENEXEC fi
新しいセッションを開始するたびに、メッセージが表示され、ユーザーは 10 秒待機する必要があることに注意してください。セッションの開始前に待機する時間を調整するには、sleep コマンドの後に値を変更します。 /etc/screenrc
設定ファイルに以下の行を追加して、特定のアクティブでない期間の後に screen セッションを閉じます。idle 120 quit autodetach off
これにより、時間制限が 120 秒に設定されます。この制限を調整するには、idle
ディレクティブの後に値を変更します。代わりに、次の行を使用して、セッションのみをロックするようにシステムを設定できます。idle 120 lockscreen autodetach off
こうすることで、セッションのロックを解除するにはパスワードが必要になります。
この変更は、ユーザーが次回システムにログインしたときに有効になります。
2.1.9.4. ルートアクセスの制限
root ユーザーへのアクセスを完全に拒否するのではなく、管理者は、su やなどの setuid プログラムによるアクセスのみを許可でき sudoます。su およびの詳細は、『Red Hat Enterprise Linux 6 デプロイメントガイド』
su(1)
および sudo(8)
man ページを sudo参照してください。
2.1.9.5. アカウントのロック
Red Hat Enterprise Linux 6 では、PAM モジュール
pam_faillock
により、システム管理者は、指定した回数失敗した試行後にユーザーアカウントをロックできます。ユーザーのログイン試行を制限することは主に、ユーザーのアカウントパスワードの取得先となるブルートフォース攻撃の防止を目的とするセキュリティー対策として機能します。
pam_faillock
モジュールを使用すると、失敗したログイン試行は /var/run/faillock
ディレクトリーの各ユーザーに対して別のファイルに保存されます。
注記
ログファイルの試行に失敗した行の順序は重要です。この順序の変更により、
even_deny_root
オプションが使用されると、root ユーザーアカウントを含むすべてのユーザーアカウントがロックされます。
以下の手順に従って、アカウントのロックを設定します。
- root 以外のユーザーを 3 回ロックして、そのユーザーが 10 分後にロックを解除した後にロックアウトするには、
/etc/pam.d/system-auth
および/etc/pam.d/password-auth
ファイルのauth
セクションに以下の行を追加します。auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600 auth sufficient pam_unix.so nullok try_first_pass auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
- 以下の行を、直前の手順で指定されている両方のファイルの
account
セクションに追加します。account required pam_faillock.so
- root ユーザーにもアカウントロックを適用するには、
/etc/pam.d/system-auth
および/etc/pam.d/password-auth
ファイルのpam_faillock
エントリーにeven_deny_root
オプションを追加します。auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600 auth sufficient pam_unix.so nullok try_first_pass auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600 account required pam_faillock.so
ユーザーが 3 回ログインに失敗した後に 4 回ログインを
john
試みると、4 番目の試行時にアカウントがロックされます。
[user@localhost ~]$ su - john Account locked due to 3 failed logins su: incorrect password
システムが複数のログインに失敗しても、システムがユーザーのロックアウトを防ぐには、とで初めて呼び出さ
pam_faillock
れる行の上に次の行を追加 /etc/pam.d/system-auth
し /etc/pam.d/password-auth
ます。また user1
、user2
、user3
を実際のユーザー名に置き換えます。
auth [success=1 default=ignore] pam_succeed_if.so user in user1:user2:user3
ユーザーごとの失敗した試行回数を表示するには、root で以下のコマンドを実行します。
[root@localhost ~]# faillock
john:
When Type Source Valid
2013-03-05 11:44:14 TTY pts/0 V
ユーザーのアカウントをアンロックするには、root で以下のコマンドを実行します。
faillock --user <username> --reset
authconfig ユーティリティーを使用して認証設定を変更する場合、
system-auth
および password-auth
ファイルは、authconfig ユーティリティーの設定で上書きされます。これは、設定ファイルの代わりにシンボリックリンクを作成すると回避できます。これは、authconfig が認識し、上書きしません。設定ファイルでカスタム設定と authconfig を同時に使用するには、以下の手順に従ってアカウントのロックを設定します。
- 設定ファイルの名前を変更します。
~]# mv /etc/pam.d/system-auth /etc/pam.d/system-auth-local ~]# mv /etc/pam.d/password-auth /etc/pam.d/password-auth-local
- 以下のシンボリックリンクを作成します。
~]# ln -s /etc/pam.d/system-auth-local /etc/pam.d/system-auth ~]# ln -s /etc/pam.d/password-auth-local /etc/pam.d/password-auth
- この
/etc/pam.d/system-auth-local
ファイルには以下の行が含まれている必要があります。auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600 auth include system-auth-ac auth [default=die] pam_faillock.so authfail silent audit deny=3 unlock_time=600 account required pam_faillock.so account include system-auth-ac password include system-auth-ac session include system-auth-ac
- この
/etc/pam.d/password-auth-local
ファイルには以下の行が含まれている必要があります。auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600 auth include password-auth-ac auth [default=die] pam_faillock.so authfail silent audit deny=3 unlock_time=600 account required pam_faillock.so account include password-auth-ac password include system-auth-ac session include system-auth-ac
さまざまな
pam_faillock
設定オプションの詳細は、man ページの pam_faillock(8)
を参照してください。
2.1.10. セッションのロック
運用中には、多くの理由でワークステーションを無人のままにしないといけない場合があります。これにより、攻撃者は特に物理的なセキュリティー対策が不十分な環境でマシンに物理的にアクセスできる可能性があります(を参照 「物理的コントロール」)。ラップトップは特にモビリティーが物理的なセキュリティーに干渉するため、特に公開されています。セッションロック機能を使用することで、このようなリスクを軽減できます。これにより、正しいパスワードの入力が完了するまでシステムへのアクセスが阻止されます。
注記
ログアウトせずに画面をロックする主な利点は、ロックにより、ユーザーのプロセス(ファイル転送など)の実行を継続できることです。ログアウトはこれらのプロセスを停止します。
2.1.10.1. gnome-screensaver-command を使用した GNOME のロック
Red Hat Enterprise Linux 6 のデフォルトのデスクトップ環境には、GNOME が含まれています。この機能により、ユーザーはいつでも画面をロックできます。ロックをアクティベートする方法は複数あります。
- で指定されているキーの組み合わせを押し
ます。デフォルトの組み合わせはです Ctrl+Alt+L。 - パネル
でを選択します。 - コマンドラインインターフェースから以下のコマンドを実行します。
gnome-screensaver-command
-l
説明されている手法はすべて同じ結果を持ちます。スクリーンセーバーはアクティブになり、画面はロックされます。その後、任意のキーを押してスクリーン保存を非アクティブにし、パスワードを入力して作業を継続できます。
この関数には
gnome-screensaver
プロセスを実行する必要があります。プロセスに関する情報を提供するコマンドを使用して、これが確認できるかどうかを確認できます。たとえば、ターミナルから以下のコマンドを実行します。
pidof gnome-screensaver
gnome-screensaver
プロセスが実行中の場合は、コマンドを実行した後に画面に識別番号(PID)を示す数字が表示されます。プロセスが現在実行していない場合は、コマンドで出力は表示されません。
追加情報は、の
gnome-screensaver-command(1)
man ページを参照してください。
重要
上記の画面をロックするには、手動によるアクティベーションが必要です。このため、管理者は短期間だけであっても、無人状態のままになるたびにコンピューターをロックするよう推奨する必要があります。
2.1.10.1.1. スクリーンセーバーのアクティベーションの自動ロック
この名前が gnome-screensaver-command 示すように、ロック機能は GNOME のスクリーンセーバーに関連付けられます。スクリーンセーバーのアクティベーションにロックを結び付け、一定期間にわたり無人状態になるたびにワークステーションをロックできます。この機能は、デフォルトで 5 分タイムアウトでアクティベートされます。
自動ロック設定を変更する場合は、メインパネル でを選択します。これにより、タイムアウトの時間(スケーラーの 後にコンピューターをアイドル状態 にする)を設定し、自動ロックのアクティブ化または非アクティブ化( スクリーンセーバーがアクティブな場合にロック画面)をアクティブまたは非アクティブ にするウィンドウが開きます。
図2.2 スクリーン保存者設定の変更
[D]
注記
Screensaver Preferences ダイアログで、コンピューターがアイドル状態のときに Activate スクリーンセーバー を無効にすると、スクリーンセーバーが自動的に起動できなくなります。このため、自動ロック機能も無効にされますが、に記載の手法を使用してワークステーションを手動でロックすることは可能です 「gnome-screensaver-command を使用した GNOME のロック」。
2.1.10.1.2. リモートセッションのロック
ターゲットワークステーションがこのプロトコルの接続を受け入れる ssh 限り、GNOME セッションをリモートでロックすることもできます。アクセスできるマシンで画面をリモートでロックするには、以下のコマンドを実行します。
ssh -X <username>@<server> "export DISPLAY=:0; gnome-screensaver-command -l"
<username> をユーザー名に置き換え、<server> をロックするワークステーションの IP アドレスに置き換えます。
詳細はを 「セキュアなシェル」 参照してください ssh。
2.1.10.2. vlock を使用した仮想コンソールのロック
また、ユーザーは仮想コンソールをロックする必要があります。これは、と呼ばれるユーティリティーを使用して実行でき vlockます。このユーティリティーをインストールするには、root で以下のコマンドを実行します。
~]# yum install vlock
インストール後には、vlock コマンドでパラメーターを付けずにコンソールセッションをロックできます。これにより、現在アクティブな仮想コンソールセッションがロックされ、他のセッションへのアクセスは許可されます。ワークステーションのすべての仮想コンソールへのアクセスを防ぐには、次のコマンドを実行します。
vlock -a
この場合は、現在アクティブなコンソールを vlock ロックし、
-a
オプションにより、他の仮想コンソールへの切り替えができなくなります。
追加情報は、の
vlock(1)
man ページを参照してください。
重要
2.1.11. 利用可能なネットワークサービス
管理的コントロールへのユーザーアクセスは組織内のシステム管理者にとって重要ですが、Linux システムを管理および運用するユーザーにとって、どのネットワークサービスもアクティブなネットワークサービスを監視することが重要です。
Red Hat Enterprise Linux 6 のサービスの多くは、ネットワークサーバーとして動作します。ネットワークサービスがマシンで実行している場合、サーバーアプリケーション( デーモンと呼ばれます)は、1 つ以上のネットワークポートでの接続をリッスンしています。これらのサーバーは、潜在的な攻撃として扱う必要があります。
2.1.11.1. サービスへのリスク
ネットワークサービスは、Linux システムに多くのリスクを課す可能性があります。以下は、主な問題の一部です。
- サービス拒否(DoS): リクエストによりサービス拒否(DoS)により、各リクエストのログと応答を試みるため、サービス拒否攻撃 によりシステムが使用できなくなる可能性があります。
- 分散型サービス拒否(DDoS)- DoS 攻撃の 1 つで、複数の不正なマシン(数千個以上のマシン)を使用して、サービス上で調整された攻撃を指示し、要求で改ざんして使用不可能にします。
- Script Vulnerability Ackscks - サーバーがスクリプトを使用してサーバー側のアクション(Web サーバー)を一般的に実行すると、攻撃者は誤って書き込まれたスクリプトを攻撃できます。このスクリプトの脆弱性攻撃により、バッファーオーバーフロー状態が発生したり、攻撃者がシステム上のファイルを変更したりする可能性があります。
- bufferOverflow Ackscks - 番号 が付けられたポート 0 から 1023 までのポートに接続するサービスは、管理ユーザーとして実行する必要があります。アプリケーションに悪用可能なバッファーオーバーフローがある場合、攻撃者はデーモンを実行しているユーザーとしてシステムにアクセスできる可能性があります。悪用可能なバッファーオーバーフローが存在するため、攻撃者は自動ツールを使用して脆弱性のあるシステムを特定し、アクセス権限が大きいと、自動ルートキットを使用してシステムへのアクセスを維持します。
注記
Red Hat Enterprise Linux では、x86 互換カーネルおよびマルチプロセッサーカーネルがサポートする実行可能なメモリーセグメンテーションと保護テクノロジーである 、 Red Hat Enterprise Linux では、バッファーオーバーフローの脆弱性の脅威が軽減されます。Execstructeld は、仮想メモリーを実行可能なセグメントと実行不可能なセグメントに分割することで、バッファーオーバーフローのリスクを軽減します。実行可能なセグメント(バッファーオーバーフローの悪用からインジェクトされた悪意のあるコードなど)以外を実行しようとするプログラムコードは、セグメンテーションフォールトをトリガーし、終了します。
Execleeeld には No eXecute のサポートも含まれています(NXAMD64 プラットフォームおよび eXecute Disable ()の技術XD)Itanium およびの技術 Intel® 64 システムこれらの技術は Execleeeld と連動し、悪意のあるコードが仮想メモリーの実行可能な部分で、4KB の実行可能ファイルで実行されないようにし、攻撃のリスクをバッファーオーバーフローの悪用からのリスクを軽減します。
重要
ネットワーク上での攻撃の公開を制限するために、未使用のサービスをすべて無効にします。
2.1.11.2. サービスの特定と設定
セキュリティーを強化するため、Red Hat Enterprise Linux でインストールしたほとんどのネットワークサービスは、デフォルトで無効になっています。ただし、主な例外があります。
- cupsd : Red Hat Enterprise Linux のデフォルトプリントサーバー
- lpd : 代替のプリントサーバーです。
- xinetd : やなど、さまざまな下位サーバーへの接続を制御するスーパーサーバーです gssftp telnet。
- sendmail : Sendmail メール転送エージェント ()MTA)はデフォルトで有効になっていますが、からの接続のみをリッスンします。 localhost.
- sshd : OpenSSH サーバー。これは、Telnet の安全な代替です。
これらのサービスを実行中のままにするかどうかを決定する際には、一般的な意味を使用し、リスクを避けることが推奨されます。たとえば、プリンターが利用できない場合は、cupsd 実行しなくなります。も同様です portmap。NFSv3 ボリュームをマウントしたり、NIS( ypbind サービス)を使用する場合、無効にする portmap 必要があります。
図2.3 Services Configuration Tool
[D]
特定のサービスの目的が分からない場合は、Service Configuration Tool に説明されている説明フィールドがあり 図2.3「Services Configuration Tool」、追加情報を提供します。
システムの起動時に起動することのできるネットワークサービスだけでは不十分です。開いているポートとリッスンするポートも確認することを推奨します。詳細は「ポートが一覧表示されるかどうかの確認」を参照してください。
2.1.11.3. 安全ではないサービス
可能性として、すべてのネットワークサービスが安全ではない可能性があります。このため、未使用のサービスをオフにすることが非常に重要です。サービスの悪用は定期的に作成およびパッチが適用され、ネットワークサービスに関連するパッケージを定期的に更新することが非常に重要です。詳細は「セキュリティー更新」を参照してください。
一部のネットワークプロトコルは、基本的に他のプロトコルよりも安全ではないものもあります。これには、以下のサービスが含まれます。
- 暗号化されていないネットワーク上でのユーザー名およびパスワードの送信 - Telnet や FTP などの古いプロトコルは認証セッションを暗号化せず、可能な限り使用しないようにしてください。
- 暗号化されていないネットワーク上で機密データを送信 する - 多くのプロトコルは、暗号化されていないネットワーク上でデータを転送します。これらのプロトコルには、Telnet、FTP、HTTP、SMTP などがあります。NFS や SMB などの多くのネットワークファイルシステムも、暗号化されていないネットワーク上で情報を送信します。送信されるデータのタイプを制限するために、これらのプロトコルを使用する場合のユーザーの責任です。リモートメモリーダンプサービスは、ネットワーク経由で暗号化されていない状態でメモリーの内容を netdump送信します。メモリーダンプには、パスワードや、さらにはデータベースエントリー、およびその他の機密情報が含まれることがあります。システムのユーザーに関する情報 rwhod など finger、その他のサービスに通知します。
本質的にセキュリティー保護されていないサービスの例に rloginは、rsh、telnet、およびがあり vsftpdます。
リモートログインおよびシェルプログラム(、rlogin、telnet)はすべて rsh、SSH を利用するために使用しないでください。の詳細は、「セキュリティーの強化通信ツール」 を参照してください sshd。
FTP は、基本的にリモートシェルとしてシステムのセキュリティーに危険が及ぶことはありませんが、問題を回避するために FTP サーバーを慎重に設定し、監視する必要があります。FTP サーバーのセキュリティー保護 「FTP のセキュリティー保護」 に関する詳細は、を参照してください。
注意してファイアウォールの背後で実装すべきサービスには、以下が含まれます。
- finger
- authd (これは、以前の Red Hat Enterprise Linux リリース identd で知られていました。)
- netdump
- netdump-server
- nfs
- rwhod
- sendmail
- smb (Samba)
- yppasswdd
- ypserv
- ypxfrd
ネットワークサービスのセキュリティー保護に関する詳細は、を参照してください 「サーバーセキュリティー」。
次のセクションでは、簡単なファイアウォールを設定するのに使用できるツールを説明します。
2.1.12. 個人ファイアウォール
必要 なネットワークサービスを設定したら、ファイアウォールを実装することが重要です。
重要
必要なサービスを設定し、インターネットに接続する 前 に、または信頼していない他のネットワークに接続する前にファイアウォールを実装します。
ファイアウォールは、ネットワークパケットがシステムのネットワークインターフェースにアクセスするのを防ぎます。ファイアウォールによってブロックされているポートに対する要求が行われると、要求は無視されます。サービスがブロックされたポートのいずれかをリッスンしている場合は、パケットを受信しず、効果的に無効になります。このため、ファイアウォールの設定時に使用されていないポートへのアクセスをブロックし、設定されたサービスが使用するポートへのアクセスをブロックしないようにしてください。
多くのユーザーでは、単純なファイアウォールを設定するのに最適なツールは、Red Hat Enterprise Linux の Firewall Configuration Tool (system-config-firewall)を含むグラフィカルなファイアウォール設定ツールです。このツールは、コントロールパネルインターフェースを使用して汎用ファイアウォールの幅広い iptables ルールを作成します。
このアプリケーションとその利用可能なオプション 「ファイアウォールの基本設定」 の使用方法は、を参照してください。
上級ユーザーおよびサーバー管理者は、でファイアウォールを手動で設定すること iptables が推奨されます。詳細は「ファイアウォール」を参照してください。iptables コマンドに関する包括的 「iptables」 なガイドについては、を参照してください。
2.1.13. セキュリティーの強化通信ツール
インターネットのサイズと好ましいことから、通信の傍受の脅威があります。今後、通信がネットワーク経由で転送される際に、通信を暗号化するツールが開発されています。
Red Hat Enterprise Linux 6 には、ネットワークを通過する際に情報を保護するために、高レベルかつ公開鍵暗号ベースの暗号化アルゴリズムを使用する 2 つの基本ツールが含まれています。
- OpenSSH - ネットワーク通信を暗号化する SSH プロトコルを自由に実装します。
- GNU Privacy Guard(GPG): データを暗号化する PGP(Pretty プライバシー)暗号化アプリケーションのフリー実装。
OpenSSH は、リモートマシンにアクセスして、やなどの古い暗号化されていないサービスに代わるより安全な方法です telnet rsh。OpenSSH には、と呼ばれるネットワークサービス sshd と 3 つのコマンドラインクライアントアプリケーションが含まれます。
- ssh : セキュアなリモートアクセスアクセスクライアント
- scp : セキュアなリモートコピーコマンド
- sftp : 対話式のファイル転送セッションを可能にするセキュアな擬似ソフトp クライアント。
OpenSSH 「セキュアなシェル」 の詳細は、を参照してください。
重要
GPG は、プライベートメール通信を確実にする 1 つの方法です。これは、パブリックネットワークを介して機密データを電子メールで送信し、ハードドライブの機密データを保護するために使用できます。
2.1.14. リムーバブルメディアの読み取り専用マウントの強制
(USB フラッシュディスクなど)リムーバブルメディアの読み取り専用マウントを強制するために、管理者は
udev
ルールを使用してリムーバブルメディアを検出し、blockdev ユーティリティーを使用して読み取り専用にマウントするよう設定できます。Red Hat Enterprise Linux 6.7 以降、ファイルシステムの読み取り専用マウントを強制するために、特別なパラメーターを udisks
ディスクマネージャーに渡すこともできます。
blockdev ユーティリティーをトリガーする
udev
ルールは、物理メディアの読み取り専用マウントに十分なものですが、udisks
パラメーターを使用して、読み書きされたメディアにファイルシステムの読み取り専用マウントを実施することができます。
blockdev を使用した、リムーバブルメディアの読み取り専用マウントの強制
すべてのリムーバブルメディアを読み取り専用にマウントするには、以下の内容が
80-readonly-removables.rules
含まれる /etc/udev/rules.d/
ディレクトリー(例:)に新しい udev
設定ファイルを作成します。
SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"
上記の
udev
ルールは、blockdev ユーティリティーを使用して、新たに接続されたリムーバブルブロック(ストレージ)デバイスを自動的に読み取り専用として設定します。
udisk を使用したファイルシステムの読み取り専用マウントの強制
すべてのファイルシステムを読み取り専用にマウントするには、
udev
で特別な udisks
パラメーターを設定する必要があります。以下の内容を含む /etc/udev/rules.d/
ディレクトリーにという名前の新規 80-udisks.rules
の udev
設定ファイルを作成します(または、すでに存在する場合は以下の行を追加します)。
ENV{UDISKS_MOUNT_OPTIONS}="ro,noexec" ENV{UDISKS_MOUNT_OPTIONS_ALLOW}="noexec,nodev,nosuid,atime,noatime,nodiratime,ro,sync,dirsync"
デフォルトの
80-udisks.rules
ファイルは、/lib/udev/rules.d/
ディレクトリーの udisks パッケージとともにインストールされていることに注意してください。このファイルには上記のルールが含まれていますが、コメントアウトされています。
上記の
udev
ルールは、udisks
ディスクマネージャーに対し、ファイルシステムの読み取り専用マウントのみを許可するよう指示します。また、noexec
パラメーターは、マウントされたファイルシステム上のバイナリーを直接実行するのを禁止します。このポリシーは、実際の物理デバイスがマウントされる方法に関わらず適用されます。つまり、ファイルシステムは、読み取り/書き込みのマウントされたデバイスでも読み取り専用でマウントされます。
新しい udev および udisk 設定の適用
この設定を有効にするには、新しい
udev
ルールを適用する必要があります。udev
サービスは設定ファイルの変更を自動的に検出しますが、新しい設定は既存のデバイスには適用されません。新たに接続されたデバイスのみが、新しい設定の影響を受けます。したがって、接続されているリムーバブルメディアをすべてアンマウントして、新たに設定をプラグインしたときにそれらに適用されるようにする必要があります。
udev
が既存のデバイスにすべてのルールを再適用するよう強制するには、root
で次のコマンドを実行します。
~#
udevadm trigger
udev
が上記のコマンドを使用してすべてのルールを再適用するように強制すると、すでにマウントされているストレージデバイスには影響しないことに注意してください。
udev
がすべてのルールを再読み込みするように強制するには、(何らかの理由で新しいルールが自動的に検出されない場合)、次のコマンドを使用します。
~#
udevadm control --reload