Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Syslog-Ingestion einrichten
In diesem Abschnitt werden Sie Schritt für Schritt durch die Einrichtung der Syslog-Erfassung in Logs geführt. CloudWatch Sie erstellen einen VPC-Endpunkt für den Syslog-Dienst, eine Protokollgruppe zum Empfangen der Nachrichten, eine Ressourcenrichtlinie zur Autorisierung des Syslog-Dienstes und eine Syslog-Konfiguration, die den Verkehr von Ihrem VPC-Endpunkt zu Ihrer Protokollgruppe weiterleitet.
Sie können all diese Schritte mit der Management Console, den oder den AWS SDKs ausführen. AWS CLI AWS Die folgenden Anweisungen enthalten sowohl die Konsole als auch AWS CLI Beispiele.
Voraussetzungen
Die IAM-Identität (Benutzer oder Rolle), die Sie zum Einrichten der Syslog-Erfassung verwenden, muss über Berechtigungen zum Erstellen von VPC-Endpunkten, Protokollgruppen, Ressourcenrichtlinien und Syslog-Konfigurationen verfügen. Die folgende Beispielrichtlinie zeigt die mindestens erforderlichen Berechtigungen:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:PutResourcePolicy",
"logs:DeleteResourcePolicy",
"logs:PutSyslogConfiguration",
"logs:ListSyslogConfigurations",
"logs:DeleteSyslogConfiguration"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateVpc",
"ec2:ModifyVpcAttribute",
"ec2:CreateSubnet",
"ec2:CreateSecurityGroup",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateVpcEndpoint",
"ec2:ModifyVpcEndpoint",
"ec2:DescribeVpcEndpoints"
],
"Resource": "*"
}
]
}
Wenn Sie bereits über eine VPC, ein Subnetz und eine Sicherheitsgruppe verfügen, benötigen Sie nur die ec2:DescribeVpcEndpoints Berechtigungen ec2:CreateVpcEndpointec2:ModifyVpcEndpoint, und für die EC2-Aktionen.
Schritt 1: Eine VPC erstellen oder identifizieren
Sie benötigen eine VPC, die von Ihrem lokalen Netzwerk (über VPN oder Direct Connect) aus erreichbar ist, in dem sich Ihre Syslog-generierenden Geräte befinden. Wenn Sie bereits eine VPC mit Ihrem Rechenzentrum verbunden haben, überspringen Sie diesen Schritt und verwenden Sie Ihre vorhandenen VPC- und Subnetz-IDs.
- Console
-
So erstellen Sie eine VPC (Konsole)
Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/.
Wählen Sie im Navigationsbereich Ihre VPCs und dann Create VPC aus.
Wählen Sie unter Zu erstellende Ressourcen die Option Nur VPC aus.
Geben Sie für IPv4 CIDR-Block den Wert ein 10.0.0.0/16 (oder einen CIDR, der nicht mit Ihrem lokalen Netzwerk in Konflikt steht).
Wählen Sie VPC erstellen aus.
Wählen Sie die neu erstellte VPC aus, klicken Sie auf Aktionen, VPC-Einstellungen bearbeiten. Aktivieren Sie sowohl die DNS-Auflösung als auch die DNS-Hostnamen und wählen Sie dann Speichern.
-
Erstellen Sie ein Subnetz für den VPC-Endpunkt:
Wählen Sie im Navigationsbereich Subnetze und anschließend Subnetz erstellen aus.
Wählen Sie für VPC-ID die von Ihnen erstellte VPC aus.
Wählen Sie für Availability Zone eine Availability Zone aus.
Geben Sie für IPv4-Subnetz-CIDR-Block ein. 10.0.1.0/24
Wählen Sie Subnetz erstellen.
- AWS CLI
-
REGION=us-east-1
# Create VPC
VPC_ID=$(aws ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--region $REGION \
--query 'Vpc.VpcId' --output text)
aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-support --region $REGION
aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-hostnames --region $REGION
# Create a subnet for the VPC endpoint
SUBNET_ID=$(aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.1.0/24 \
--availability-zone ${REGION}a \
--region $REGION \
--query 'Subnet.SubnetId' --output text)
echo "VPC: $VPC_ID, Subnet: $SUBNET_ID"
Der VPC-Endpunkt erstellt ein elastic network interface (ENI) mit einer privaten IP in Ihrem Subnetz. Ihre lokalen Geräte erreichen diese IP über Ihre VPN- oder Direct Connect-Verbindung. Stellen Sie sicher, dass Ihr Netzwerk-Routing den Datenverkehr von Ihren Geräten zum Subnetz CIDR zulässt.
Schritt 2: Erstellen einer Sicherheitsgruppe
Erstellen Sie eine Sicherheitsgruppe für den VPC-Endpunkt, die eingehenden Syslog-Verkehr von Ihrer VPC zulässt. Dadurch wird gesteuert, welche Ressourcen Syslog an den Endpunkt senden können.
- Console
-
Um eine Sicherheitsgruppe (Konsole) zu erstellen
Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/.
Wählen Sie im Navigationsbereich Sicherheitsgruppen und anschließend Sicherheitsgruppe erstellen aus.
Geben Sie für Security group name (Name der Sicherheitsgruppe) syslog-vpce-sg ein.
Geben Sie für Beschreibung den Text Allow syslog traffic to VPC endpoint ein.
Wählen Sie für VPC die VPC aus, die Sie in Schritt 1 erstellt oder identifiziert haben.
-
Wählen Sie im Abschnitt Eingehende Regeln die Option Regel hinzufügen aus und fügen Sie die folgenden Regeln hinzu:
Regel 1: Typ = Benutzerdefiniertes TCP, Portbereich =6514, Quelle = 10.0.0.0/16 (Ihr VPC-CIDR)
Regel 2: Typ = Benutzerdefiniertes TCP, Portbereich =1514, Quelle = 10.0.0.0/16
Regel 3: Typ = Benutzerdefiniertes UDP, Portbereich =514, Quelle = 10.0.0.0/16
Wählen Sie Sicherheitsgruppe erstellen aus.
- AWS CLI
-
VPCE_SG_ID=$(aws ec2 create-security-group \
--group-name syslog-vpce-sg \
--description "Allow syslog traffic to VPC endpoint" \
--vpc-id $VPC_ID \
--region $REGION \
--query 'GroupId' --output text)
# Allow TCP+TLS (port 6514), TCP plaintext (port 1514), and UDP (port 514)
aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \
--protocol tcp --port 6514 --cidr 10.0.0.0/16 --region $REGION
aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \
--protocol tcp --port 1514 --cidr 10.0.0.0/16 --region $REGION
aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \
--protocol udp --port 514 --cidr 10.0.0.0/16 --region $REGION
Wenn Sie nur ein Protokoll verwenden möchten (z. B. TCP+TLS auf Port 6514), müssen Sie nur diesen Port in der Sicherheitsgruppe öffnen.
Schritt 3: Erstellen des VPC-Endpunkts
Erstellen Sie einen VPC-Schnittstellen-Endpunkt, der auf den Syslog-Dienst AWS PrivateLink verweist. Dadurch erhält Ihre VPC einen privaten Einstiegspunkt zum CloudWatch Logs-Syslog-Dienst.
Sie können bei der Erstellung des Endpunkts mehrere Subnetz-IDs für verschiedene Availability Zones angeben. Der Endpunkt erstellt in jedem Subnetz eine ENI und bietet so eine höhere Verfügbarkeit, ohne dass separate VPC-Endpunkte pro Availability Zone erforderlich sind. Ein einziger VPC-Endpunkt mit Subnetzen in mehreren Availability Zones ist ausreichend.
- Console
-
So erstellen Sie den VPC-Endpunkt (Konsole)
Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/.
Wählen Sie im Navigationsbereich Endpoints und anschließend Create Endpoint aus.
Geben Sie unter Namenstag einen Namen für den Endpunkt ein (z. B.syslog-vpce).
Wählen Sie bei Service category (Servicekategorie) die Option AWS services (-Services) aus.
Geben Sie im Suchfeld Dienste den Dienst ein syslog-logs und wählen Sie ihn auscom.amazonaws.Region.syslog-logs.
Wählen Sie für VPC die VPC aus, die Sie in Schritt 1 erstellt oder identifiziert haben.
Wählen Sie im Abschnitt Subnetze eine oder mehrere Availability Zones aus und wählen Sie die Subnetze aus, in denen Sie die Endpunkt-Netzwerkschnittstellen erstellen möchten.
Wählen Sie für Sicherheitsgruppen die Sicherheitsgruppe aus, die Sie in Schritt 2 () syslog-vpce-sg erstellt haben.
(Optional) Wenn Sie einschränken möchten, welcher Datenverkehr über den Endpunkt zulässig ist, konfigurieren Sie eine VPC-Endpunktrichtlinie. Weitere Informationen finden Sie unter VPC-Endpunktrichtlinien für Syslog.
Wählen Sie Endpunkt erstellen aus.
Nachdem sich der Endpunktstatus in Verfügbar geändert hat, wählen Sie den Endpunkt aus und notieren Sie sich den Wert für die DNS-Namen. Dies ist die Adresse, an die Ihre Syslog-Geräte senden.
- AWS CLI
-
VPCE_ID=$(aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.${REGION}.syslog-logs \
--vpc-endpoint-type Interface \
--subnet-ids $SUBNET_ID \
--security-group-ids $VPCE_SG_ID \
--region $REGION \
--query 'VpcEndpoint.VpcEndpointId' --output text)
echo "VPC Endpoint: $VPCE_ID"
Warten Sie, bis der Endpunkt verfügbar ist (ca. 60 Sekunden), und rufen Sie dann den DNS-Namen ab:
VPCE_DNS=$(aws ec2 describe-vpc-endpoints --vpc-endpoint-ids $VPCE_ID \
--region $REGION --query 'VpcEndpoints[0].DnsEntries[0].DnsName' --output text)
echo "Endpoint DNS: $VPCE_DNS"
Speichern Sie den VPCE_DNS Wert — Sie konfigurieren Ihre Syslog-Geräte so, dass sie an diese Adresse senden.
Schritt 4: Erstellen Sie eine Protokollgruppe
Erstellen Sie die Protokollgruppe CloudWatch Logs, in die Ihre Syslog-Meldungen zugestellt werden. Sie können einen beliebigen Protokollgruppennamen verwenden. Aus organisatorischen Gründen empfehlen wir, ein /syslog/ Präfix zu verwenden.
- Console
-
Um eine Protokollgruppe (Konsole) zu erstellen
Öffnen Sie die CloudWatch Logs-Konsole unter https://console.aws.amazon.com/cloudwatch/.
Wählen Sie im Navigationsbereich unter Protokollverwaltung die Option Protokollgruppen aus.
Wählen Sie Protokollgruppe erstellen aus.
Geben Sie als Namen der Protokollgruppe den Wert ein/syslog/my-devices.
(Optional) Konfigurieren Sie die Aufbewahrungseinstellungen und die Verschlüsselung nach Bedarf.
Wählen Sie Erstellen aus.
- AWS CLI
-
aws logs create-log-group \
--log-group-name /syslog/my-devices \
--region $REGION
Sie müssen keinen Protokollstream erstellen. Der Syslog-Dienst erstellt automatisch einen Protokollstream mit dem Namen VPCE_ID_Syslog_Region (z. B.vpce-0abc123def456_Syslog_us-east-1), wenn die erste Nachricht zugestellt wird.
Schritt 5: Fügen Sie eine Ressourcenrichtlinie hinzu
Der CloudWatch Logs-Syslog-Dienst schreibt mithilfe des syslog.logs.amazonaws.com Service Principal in Ihre Protokollgruppe. Sie müssen ihm die Erlaubnis über eine Ressourcenrichtlinie für Ihre Protokollgruppe erteilen. Die aws:SourceArn Bedingung stellt sicher, dass nur Datenverkehr von Ihrem spezifischen VPC-Endpunkt in diese Protokollgruppe schreiben kann.
ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)
aws logs put-resource-policy \
--policy-name syslog-ingestion \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "syslog.logs.amazonaws.com"
},
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream"
],
"Resource": "arn:aws:logs:'$REGION':'$ACCOUNT_ID':log-group:/syslog/my-devices:*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "'$ACCOUNT_ID'"
},
"ArnEquals": {
"aws:SourceArn": "arn:aws:ec2:'$REGION':'$ACCOUNT_ID':vpc-endpoint/'$VPCE_ID'"
}
}
}
]
}' \
--region $REGION
Die Bedingungen in der Ressourcenrichtlinie bieten die folgenden Schutzmaßnahmen:
aws:SourceAccount— Beugt Angriffen mit verwirrten Stellvertretern vor. Nur der Traffic Ihres Kontos wird akzeptiert.
aws:SourceArn— Bereichert den Zugriff auf einen bestimmten VPC-Endpunkt. Wenn Sie mehrere VPC-Endpoints haben, fügen Sie jeden als separaten ARN in der Bedingung hinzu.
Um mehreren VPC-Endpunkten das Schreiben in dieselbe Protokollgruppe zu ermöglichen, verwenden Sie den ArnLike Bedingungsoperator mit einem Platzhalter:
"ArnLike": {
"aws:SourceArn": "arn:aws:ec2:us-east-1:123456789012:vpc-endpoint/*"
}
Schritt 6: Erstellen Sie die Syslog-Konfiguration
Dieser Schritt teilt dem CloudWatch Logs-Syslog-Dienst mit, dass der von Ihrem VPC-Endpunkt eingehende Datenverkehr an Ihre Protokollgruppe weitergeleitet werden soll. Ohne diese Konfiguration wird der Datenverkehr von Ihrem Endpunkt abgewiesen.
- Console
-
Um die Syslog-Konfiguration (Konsole) zu erstellen
Öffnen Sie die CloudWatch Logs-Konsole unter. https://console.aws.amazon.com/cloudwatch/
Wählen Sie im Navigationsbereich unter Protokollverwaltung die Option Protokollgruppen aus.
Wählen Sie die Protokollgruppe aus, die Sie in Schritt 4 erstellt haben (z. B./syslog/my-devices).
Suchen Sie in den Details der Protokollgruppe den Abschnitt Syslog Ingestion.
Wählen Sie Konfigurieren aus.
Wählen Sie in der Dropdownliste VPC-Endpunkt den VPC-Endpunkt aus, den Sie in Schritt 3 erstellt haben.
Wählen Sie Erstellen aus.
- AWS CLI
-
aws logs put-syslog-configuration \
--log-group-identifier /syslog/my-devices \
--vpc-endpoint-id $VPCE_ID \
--region $REGION
Überprüfen Sie die Konfiguration:
aws logs list-syslog-configurations \
--log-group-identifier /syslog/my-devices \
--region $REGION
Ihre Syslog-Erfassungspipeline ist jetzt aktiv. Alle an den VPC-Endpunkt gesendeten Syslog-Meldungen werden an die /syslog/my-devices Protokollgruppe übermittelt.
Schritt 7: Überprüfen Sie die Zustellung und die Feldextraktion
Senden Sie eine Testnachricht von einem beliebigen EC2-Host oder -Gerät, das den VPC-Endpunkt erreichen kann, und überprüfen Sie anschließend mithilfe von CloudWatch Log Analytics, ob die Nachricht zugestellt und die strukturierten Felder korrekt extrahiert wurden. Meldungen werden in der Regel innerhalb von 10—20 Sekunden angezeigt.
Senden Sie eine Testnachricht (TCP-Klartext):
echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello from syslog" | \
nc $VPCE_DNS 1514
Überprüfen Sie die Lieferung und die extrahierten Felder:
- Console
-
Um die Lieferung mit Log Analytics (Konsole) zu überprüfen
Öffnen Sie die CloudWatch Logs-Konsole unter https://console.aws.amazon.com/cloudwatch/.
Wählen Sie im Navigationsbereich unter Logs die Option Log Analytics aus.
Wählen Sie in der Protokollgruppenauswahl Ihre Protokollgruppe aus (z. B./syslog/my-devices).
-
Geben Sie die folgende Abfrage ein und wählen Sie Abfrage ausführen aus:
fields @timestamp, facility, severity, hostname, appName, procId, message
| sort @timestamp desc
| limit 10
Vergewissern Sie sich, dass Ihre Testnachricht angezeigt wird und dass die extrahierten Felder korrekt ausgefüllt sind. In der obigen Testnachricht sollten Sie facility =local0, severity =info, hostname = myhostmyapp, appName = und procId = sehen1234.
- AWS CLI
-
Starten Sie eine Log Analytics-Abfrage, um die Zustellung und die Feldextraktion zu überprüfen:
QUERY_ID=$(aws logs start-query \
--log-group-name /syslog/my-devices \
--start-time $(date -d '5 minutes ago' +%s 2>/dev/null || echo $(date -v-5M +%s)) \
--end-time $(date +%s) \
--query-string 'fields @timestamp, facility, severity, hostname, appName, procId, message | sort @timestamp desc | limit 10' \
--region $REGION \
--query 'queryId' --output text)
# Wait a few seconds for the query to complete, then retrieve results
aws logs get-query-results \
--query-id $QUERY_ID \
--region $REGION
Stellen Sie sicher, dass Ihre Testnachricht angezeigt wird und dass die extrahierten Felder korrekt ausgefüllt sind. In der obigen Testnachricht sollten Sie facility =local0, severity =info, hostname = myhostmyapp, appName = und procId = sehen1234.