インターフェイス、インターフェイスフラグ、または属性の乱雑さを判断するには?

インターフェイス、インターフェイスフラグ、または属性の乱雑さを判断するには?

RHEL 7システムでは、Lynisを使用してスキャンを実行していますが、インターフェイスが無差別モードになっていることが示されます。リンクがPromusculousフラグなしでベースでないことを確認して決定しました(Broadcast、Multicast、Run、およびUP(BMRU)のみが表示されます)。

$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001

$ netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             9001 17217705      0      0 0      17899485      0      0      0 BMRU

それで、Lynisがコマンドを確認して実行する方法を調べてみると、ip link -o -d show dev eth0 | grep 'promiscuity 1'果たして次のような内容が見つかりました。

$ ip -d link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff promiscuity 1 addrgenmode eui64 numtxqueues 8 numrxqueues 8 gso_max_size 65536 gso_max_segs 65535

私の質問はどちらがより権威なのかということです。私はインターフェイス属性ではなくフラグだけをチェックすることに慣れています。どういう意味ですかpromiscuity 1?このインターフェイスは混在していますか?

ベストアンサー1

説明したように修理するpromiscuity/に読み取り専用パラメータを導入します。ip-linkiproute2

カーネルは、ユーザーが明示的に設定した場合にのみこのフラグをエクスポートします。たとえば、IFF_PROMISCa が実行中の場合はエクスポートされません。tcpdump

+ if (do_link && tb[IFLA_PROMISCUITY] && show_details)
+     fprintf(fp, "\n    promiscuity %u ",
+         *(int*)RTA_DATA(tb[IFLA_PROMISCUITY]));

そして実際には、dev_get_flags()ioctl(SIOCGIFFLAGS)インタフェース(使用されている場合ifconfig)およびrtnetlinkインタフェース(使用されている場合)で使用されるカーネル関数ip link showは、明らかにIFF_PROMISCユーザー空間にエクスポートされたフラグのセットを消去します。

 *      Get the combination of flag bits exported through APIs to userspace.
 */
unsigned int dev_get_flags(const struct net_device *dev)
{
        unsigned int flags;

        flags = (dev->flags & ~(IFF_PROMISC |
                                        ...)) |
                (dev->gflags & (IFF_PROMISC |
                                IFF_ALLMULTI));

[dev->gflags上記は互換性フラグのセットです。いいえカーネルで使用されますが、ユーザー空間インターフェイスによってのみ設定および検索されます。]

これただインターフェイスが無差別モードにあるかどうかをユーザー空間で確認する方法は、次のように検索されたip -d link show属性 IFLA_PROMISCUITYを使用することです。rtnetlink(7)相互作用。これは実際の状況を反映したものです。乱雑な回数デバイス:promiscuity > 0デバイスが無差別モードにあることを示します。


ifconfig DEV promiscデバイスフラグを転送または更新することは、ip link set dev DEV promisc onデバイスを無差別モードに設定する唯一の方法ではありません。packet(7) setsockopt()相互作用:

setsockopt(sock, SOL_SOCKET, PACKET_ADD_MEMBERSHIP, {.mr_type = PACKET_MR_PROMISC})`

これはtcpdump(および他のネットワークキャプチャおよびフィルタリングツール)が使用するものです。

おすすめ記事