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-link
iproute2
カーネルは、ユーザーが明示的に設定した場合にのみこのフラグをエクスポートします。たとえば、
IFF_PROMISC
a が実行中の場合はエクスポートされません。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
(および他のネットワークキャプチャおよびフィルタリングツール)が使用するものです。