Türchen #18: Security-Groups mit InSpec checken
Von Michael Krieg am 18. Dezember 2019
Ein Blick in unseren Werkzeugkasten
Wer von Euch das “Infrastructure-As-Code”-Prinzip lebt, kennt das: einige Werkzeuge sind während der täglichen Arbeit unverzichtbar geworden:
Während Terraform für einen konsistenten Stand unserer Cloud-Infrastruktur sorgt, Ansible beim Betanken neuer Linux-Instanzen hilft und Jenkins alle Fäden zusammenhält, nutzen wir auch InSpec, um kontinuierliche Tests durchführen zu können. Eifrige Leser unseres Adventsblogs erinnern sich bestimmt auch daran, wie wir mit InSpec unsere S3-Buckets auf Herz und Nieren prüften.
Zur Sache!
Der CIS-Benchmark für AWS gibt einige Empfehlungen und Handlungsanweisungen, um Euren Account sicher aufzusetzen und zu betreiben. Unter anderen wird darin empfohlen, SSH Zugriffe nicht uneingeschränkt von jeder Quelle aus dem Internet zuzulassen. InSpec bietet diverse AWS Cloud-Ressourcen, unter anderen lassen sich Security-Groups inspizieren.
Das folgende Code-Beispiel illustriert, wie wir sämtliche Security-Groups, die eingehende SSH-Verbindungen auf Port 22 zulassen, überprüfen können:
control 'cis-amazon-web-services-foundation-benchmark-4.1' do
impact 1.0
title "Ensure no security groups allow ingress from 0.0.0.0/0 to port 22"
desc "It is recommended that no security group allows unrestricted ingress access to port 22."
tag cis: 'CIS_Amazon_Web_Services_Foundations_Benchmark:1.2'
tag level: 1
sg_gids = aws_security_groups.group_ids
sg_gids.each do |gid|
describe aws_security_group(id: gid) do
it { should_not allow_in(port: 22, ipv4_range: '0.0.0.0/0') }
end
end
end
Übrigens: unser vollständige InSpec Profile findet Ihr auf Github. Wir freuen uns natürlich über rege Contribution, denn an dieser Stelle gibt es noch viel zu tun!