この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
オペレーション部 江口です。 このところ「insightwatchのセキュリティチェックでオールグリーンを目指す」という取り組みをずっとやっています。 今回でシリーズの第4回です。
第1回:
第2回:
第3回:
ここまでCISベンチマークの対処に取り組み、前回までで「CIS 3. Monitoring」までの対処を完了しています。 CISの残りは「4. Networking」だけとなりました。ゴールが近いですね!
最初のチェック結果
対処前のCIS 4. Networkingのチェック結果は下記の通りです。見ての通り項目は4つのみ、指摘も4.3と4.4の2つだけでした。
以下、指摘事項への対処です。
CIS 4.3 defaultセキュリティグループが全ての通信を許可していないこと
defaultセキュリティグループにはルールを設定しない、というポリシーです。 それでは利用できないではないか、と思うかもしれませんが、そもそもdefaultセキュリティグループは利用すべきではなく、必要な通信を許可したセキュリティグループをそれぞれ設定すべき、という考えのようです。間違ってdefaultセキュリティグループをアタッチしてしまった時に意図しない通信が行われないよう、ルールを削除して通信全拒否の状態にしておきましょう、ということですね。
さて、問題は全リージョンのdefaultセキュリティグループでインバウンドのルールが標準で設定されていたということです。おかげで修正が必要な場所としてがっつり全リージョンが出てきました・・・
ということで、全リージョンのdefaultセキュリティグループのルールをがっつり消すPythonスクリプトを作成して一気に削除しました。 容赦なくインバウンド/アウトバウンドの全ルールを削除するので、実行する時はくれぐれもどこかのEC2インスタンスにアタッチされていないか確認をお願いします。
#!/usr/local/bin/python3
import boto3
import json
target_group_name = 'default' #設定を変更するセキュリティグループ
#リージョン情報取得
def get_region_list():
client = boto3.client('ec2')
return [region['RegionName'] for region in client.describe_regions()['Regions']]
#ルール削除処理
def delete_default_sg_rules(region):
ec2 = boto3.client('ec2', region_name=region)
#セキュリティグループの情報の取得
sgs = ec2.describe_security_groups()['SecurityGroups']
#上記で取得したデータから、ターゲットのセキュリティグループの情報をフィルタ
sgs = list(filter(lambda sgs: sgs['GroupName'] == target_group_name, sgs))[0]
ingress_rules = (sgs['IpPermissions']) #インバウンドルールの情報
egress_rules = (sgs['IpPermissionsEgress']) #アウトバウンドルールの情報
#インバウンドルールの削除
for rule in ingress_rules:
response = ec2.revoke_security_group_ingress(
GroupId=sgs['GroupId'],
GroupName=sgs['GroupName'],
IpPermissions=[rule]
)
#アウトバウンドルールの削除
for rule in egress_rules:
response = ec2.revoke_security_group_egress(
GroupId=sgs['GroupId'],
IpPermissions=[rule]
)
# main
if __name__ == "__main__":
regions = get_region_list()
for region in regions:
print(region)
delete_default_sg_rules(region)
CIS 4.4 必要最低限のVPCピアリング用のルーティングを追加すること
VPCピアリングを設定した際、最低限の通信のみ許可するように(例えば不要なサブネットやホストの通信は拒否するように)ルーティングを設定しましょう、というポリシーです。 この項目は、ユーザが自分で確認・評価を行って評価結果を登録する「マニュアル評価項目」となっています。
マニュアル評価項目: https://insightwatch.zendesk.com/hc/ja/articles/360021813891
この環境ではVPCピアリング自体を行なっていないので、このポリシーは該当しません。念の為ルートテーブルに余計なポリシーが含まれていないかを確認した後、「評価済み」ということで登録を実施しました。
これで、次回のチェック時はこの項目は「正常」として評価されます。
ここまでの結果
ここまでの結果で、CISベンチマークの指摘事項はなくなり、チェック結果の画面で「異常は検出されませんでした」というメッセージを見ることができました!
というわけでCISベンチマークへの対処は今回で完了となります。 しかしinsightwatchでチェックできるのは、このCISベンチマーク以外にも「AWS Checklist」と「IAM Best Practice」があります。 それらでまだ「重要」の指摘が14残っている状態となっています。
引き続きこれらの対処を行なっていこうと思います。
以上、「insightwatchのセキュリティチェックでオールグリーンを目指す」シリーズの第4回でした。