ラベル Security の投稿を表示しています。 すべての投稿を表示
ラベル Security の投稿を表示しています。 すべての投稿を表示

2022年1月15日土曜日

Pod Security Policies(廃止) ->PodSecurity

 参照:

https://kubernetes.io/docs/concepts/security/pod-security-admission/

https://kubernetes.io/blog/2021/12/09/pod-security-admission-beta/

https://qiita.com/uesyn/items/cf47e12fba5e5c5ea25f


機能:

クラスタ(NameSpace)の範囲でセキュリティを適応する機能として

Pod Security Policiesがあるがver 1.25で廃止されてPodSecurityに変更される


ポイント:

以下のようにNameSpaceにラベルにルールを記載することでセキュリティが追加される。

(NameSpaceのデフォの作成時点では、関連したラベルがないのでセキュティの設定はされてない)



ポリシーは、ラベルを介して名前空間に適用されます。これらのラベルは次のとおりです。

例)

pod-security.kubernetes.io/<MODE(enforce | audit | worn)>: <LEVEL(privileged | baseline | restricted)> 

pod-security.kubernetes.io/<MODE(enforce | audit | worn)>-version: <VERSION>(オプション、デフォルトは最新)


<MODE>

enforce:ポリシー違反により、Podは拒否されます。

audit     :ポリシー違反は、監査ログに記録されたイベントへの監査注釈の追加をトリガーしますが、それ以外の場合は許可されます。

warn     :ポリシー違反はユーザー向けの警告をトリガーしますが、それ以外の場合は許可されます。


<LEVEL>

privileged   : オープンで無制限

baseline     : 制限を最小限に抑えながら、既知の特権昇格をカバーします

restricted   : 高度に制限され、既知および未知の特権エスカレーションに対して強化されます。



検証:

公式内容を参考に、コマンドベースでの検証を行ってみる。


1)検証用のnamespaceを作成する。

kubectl create namespace pod-security-test


2)ラベリングを行う。

(以下のラベルは、Podの作成を拒否することを表している。)

kubectl label namespace pod-security-test pod-security.kubernetes.io/enforce=restricted


3)対象のNameSpaceにラベルが付与されたとを確認

















4)試しに、指定したNameSpaceにデプロイを行うと。

kubectl -n  pod-security-test run test --dry-run=server --image=busybox --privileged



5)以下、メッセージが出て作成が失敗に終わります。




6)ラベルの上書きを行ってみる。

kubectl label --overwrite ns pod-security-test \

  pod-security.kubernetes.io/enforce=privileged \

  pod-security.kubernetes.io/warn=baseline \

  pod-security.kubernetes.io/audit=baseline



7)再度、デプロイを実施する。

以下、デプロイが出来てることが把握できる。






以下のようにマニュフェストの作成でも実施可能である。







PodSecurityContext(アクセス権限付与:fsGroup)

PodSecurityContext:
Podに対するセキュリティ設定になる。


用途:

fsGroupを追加することで、作成したボリュームに

グループ権限を付与することができる。



検証:

以下、作成したボリュームにグループの権限を付与させてみる。



























デプロイ後に、作成したVolumeのパス(/cache)に、グループの権限(1001)が付与されていることが確認できる。



PodSecurityContext(root権限防止:runAsNonRoot)

PodSecurityContext:
Podに対するセキュリティ設定になる。


用途:

runAsNonRootを利用することで、root権限でコンテナの立ち上げを

防止することができる。



検証:

1)以下、デフォルトでroot権限で立ち上げのdocker imageに対して

runAsNonRootを利用してみる。


















2)以下、デプロイを行ってみると root起動防止の状態なので

立ち上げが失敗していることが把握できる。



SecurityContext(runAsUser:実行権限の変更)

SecurityContext:
個々のコンテナに対してセキュリティの制限を行う


runAsUser:

“runAsUser“を追加することで実行権限の変更ができる。



検証:

以下は、root権限にした場合になる。
















実際に、実行後にPodにログインしてみると、root権限になっていることが把握できる。

























次に、一般ユーザに変えてデプロイしてみる。
















以下、一般ユーザになっていることが把握できる。



























2020年5月21日木曜日

AWS セキュリティスキャナー

ざっくり説明:
ペネトレテストを行ってくれる。

解説:
AWS がお客様のセキュリティテストに関連するアクティビティについての不正使用レポートを受け取った場合
レポートを転送してくれるらしい。



2020年5月20日水曜日

AWS WAS(設定メモ)

PHPとMySQLのACLを設定する











Api-gatewayからも上記で作成したAWS WAF が選択可能となる



アクセス遮断_DDoS 攻撃対策など

セキュリティグループのインバウンドに対象のIPを記載する。
   
①ネットワークACLを選択する。
②対象のVPCを選択する。
③インバウンドルールを選択
④インバウンドのルールの編集を選択

⑤ルールの追加を選択
⑥以下のように設定を行いました。
- ルール:ナンバリング
- タイプ:すべてのトラフィック
- プロトコル:すべて
- ポート範囲:すべて
- 送信元:ブロック対象のIP
- 許可/拒否:DENY
⑦保存を押す。



怪しい(海外からの)アクセス対応

実施基準:
①急激なCPU使用率100%であること
②topコマンドを入力すると上記にApache/nginx関連が占めていること
③通常混雑してない時間帯であること


1)対象のアクセスログを以下の方法で接続先のIPを抽出して上位1から3までを調査する。
cat ssl_access_log | cut -d " " -f 1 | sort | uniq -c |sort -r

2)以下で各種IPを調べる。

3)上記から調べた、海外からの怪しいIPについては
インバウンドリストに記載する。


2020年5月19日火曜日

CloudTrail(設定メモ)

Cloudtrail ログイン通知について
(lambda ->slack)

参照先:


①以下、設定方法です。(省略)

②保存先をS3にする。(新規作成にする)
③作成を押す

追跡情報

Lambda + SSM Run Commandで、数十台のEC2のuserdata結果を一括確認する

コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...