security
Dos攻撃
- Denial of Service attack/サービス拒否攻撃
- ウェブサイトやサーバーに対して過剰なアクセスやデータを送付するサイバー攻撃
DDos攻撃
- Distributed Denial of Service
- 複数のコンピューターから一斉にサイバー(Dos)攻撃
SYNフラッド
- TCPの3ウェイハンドシェイクを悪用し、大量のSYNパケットを送り付けて半開状態を飽和させるDDoS攻撃
- 攻撃者はIPを偽装することもあるが、基本的に“ターゲット ⇔ 攻撃者”の1対1通信で完結する
UDPリフレクション攻撃
- ステートレスなUDPを利用し、第三者サーバ(リフレクタ)へ送信元IPを被害者に偽装した小さな要求を送り付ける。リフレクタは巨大な応答を被害者へ反射し、帯域を増幅(amplification)させる
ブルートフォースアタック(総当たり攻撃)
全ての可能な組み合わせを総当たりで試し、正しい組み合わせを見つけることで、不正なアクセスを行うこと
# dir探索を目的とするオプション
# -u は任意のIPアドレスやホストを指定する
gobuster dir -u 0.0.0.x -w ワードリストパス
XSS
- Cross-Site Scripting(クロスサイト・スクリプティング)
- ユーザーからの入力やURLパラメータなどの不正なデータが、適切にサニタイズ(無害化)されずにWebページに反映されることで、悪意あるスクリプト(主にjavascript)が実行される
- 攻撃の種類
- Stored XSS(永続的XSS)
- 悪意あるスクリプトがデータベースや掲示板、コメント欄などに保存され、複数のユーザーに配信されるタイプ
- Reflected XSS(反射型XSS)
- 悪意あるスクリプトがリクエストに含まれ、サーバーがそのままレスポンスとして返すタイプ
- DOM-based XSS
- クライアントサイドのJavaScriptが、ユーザー入力を直接DOMに反映する際に発生するタイプ
- Stored XSS(永続的XSS)
- 対策
- 入力のサニタイズとエスケープ
- ユーザーからの入力を適切に検証・無害化する
- Content Security Policy(CSP)の導入
- 外部スクリプトの読み込みを制限する
- HttpOnly 属性の付与
- クッキーへのアクセスをJavaScriptから禁止することでセッションハイジャックを防止する
- 入力のサニタイズとエスケープ
CSRF
- Cross-Site Request Forgeries(クロスサイト・リクエスト・フォージェリ)
- 偽造サイトから情報を抜き出す
- そのページ内に埋め込まれたフォームやリンクから、ユーザーが知らない間に送金や設定変更などの操作が実行される
- 対策
- CSRFトークンの利用
- サーバー側で生成した一意のトークンをフォームに埋め込み、リクエスト時にトークンを検証する
- Refererヘッダーのチェック
- リクエスト元が正しいサイトかどうかを確認する
- SameSite属性付きクッキー
- クッキーの送信を制限して、外部サイトからのリクエストでクッキーが送信されないようにする
- CSRFトークンの利用
SQLインジェクション
- ユーザーからの入力をそのままSQL文に埋め込むことで、データベースに対して不正な操作を行う攻撃
証明書
- TLSとは?
- Transport Layer Security が正式名称
- TLSはSSLよりも新しく安全なバージョン
- SSLプロトコルのセキュリティ脆弱性が修正されている
- TLSはSSLを完全に置き換えている
- SSL証明書と一般的には言っても実際には「SSL/TLS証明書」
- SSLが廃止されてもSSL証明書という名称が残っている理由は、単に昔の名残
SSLバージョン名 | リリース日 | 概要 | TLSバージョン名 | リリース日 | 概要 |
---|---|---|---|---|---|
1.0 | X | リリースされず | 1.0 | 1999年 | SSL 3.0のアップグレードとしてリリース。2020年に廃止予定 |
2.0 | 1995年 | 既知のセキュリティホールが原因で2011年に廃止 | 1.1 | 2006年 | 2020年に廃止予定 |
3.0 | 1996年 | 既知のセキュリティホールが原因で2015年に廃止 | 1.2 | 2008年 | |
X | X | X | 1.3 | 2018年 |
認証
認証には多数の種類がある
- Basic認証(SSL/TLS推奨)
- ユーザー名とパスワードをBase64でエンコードして送信する
- 通信内容が平文で送信されるため、セキュリティが低い
- Digest認証
- Basic認証の改良版
- パスワードを平文で送信するのではなく、ハッシュ化して送信する
- セッション認証
- クッキーにセッションIDを保存し、サーバー側でセッションIDを管理する
- セッションIDが盗まれると、セッションハイジャックが発生する
- データベースを利用した認証
- ユーザー情報をデータベースに保存し、認証時にデータベースと照合する
- JWT(Json Web Token)認証
- OAuth2.0認証(SNS認証)
- サードパーティーのアカウントを利用して認証する
- ユーザー情報をサードパーティーに委託するため、セキュリティが低い
- OpenID Connect
- OAuth2.0をベースにした認証プロトコル
- 認証と認可を分離している
- 2段階認証
- パスワードに加えて、SMSやメールで送られてくる認証コードを入力する
- SAML認証
- シングルサインオン(SSO)のプロトコル
- 複数のサービスに一度のログインでアクセスできる