Was ist der Promiscuous-Modus
Promiskuitiver Modus oder Promisc-Modus ist eine Funktion, mit der die Ethernet-Karte den gesamten empfangenen Datenverkehr an den Kernel weiterleitet. Es wird normalerweise von einem Packet-Sniffing-Programm wie Wireshark und tcpdump verwendet. Wenn ein solches Programm absichtlich ausgeführt wird oder das Netzwerk für die Hardwarevirtualisierung überbrückt wird, wird die Meldung „Promiscuous Mode“ möglicherweise einfach ignoriert. Andernfalls ist aufgrund eines Sicherheitsproblems eine gründliche Untersuchung dieses Systems erforderlich.
Wenn auf dem System kein Audit-Daemon ausgeführt wird, wird die „Audit“-Meldung in der Datei /var/log/messages statt in / var/log/audit/audit.log-Datei. Sie sind Informationsmeldungen für Kernel-Auditing.
Die Option PROMISC wurde von Initscripts in RHEL 7 vollständig als veraltet markiert.
# grep PROMISC -B 1 /usr/share/doc/initscripts-9.49.41/sysconfig.txt No longer supported: PROMISC=yes|no (enable or disable promiscuous mode)
Um also die Schnittstelle(n) dauerhaft im Promiscuous-Modus zu konfigurieren, befolgen Sie die unten angegebenen Schritte.
Konfigurieren des Promiscuous-Modus auf der Schnittstelle in CentOS/RHEL 7
1. Erstellen Sie mit einem Editor wie vi oder vim eine benutzerdefinierte systemd-Unit-Datei.
# vi /etc/systemd/system/promisc.service
2. Ein Oneshot mit einem einzeiligen Befehl kann verwendet werden.
Beispiel für eine einzelne Schnittstelle
Im folgenden Beispiel wird nur eine Schnittstelle in den Promiscuous-Modus versetzt:
# cat /etc/systemd/system/promisc.service [Unit] Description=Bring up an interface in promiscuous mode during boot After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ip link set dev ens9 promisc on TimeoutStartSec=0 RemainAfterExit=yes [Install] WantedBy=default.target
Beispiel für mehrere Schnittstellen
Das folgende Beispiel setzt mehr als eine Schnittstelle in den Promiscuous-Modus:
# cat /etc/systemd/system/promisc.service [Unit] Description=Makes an interface run in promiscuous mode at boot After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ip link set dev ens9 promisc on ExecStart=/usr/sbin/ip link set dev ens12 promisc on TimeoutStartSec=0 RemainAfterExit=yes [Install] WantedBy=default.target
3. Stellen Sie sicher, dass systemd jetzt den neuen Dienst kennt:
# systemctl daemon-reload
Verifizierung
Starten Sie den Server neu und prüfen Sie, ob sich die Schnittstelle im Promiscuous-Modus befindet:
# reboot
# ip addr 1: lo: [LOOPBACK,UP,LOWER_UP] mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens9: [BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:fe:7d:f2 brd ff:ff:ff:ff:ff:ff inet 192.168.122.203/24 brd 192.168.122.255 scope global dynamic ens9 valid_lft 3398sec preferred_lft 3398sec 3: ens12: [BROADCAST,MULTICAST] mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 52:54:00:9f:37:9e brd ff:ff:ff:ff:ff:ff 4: ens10: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 link/ether 52:54:00:30:ef:19 brd ff:ff:ff:ff:ff:ff 5: ens11: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 link/ether 52:54:00:30:ef:19 brd ff:ff:ff:ff:ff:ff 6: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:30:ef:19 brd ff:ff:ff:ff:ff:ff inet 192.168.122.95/24 brd 192.168.122.255 scope global dynamic bond0 valid_lft 3396sec preferred_lft 3396sec
Die Schnittstelle ens9 befindet sich jetzt beim Booten im Promiscuous-Modus.