Estimated time: 20 min
We deployed security alerts in the first module. While we were implementing the use cases, some of them have triggered the alerts and now we can explore them.
Review alerts manifests.
Navigate to demo/50-alerts
path and review YAML manifests that represent alerts definitions. Each file containes an alert template and alert definition. Alerts templates can be used to quickly create an alert definition in the UI.
View triggered alerts.
Open Alerts
view to see all triggered alerts in the cluster. Review the generated alerts.
You can also review the alerts configuration and templates by navigating to alerts configuration in the top right corner.
Refer to packet capture documentation for more details about this capability.
Configure packet capture.
Navigate to demo/60-packet-capture
and review YAML manifests that represent packet capture definition. Each packet capture is configured by deploing a PacketCapture
resource that targets endpoints using selector
and labels
.
Deploy packet capture definition to capture packets for dev/nginx
pods.
kubectl apply -f demo/60-packet-capture/nginx-pcap.yaml
Once the
PacketCapture
resource is deployed, Calico starts capturing packets for all endpoints configured in theselector
field.
Install calicoctl
CLI
The easiest way to retrieve captured *.pcap
files is to use calicoctl CLI.
CALICO_VERSION=$(kubectl get clusterinformation default -ojsonpath='{.spec.cnxVersion}')
# download and configure calicoctl
curl -o calicoctl -O -L https://docs.tigera.io/download/binaries/${CALICO_VERSION}/calicoctl
chmod +x calicoctl
sudo mv calicoctl /usr/local/bin/
calicoctl version
Fetch and review captured payload.
The captured
*.pcap
files are stored on the hosts where pods are running at the time thePacketCapture
resource is active.
Retrieve captured *.pcap
files and review the content.
# get pcap files
calicoctl captured-packets copy nginx-pcap --namespace dev
ls dev-nginx*
# view *.pcap content
tcpdump -Ar $(ls dev-* | head -1)
tcpdump -Xr $(ls dev-* | head -1)
Clean up packet capture resource
If a packet capture resource does not have endTime
field, the capture would be continuous until the resource is removed.
Stop packet capture by removing the PacketCapture
resource.
kubectl delete -f demo/60-packet-capture/nginx-pcap.yaml
Note Packet Captures can also be created and scheduled directly from the Calico UI. Follow the Service Graph method for this alternative procedure.
Refer to deep packet inspection documentation for more details about this capability.
Configure deep packet inspection (DPI) resource.
Deploy DPI resource to allow Calico inspect packets bound for dev/nginx
pods.
kubectl apply -f demo/70-deep-packet-inspection/nginx-dpi.yaml
Once the
DeepPacketInspection
resource is deployed, Calico configures DPI controller to scan packets for endpoints matching theselector
field configuration.
Wait until all DPI pods become Ready
watch kubectl get po -n tigera-dpi
Simulate malicious request and review alerts.
Query dev/nginx
application with payload that triggers a Snort rule alert.
kubectl -n dev exec -t centos -- sh -c "curl http://nginx-svc/secid_canceltoken.cgi -H 'X-CMD: Test' -H 'X-KEY: Test' -XPOST"
Navigate to the Alerts view in Tigera UI and review alerts triggered by DPI controller. Calico DPI controller uses Snort signatures to perform DPI checks.