LAN 上の特定のホスト (マルチ OS) がインターネットにアクセスできないようにブロックする必要があります。iptables 経由で MAC アドレスによって特定のホストをブロックしようとしましたが、ワークステーションの MAC アドレスは使用できません。ワークステーションは L3 スイッチを通過し、フレームはスイッチのインターフェイス MAC で再構築されます。wireshark のtshark
ユーティリティを使用してこれを確認しました。
IP アドレスでブロックできることはわかっていますが、ユーザーが IP を変更してブロックを回避できるかどうかは制御できません。次の操作を実行するスクリプトで解決策を実現できるのではないかと考えています。
- fping を使用して ARP テーブルを更新します。
fping -c 1 -g 10.10.10.0/24
- arp テーブルを grep して、ファイル内の MAC アドレスのリストから IP を取得します。
arp -n | grep "00:11:22:aa:bb:cc" | awk '{print $1}'
- ハッシュまたは配列を構築し、ブロックする必要がある IP アドレスで iptables を動的に更新します。おそらくファイルを使用して、次のような操作を行うでしょう
iptables-restore < ips_to_deny
。 - このスクリプトを 5 分ごとに実行します。(タイミングについてはよくわかりません)
それで...質問です。この方法に欠点は見つかりましたか? あるいは、改善できる点はありますか?
- Mac のなりすましが思い浮かびますが、ホストユーザーには管理者アクセス権がありません。
それが非常に重要である場合、スクリプトには perl または ruby のいずれかを使用します。
答え1
大規模な LAN パーティー (ユーザー数 500 人超) を開催するときに、ワークステーションを制御できないという同様の状況に対処する必要がありました。これは非常に興味深いことです。
L3 スイッチ (技術的にはルーター) が適度に高性能であれば、おそらく SNMP で管理でき、適切なサブネット (ステーションに直接接続するもの) の ARP テーブルを読み取って、有効な MAC/IP マッピングを取得できます。
ただし、マシンが許可なく IP を変更することを心配している場合は、マシンが MAC を変更することも心配する必要があります。マシンが MAC を変更しないことを信頼できる場合は、DHCP サーバーのログを解析するという別のオプションを使用しました。さらに、DHCP ログと ARP テーブルを相関させて、スプーフィングを検出することもできます。
スイッチがサポートしている場合は、802.1x 認証も使用できます。このモードでは、マシンは実際にパケットのスイッチングを開始する前に、Radius 経由でスイッチに認証する必要があり、認証ごとに、Radius サーバーはステーションの ID、物理的な場所、および MAC を受け取ります。
答え2
これらはすべて、私にとっては過度に複雑で、将来的に問題になりがちな「カスタマイズされた」ソリューションの 1 つになりがちです (つまり、「だれかが会社を辞めるずっと前にこれを設定したが、誰も変更方法を知らない」など)。そのため、個人的には、もう少し標準に基づいたものを検討します。
インターネットにアクセスできるデバイスとアクセスできないデバイスを同じ L2 ネットワーク セグメントに配置する必要がない限り、802.1X MAC 認証バイパス (MAB) を実装することをお勧めします。これにより、認証されたデバイスに 1 つの VLAN が割り当てられ、認証に失敗したデバイスは 2 番目の VLAN に配置されます。
スイッチが MAB のみをサポートしていない場合 (つまり、MAB は IEEE 802.1X 認証が失敗した場合にのみ有効になる場合)、IEEE 認証の再試行値とタイムアウト値を最小値に減らすことができます。IEEE 認証は気にしておらず、すぐに失敗するため、そうすることを選択しない限り、サプリカントを構成する必要はありません。
より安全にするためには、インターネット アクセスが必要なすべてのデバイスの MAC アドレスを設定し、それらのデバイスのみが認証され、インターネット アクセスを提供する VLAN に配置されるようにする必要があります。ただし、特定のデバイスのみを制限し、新しいデバイスが自動的にインターネットに接続できるようにする場合は、認証に失敗したデバイスをインターネット アクセスのある VLAN に配置し、認証に成功したデバイスをアクセスのない VLAN に配置するように設定できます。
なぜこれを行うのかという理由は示されていませんが、何らかの理由があれば、これにより 2 つのホスト セット間のアクセスを簡単に制限する機会も提供されます。