「MAC アドレス偽装」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(1版 をインポートしました)
1行目: 1行目:
 
[[Category:ネットワーク]]
 
[[Category:ネットワーク]]
[[Category:Security]]
+
[[Category:セキュリティ]]
 
[[cs:MAC Address Spoofing]]
 
[[cs:MAC Address Spoofing]]
 
[[de:MAC-Adresse abfragen und setzen]]
 
[[de:MAC-Adresse abfragen und setzen]]

2015年1月6日 (火) 21:47時点における版

この記事では Media Access Control (MAC) アドレスを偽装 (変更) する方法を説明しています。

手動

MAC アドレスを偽装するには iproute2 (デフォルトでインストールされます) または macchanger (公式リポジトリからインストール可能) を使う2つの方法があります。どちらの方法も以下で示します。

方法 1: iproute2

まず、次のコマンドで現在の MAC アドレスを確認できます:

# ip link show interface

interfaceネットワークインターフェイスの名前に置き換えて下さい。

重要なのは "link/ether" の後に続く6桁の番号です。以下のように表示されているはずです:

link/ether 00:1d:98:5a:d1:3a

MAC アドレスを偽装するために、まずはネットワークインターフェイスを下ろします。次のコマンドで行うことができます:

# ip link set dev interface down

そして、実際に MAC の偽装を行います。16進数の値を使いますが、ネットワークによってはベンダーが一致しないクライアントに IP アドレスを割り当てないように設定されていることがあります。したがって、接続するネットワークを管理していない場合は、ランダム化するよりも既知の MAC を使ってテストすると良いでしょう。

MAC を変更するには、次のコマンドを実行します:

# ip link set dev interface address XX:XX:XX:XX:XX:XX

6桁の値は XX:XX:XX:XX:XX:XX という形式で入力する必要があります。

最後にネットワークインターフェイスを立ち上げます。次のコマンドで行えます:

# ip link set dev interface up

MAC が偽装されたか確認したい場合は、ip link show interface をもう一度実行して 'link/ether' の値を確認してください。偽装されていれば、'link/ether' が変更したアドレスになっているはずです。

方法 2: macchanger

macchanger (別名 GNU MAC Changer) を使用する方法です。特定のベンダーに一致するように変更したり、完全にランダムにするなど、様々な機能が備わっています。

公式リポジトリから macchanger パッケージをインストールしてください。

偽装はインターフェイスごとに行うので、以下に記載されているコマンドを使うときは interfaceネットワークインターフェイスを指定します。

MAC アドレスを完全にランダムなアドレスに偽装するには:

# macchanger -r interface

ベンダーコードを除いてアドレスをランダム化するには (MAC アドレスをチェックしていた場合に、同じベンダーのアドレスとして登録する)、次のコマンドを実行:

# macchanger -e interface

MAC アドレスを特定の値に変更するには、次を実行:

# macchanger --mac=XX:XX:XX:XX:XX:XX interface

XX:XX:XX:XX:XX:XX は変更後の MAC に置き換えて下さい。

最後に、MAC アドレスをハードウェアの値に元に戻すには:

# macchanger -p interface
ノート: デバイスを使用している (何らかの方法で接続されていたりインターフェイスが立ち上がっている) 間に MAC アドレスを変更することはできません。

自動

方法 1: systemd-networkd

systemd-networkdlink ファイルによる MAC アドレスの偽装をサポートしています (詳しくは man systemd.link を参照):

/etc/systemd/network/00-default.link
[Match]
MACAddress=permanent MAC

[Link]
MACAddress=spoofed MAC
NamePolicy=kernel database onboard slot path

方法 2: systemd-udevd

Udevudev ルールを書くことによる MAC アドレスの偽装をサポートしています。ATTR によって udev は適当なデバイスを見つけてその MAC アドレスを変更するので、address オプションは両方ともカスタマイズしてください:

/etc/udev/rules.d/75-mac-spoof.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev %k address c8:0a:a9:xx:xx:xx"

方法 3: systemd ユニット

ユニットの作成

以下は systemd のユニットを使って MAC アドレスを起動時に変更する2つの例です。片方は ip を使って固定 MAC を設定し、もう片方は macchanger を使ってランダムな MAC アドレスを指定します。Netctl, NetworkManager, systemd-networkd, dhcpcd などのネットワークマネージャのサービスが起動する前に MAC が変更されるように systemd の network-pre.target を使っています。

iproute2

あらかじめ決めておいた MAC アドレスに設定する systemd ユニット:

/etc/systemd/system/macspoof@.service
[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address 36:aa:88:c8:75:3a
ExecStart=/usr/bin/ip link set dev %i up

[Install]
WantedBy=multi-user.target
macchanger

元の NIC ベンダーコードは維持しつつランダムなアドレスを設定する systemd ユニット。macchangerインストールが必須です:

/etc/systemd/system/macspoof@.service
[Unit]
Description=macchanger on %I
Wants=network-pre.target
Before=network-pre.target
After=sys-subsystem-net-devices-%i.device

[Service]
ExecStart=/usr/bin/macchanger -e %I
Type=oneshot

[Install]
WantedBy=multi-user.target

完全にランダムなアドレスは -r オプションを使うことで設定できます。#方法_2: macchanger を参照。

サービスの有効化

サービスの名前に適当なネットワークインターフェイス (例: eth0) を追加してサービスを有効化してください:

# systemctl enable macspoof@eth0.service

適切な順番でサービスを再起動・停止・起動してください。ネットワークを管理している場合は、ルーターの固定アドレスまたは DHCP アドレステーブルを確認して、偽装された MAC がルーターによって認識されているか確認してください。

トラブルシューティング

DHCPv4 ネットワークへの接続が失敗する

NetworkManager のデフォルトである dhcpcd を使っていて DHCPv4 ネットワークに接続できない場合、dhcpcd の設定を変更してリースを取得するようにしてみてください。

参照