身分證外洩的風險

前言

身處很多事情都可以線上申辦的現在,舉凡像是銀行開戶或者租車之類的都可以線上辦理,而身分的驗證通常是透過上傳身分證影本來進行,但你有沒有想過這些檔案被不負責任的廠商外洩,進而導致身分被冒用呢?

既然要討論冒用,就要先認識身分證的關鍵資訊,究竟我們是怎麼認定一張身分證是有效的呢?

身分證的四個關鍵資訊

  1. 身份證字號
  2. 發證日期
  3. 雷射控管號碼
  4. 空白證流水控管號碼

必要項目

在線上申請或者影印時,「身份證字號」與「發證日期」是要給的,因為這是可以用於民間查驗的資訊。

查驗方法請參考 國民身分證領補換資料查詢作業

需隱藏項目

「雷射控管號碼」與「空白證流水控管號碼」 要藏好,會有法律作用。

在日常申辦過程中,如有要求 「雷射控管號碼」與「空白證流水控管號碼」 影印不得遮擋的狀況,請對方打給戶政事務所。

條碼的內容

身分證上的那個條碼的內容為身分證字號,因此若你需要碼掉身分證字號時,這個條碼也要碼掉。

能怎麼做

作為自然人

  1. 身分證用於證明我們是誰,因此請務必保護好身分證資訊,不要輕易地給他人影印
  2. 若真的需要影印,請遮蔽需要隱藏的項目,避免被製成假的身分證,導致身分被冒用,蒙受損失
  3. 加上 「僅供辦理 OOXXX 使用 」的字樣
  4. 選擇注重資安的企業,而不是找盡理由開脫的企業
  5. 若有發生外洩事件,建議換發身分證

作為公司

  1. 公司若有查驗需求,可以參考 國民身分證真偽辨識資料 查驗身分證正本,非必要不要留存影本
  2. 應提升公司整體的資安意識,實行正確有效的資安措施,選擇有能力且可信任的資安廠商協助,才能夠真正保障消費者與公司資產
  3. 加強資安事件的應變處理能力
  4. 資料庫不要裸奔
  5. 若需要保存影本也請協助隱藏非必要資訊,並進行加密

小提醒

身分證號碼本身應被視為隱私資訊,但不應將其作為秘密來使用,畢竟身份證字號到處都在用,又會像空氣一樣外洩。

解決 Synology Hyper Backup 遠端 NAS 裝置備份無法連線的問題

前言

這幾天在設定 Synology Hyper Backup 遠端備份的時候,發生了網路都通但無法連線的錯誤,因此開始了除錯之旅,在這邊紀錄一下過程與解決辦法。

問題

  1. 遠端 NAS IP 可連線,可 Ping
  2. Synology Hyper Backup 與 Hyper Backup Vault 皆為最新版本 (3.0.2-2531)
  3. 可成功完成身分驗證
  4. 遠端 NAS 的 TCP/6281 可以連線
  5. 點選共用資料夾時發生「無法連線至備份目的地」的錯誤

過程

錄製封包

由於設備在遠端,又無可遠端操作的設備,因此選擇從閘道器 (Gateway) 進行封包錄製,大多數 Gateway 應該都有這個功能,在這裡以我家用的 FortiGate 50E 為例子。

我將 Filter 設定為我 NAS 的 IP 與 TCP/6281 (Hyper Backup) ,來避免錄製到其他封包。

分析封包

透過 Wireshark 分析封包,我從中發現了一個有趣的情況,TCP 連線有成功被建立,但當 TLS 交握才剛進行到 Client Hello 時,TCP 連線就直接被 Server RST 了。

由於在 Client Hello 階段就出事了,因此懷疑是憑證的問題。

更換憑證

我的 NAS 有簽憑證,因此先將 Hyper Backup 的憑證換回自動產生的 Synology.com

然後就好了

更換憑證後, Hyper Backup 就成功建立備份任務了。

結論

不能用 ECC 的憑證,要用 RSA 的。

限制 AWS 帳號必須啟動多因素認證 (Multi Factor Auth, MFA)

前言

越來越多企業將服務甚至內部核心搬上雲端,因此雲端平台的帳號保護就顯得非常重要,保護帳號的原則除了密碼複雜度外,我都會建議要啟動多因素認證 (MFA) 來進一步強化帳號的保護。

今天就來介紹一下該如何透過 IAM Policy 來限制帳號必須啟動 MFA (Multi Factor Auth) 才可以進行操作。

實行方法

IAM Policy Condition

要進行這樣的限制其實非常容易,在 Condition 中加入 aws:MultiFactorAuthPresent 的判斷即可,範例如下:

"Condition": {
    "BoolIfExists": {
        "aws:MultiFactorAuthPresent": "true"
    }
}

反向表達 (Deny)

如果針對每一個資源進行一次 aws:MultiFactorAuthPresent 判斷是非常耗時的,因此我們將條件反過來寫,範例如下:

"Sid": "DenyAllExceptListedIfNoMFA",
    "Effect": "Deny",
    "Resource": "*",
    "Condition": {
        "BoolIfExists": {
            "aws:MultiFactorAuthPresent ": "false"
        }
    }
 }

排除必要操作的限制 (NotAction)

如果我們將所有資源 "Resource": "*" 都加入 aws:MultiFactorAuthPresent,這將會導致沒有 MFA 的帳號無法啟用 MFA。

為了避免上述的問題,我們可以透過 NotAction 反過來排除相關限制,並允許 MFA 相關操作,讓使用者可以正常啟用帳號的 MFA,不會因此陷入死循環中,範例如下:

[
  {
    "Sid": "AllowViewAccountInfo",
    "Effect": "Allow",
    "Action": "iam:ListVirtualMFADevices",
    "Resource": "*"
  },
  {
    "Sid": "AllowManageOwnVirtualMFADevice",
    "Effect": "Allow",
    "Action": [
      "iam:CreateVirtualMFADevice",
      "iam:DeleteVirtualMFADevice"
    ],
    "Resource": "arn:aws:iam::*:mfa/${aws:username}"
  },
  {
    "Sid": "AllowManageOwnUserMFA",
    "Effect": "Allow",
    "Action": [
      "iam:DeactivateMFADevice",
      "iam:EnableMFADevice",
      "iam:GetUser",
      "iam:ListMFADevices",
      "iam:ResyncMFADevice"
    ],
    "Resource": "arn:aws:iam::*:user/${aws:username}"
  },
  {
    "Sid": "DenyAllExceptListedIfNoMFA",
    "Effect": "Deny",
    "NotAction": [
      "iam:GetUser",
      "iam:ListMFADevices",
      "iam:ListVirtualMFADevices",
      "iam:CreateVirtualMFADevice",
      "iam:EnableMFADevice",
      "iam:ResyncMFADevice",
      "sts:GetSessionToken",
      "iam:ChangePassword"
    ],
    "Resource": "*",
    "Condition": {
      "BoolIfExists": {
        "aws:MultiFactorAuthPresent": "false"
      }
    }
  }
]

最後一步

我們只需要將 Policy 套用到使用者身上,就可以達到強制啟動 MFA 才可以進行資源操作的目的。

備註

  1. aws:MultiFactorAuthPresent 只有在使用者登入的時候才會更新,也就是設定完 MFA 要重新登入一次
  2. 上方的範例要求 MFA 的名稱要跟使用者名稱相同,可以透過修改 arn:aws:iam::*:mfa/${aws:username}arn:aws:iam::*:mfa/${aws:username}-*,讓使用者可以在名稱後方加上 - 來加上自己的標註資訊