1.サーバ証明書がブラウザで信頼する証明書から発行されていること
2.サーバ証明書が有効期間内であり、失効していないこと
TAC P.487
sudoコマンドの設定ファイルで、tarコマンドのオプションを受付ないよう設定できる
1.パス
```
/etc/sudoers
```
2.できること
誰に、どのサーバで、誰の代わりに、何を
許可するのか個別に指定できる
3.構文
```
<ユーザー> <ホスト>=(<実行ユーザー>) <コマンド>
```
4.具体例
```
# rootユーザーに全ての権限を与える
root ALL=(ALL:ALL) ALL
# wheelグループのユーザーにパスワードなしで全ての権限を与える
%wheel ALL=(ALL:ALL) NOPASSWD: ALL
# bobユーザーにaliceとして特定のコマンドを実行する権限を与える
bob ALL=(alice) /bin/ls, /bin/cat
# developerグループにapacheの再起動権限を与える
%developer ALL=(root) /usr/sbin/service apache2 restart
# janeユーザーに/home/jane/scripts/内のスクリプト実行権限を与える
jane ALL=(ALL) /home/jane/scripts/*
```
WAF(Web Application Firewall)が正規化プロセスを行う主な目的は、まさにWAFルールを効果的に適用できるようにするためです。以下に詳細を説明します:
1. 一貫性の確保:
- 正規化により、異なる形式で表現された同じ内容のリクエストが統一された形式に変換されます。
- これにより、WAFルールを一貫して適用できるようになります。
2. 検出精度の向上:
- エンコードされた攻撃や難読化された攻撃を、正規化によって標準的な形式に変換することで、WAFルールがより正確に検出できるようになります。
3. ルールの簡素化:
- 正規化により、WAFルールを単純化できます。例えば、大文字小文字の違いを考慮する必要がなくなります。
4. バイパス手法の防止:
- 攻撃者がWAFルールをバイパスするために使用する可能性のある様々なエンコーディングや表現方法を、正規化によって標準形式に戻すことができます。
5. 誤検知の削減:
- 正規化により、無害なリクエストが攻撃として誤って検出されるリスクを低減できます。
具体例:
1. XSS攻撃の検出:
- 正規化前: `%3Cscript%3Ealert('XSS')%3C/script%3E`
- 正規化後: `<script>alert('XSS')</script>`
- 結果: 正規化により、URLエンコードされたXSS攻撃をプレーンテキストとして検出できるようになります。
2. SQLインジェクション攻撃の検出:
- 正規化前: `UnIoN%20SeLeCt`
- 正規化後: `union select`
- 結果: 大文字小文字の違いやURLエンコーディングを正規化することで、SQLインジェクション攻撃のパターンをより簡単に検出できます。
3. ディレクトリトラバーサル攻撃の検出:
- 正規化前: `/images/../../etc/passwd`
- 正規化後: `/etc/passwd`
- 結果: パスの正規化により、ディレクトリトラバーサル攻撃をより確実に検出できます。
このように、WAFは正規化プロセスを通じて入力データを標準化し、その後で正規化されたデータに対してWAFルールを適用します。これにより、様々な形式の攻撃を効果的に検出し、ブロックすることが可能になります。正規化はWAFの重要な前処理段階であり、WAFの有効性と効率性を大きく向上させる役割を果たしています。
ブラウザのURLエンコードとデコードの流れを、ユーザーの操作から始まり、サーバーへのリクエスト、そしてレスポンスの表示まで順を追って説明します。
1. ユーザー入力:
- ユーザーがブラウザのアドレスバーにURLを入力するか、ウェブページ上のリンクをクリックします。
2. URLの解析:
- ブラウザはURLを解析し、スキーム(http:// など)、ドメイン、パス、クエリパラメータなどの各部分を識別します。
3. 自動エンコード:
- ユーザーが直接入力した場合、ブラウザは特殊文字や非ASCII文字を自動的にエンコードします。
- 例: スペースは "%20" に、"?" は "%3F" に変換されます。
4. フォーム送信時のエンコード:
- ユーザーがフォームを送信する場合、ブラウザはフォームデータを自動的にエンコードします。
- 例: application/x-www-form-urlencoded 形式では、"key=value" のペアがエンコードされ、"&" で連結されます。
5. リクエストの送信:
- ブラウザはエンコードされたURLを使用してHTTPリクエストを作成し、サーバーに送信します。
6. サーバーサイドでのデコード:
- サーバーは受信したリクエストのURLをデコードし、必要な情報を抽出します。
- 注意: この段階でのデコードはサーバーの責任であり、ブラウザは関与しません。
7. サーバーからのレスポンス:
- サーバーは処理結果をHTTPレスポンスとしてブラウザに送り返します。
8. ブラウザでのレスポンス処理:
- ブラウザはレスポンスを受け取り、HTMLを解析します。
9. URLの表示:
- ブラウザはアドレスバーに表示するURLを適切にデコードし、人間が読みやすい形式で表示します。
- 例: "https://example.com/search?q=Hello%20World" は、アドレスバーでは "https://example.com/search?q=Hello World" と表示されることがあります。
10. リンクの処理:
- ページ内のリンク(<a> タグのhref属性)は、ブラウザによって自動的にデコードされて表示されます。
- ユーザーがリンクをクリックすると、プロセスは再び1に戻ります。
11. JavaScript操作:
- JavaScriptでURLを操作する場合、`encodeURIComponent()` や `decodeURIComponent()` 関数を使用してエンコード/デコードを行います。
- 例:
```javascript
let encoded = encodeURIComponent("Hello World!");
let decoded = decodeURIComponent(encoded);
```
12. ヒストリーAPI:
- ブラウザのヒストリーAPIを使用してURLを変更する場合(例: SPA)、必要に応じてエンコード/デコードを行います。
注意点:
- ブラウザは基本的にユーザーの利便性を考慮してエンコード/デコードを行いますが、セキュリティ上の理由から、スクリプトの実行につながる可能性のある文字(<, >, ", ' など)のデコードには特に注意を払います。
- 異なるブラウザで若干の挙動の違いがある場合があります。
- CORS(クロスオリジンリソース共有)のような高度なシナリオでは、追加のエンコード/デコードの考慮が必要になることがあります。
このプロセスを理解することで、WAFやWebアプリケーションのセキュリティ設定をより適切に行うことができます。特に、ユーザー入力の処理とサーバーサイドでの適切なデコード/エンコードの重要性が明確になります。
エンコードとデコードの違いについて、混乱を解消し、覚えやすくするためのポイントを説明します。
# エンコードとデコードの違いと覚え方
## 基本概念
```
[生のデータ] <---デコード--- [エンコードされたデータ]
| ^
| |
+------------エンコード----------+
```
- エンコード:データを特定の形式に変換すること
- デコード:エンコードされたデータを元の形式に戻すこと
## 覚え方のコツ
1. 「封筒」の比喩:
- エンコード = 手紙を封筒に入れる(保護・転送のため)
- デコード = 封筒から手紙を取り出す(読むため)
2. 目的を意識する:
- エンコード:安全な転送、保存、処理のため
- デコード:人間や特定のシステムが理解できるようにするため
3. 方向性を覚える:
- エンコード:人間可読 → 機械可読
- デコード:機械可読 → 人間可読
4. 用途別の例:
- URL: スペース → %20 (エンコード)
- HTML: < → < (エンコード)
- Base64: バイナリデータ → テキスト(エンコード)
5. プロセスの順序:
入力 → エンコード → 転送 → デコード → 処理/表示
覚えるポイント:エンコードは「隠す/変換する」、デコードは「明らかにする/戻す」
```
この説明を踏まえて、あなたの質問に直接答えます:
1. エンコードはサーバーが読むため、デコードは人間のためですか?
これは完全に正確ではありません。エンコードとデコードの目的はもう少し複雑です:
- エンコードの目的:
1. データを安全に転送するため(特殊文字や非ASCII文字を扱えるようにする)
2. データを特定のシステムや規格に適合させるため
3. データを圧縮したり、暗号化したりするため
- デコードの目的:
1. エンコードされたデータを元の形式に戻すため
2. 人間が読めるようにするため(例:ブラウザのアドレスバー表示)
3. システムが処理できる形式に戻すため(例:サーバーがURLパラメータを解析する)
2. エンコードとデコードの違いについて、覚えるコツ:
- 方向性を意識する:
エンコード:元のデータ → 特定の形式
デコード:特定の形式 → 元のデータ
- プロセスの順序を覚える:
入力 → エンコード → 転送 → デコード → 処理/表示
- 日常生活の比喩を使う:
エンコード = 荷物を箱に詰める(安全に運ぶため)
デコード = 箱から荷物を取り出す(使用するため)
- 用途別の具体例を覚える:
URL エンコード:スペース → %20
HTML エンティティ:< → <
- 目的を関連付ける:
エンコード:保護、転送、規格適合
デコード:理解、処理、表示
これらのポイントを意識することで、エンコードとデコードの概念がより明確になり、覚えやすくなるでしょう。実際の使用場面を想像しながら理解を深めることも効果的です。
問13関連 デジタルフォレンジックスとは?
◾️デジタルフォレンジックス(Digital Forensics):
・目的: デジタルフォレンジックスは、デジタルデータや情報を収集し、分析して、法的な調査や証拠の収集に利用することを目的としています。主に犯罪捜査や法的な紛争解決において使用されます。
・アプローチ: デジタルフォレンジックスは、デジタル環境におけるデータの回復、解析、検証などのプロセスを含みます。これには、コンピュータのハードドライブやメモリ、ネットワーク通信などからデータを抽出し、状況を再構築することが含まれます。
問16 SMTP-AUTHの特徴は?
・SMTP-AUTHを使用するには、クライアント側で認証情報(ユーザー名とパスワード)の設定・認証を行う。これにより、正当なユーザーのみがメールを送信できるようになります。
問17 インターネットサービスプロバイダ(ISP)が,スパムメール対策として導入するIP25Bに該当するものはどれか。
・OP25Bが不審なメール送信を拒否するのに対し、IP25Bでは不審な送信元からのメール受信を拒否する。
IP25B(メール着信防止)(OCN迷惑メール対策) | OCN
OP25B(メール送信規制)(OCN迷惑メール対策) | OCN
--抜枠--
OP25B(アウトバンドポート25ブロック)を実施しているOCN以外のプロバイダーの接続回線より、OCNのメールサーバーを利用してメールを送信する場合に、SMTPS-AUTH(465番)を使用してメールの送信が可能です。
--------
問18 PCからDHCPサーバに対する最初の問合せの宛先IPアドレスとして,適切なものはどれか
・DHCPDISCOVERメッセージは、Dynamic Host Configuration Protocol(DHCP)において、ネットワーク上で利用可能なIPアドレスを探すためにクライアントがブロードキャストで送信するメッセージです
・送信元IPアドレスは0.0.0.0で、宛先IPアドレスは "255.255.255.255"です。
問20関連 スパニングツリープロトコル
スパニングツリープロトコル、動作の仕組み:ネットワークの基礎を学習する CCNA対策講座(18)(1/2 ページ) - @IT
--抜枠--
・ホストからARPリクエストが送信されたとします。ARPリクエストはブロードキャストフレームとしてスイッチに届きます。受信したスイッチは受信ポート以外の全ポートあてにフラッディングをします。
・このような状況を「ブロードキャストストーム」といいます(図1)。ブロードキャストストームが発生すると正常な通信ができなくなります。
・スパニングツリープロトコルによって物理的には冗長構成を維持し、論理的にどこかのポートをブロック状態にしてブロードキャストフレームがループしないようにします
---------
問21関連 DBMSがトランザクションのコミット処理完了とみなすタイミングは?
・ログファイルの書き出し完了時点
(RDBMSがCOMMITを指示すると,メモリー・バッファ内に作成されている,そのトランザクションのログ・データをトランザクションログ・ファイルに書き込む)
↓以下がわかりやすい
問6関連 NOTICEとNICTとは?
NOTICE|サイバー攻撃に悪用されるおそれのあるIoT機器の調査、注意喚起を行うプロジェクト
--抜枠--
NOTICEは、総務省、国立研究開発法人情報通信研究機構(NICT)及びインターネットプロバイダが連携し、IoT機器へのアクセスによる、サイバー攻撃に悪用されるおそれのある機器の調査及び当該機器の利用者への注意喚起を行う取組です。
---------
問9 3Dセキュアとは?
PINとは別物で、クレジット発行会社に登録済みのパスワードで本人認証を行う。
--抜枠--
「本人認証サービス(3Dセキュア)」とは、インターネットショッピングの際、クレジットカード情報だけでなく本人認証パスワードによりご本人様確認をおこなうことで、不正使用を未然に防止するサービスです。
----------
なお、楽天カードだと2023年10月より以下のように認証方法が変更されているのでワンタイムパスワードが主流か。
--抜枠--
<変更前>
楽天e-NAVIにて会員様が設定された固定のパスワードでの認証
<変更後>
ご登録中の携帯電話番号宛に届くワンタイムパスワードでの認証
----------
問10インターネットバンキングの利用時に被害をもたらすMITB(Man in the Browser)攻撃に有効な対策はどれか。
◾️MITB攻撃とMITMMan-in-the-Middle)攻撃の違いは?
・MITB攻撃->被害者のブラウザ内(つまりクライアント内)で動作する悪意のあるコードを利用して、ユーザーの行動を盗聴または改ざんします。
・MitM攻撃->通信経路全体を攻撃者が傍受または制御することで、通信内容を盗み見たり改ざんしたりします。
◾️トランザクション署名とは?
ユーザーがオンラインで行う取引やアクションに対して、サーバー側で生成された署名がクライアント(ユーザー)によって確認・承認されます。
◾️トランザクション署名のメリットは?
クライアントPCがウィルスに汚染され、MITB(Man in the browser)攻撃が行われた際にも、入力情報の正当性を認証サーバ側で検証し、リスクを低減することが可能となる。
https://ftsafe.co.jp/products/otp/c300otp/
◾️トランザクション署名の処理の流れは?
トランザクション署名の基本的な仕組みは以下の通りです:
1.サーバー側の署名生成: サーバーは、ユーザーの要求に対して署名を生成します。これには、取引の詳細や一意のトークンなどが含まれます。
2.クライアントへの署名送信: サーバーが生成した署名は、セキュアな手段でクライアントに送信されます。通常、この署名はセッション中に一意の方法で関連付けられています。
3.クライアントによる確認・承認: クライアント(ユーザー)は、サーバーから受け取った署名を確認し、取引内容やアクションに同意するために署名を承認します。これは通常、クライアントが保有するデバイス(スマートフォン、トークンデバイスなど)を介して行われます。
4.署名の検証: サーバーはクライアントが承認した署名を受け取り、サーバー側でもその署名を検証します。署名が有効であれば、取引やアクションは正当化されます。
トランザクション署名の導入により、MITB攻撃が成功しても攻撃者が取引内容を改ざんすることが難しくなります。
↓以下は別の記事で
問13 デジタルフォレンジックス
問16 SMTP-AUTH
問17 IP25B/OP25B
IP25B(メール着信防止)(OCN迷惑メール対策) | OCN
OP25B(メール送信規制)(OCN迷惑メール対策) | OCN
問18 DHCPDISCOVER
問20 スパニングツリープロトコル
問21 DBMSのコミットのタイミング