全体的な状況:ポートスキャンツールをテストするための自動化されたテスト環境を構築する必要があります。
これは私が遊び場として使用するgithubリポジトリです。https://github.com/WojciechMigda/tested-scanners
私が持っているもの:
- 2つの(より多くの)コンテナが実行されており、カスタム
snmpd
ipv4およびipv6ネットワークに接続され、ホストインターフェイスnet-snmpd
に接続されています。br-snmpd
- ホストのコンテナ
ping
で作業できます。ping6
nmap
ポート161の健全性チェックは、ipv4およびipv6ネットワークを介して実行できます。注:nmap
IP層レベルで機能します。 IPプローブパケットをbr-snmpd
インターフェイスに送信します。
質問:
masscan
ポートスキャンもしています。nmap
masscan
イーサネット層で動作するのと反対です。デフォルトでは、インターフェイスが明示的に指定されていない場合は、masscan
ホストのeth0インターフェイスが使用されます。このインターフェイスは、デフォルトパスがこのインターフェイスに接続されるために選択されました。残念ながらmasscan
、コンテナの開いているポートを検出できません。
ただし、masscan
ネットワークインターフェイス(br-snmpd
代わりに)と関連ルータのMACを指定してeth0
実行することもできます。この設定を有効にすると、masscan
コンテナのポート検出が成功します。
いくつかの変更を試しましたが、欠落している部分が見つかりませんでした。masscan
インターフェイスを介してコンテナのポートを正常にスキャンするには、追加の設定が必要ですかeth0
?
私が実装したいもう一つの設定は、ルータ(ゲートウェイ?)を接続して作業インターフェイスとして選択したbr-snmpd
場合、null以外のルータIPアドレスのルータMACを取得しようとすることです。br-snmpd
masscan
docker-compose.yml
:https://github.com/WojciechMigda/tested-scanners/blob/main/tests/resources/docker-compose.yml
Githubワークフロー:https://github.com/WojciechMigda/tested-scanners/blob/main/.github/workflows/test.yml
ワークフローの1つが実行されます。https://github.com/WojciechMigda/tested-scanners/actions/runs/4813378705/jobs/8569841427
ip -4 addr
ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 10.1.24.5/16 metric 100 brd 10.1.255.255 scope global eth0
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: br-snmpd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 10.9.0.1/24 brd 10.9.0.255 scope global br-snmpd
valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::6245:bdff:fe7a:4922/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 state DOWN
inet6 2001:db8:1::1/64 scope global tentative
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link tentative
valid_lft forever preferred_lft forever
4: br-snmpd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 2001:db8:1:1::1/120 scope global
valid_lft forever preferred_lft forever
inet6 fe80::42:31ff:fed7:61d3/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link
valid_lft forever preferred_lft forever
6: veth58fff89@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 fe80::14f4:fcff:fe3c:2b8a/64 scope link
valid_lft forever preferred_lft forever
8: veth55e96c9@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 fe80::d471:a4ff:febf:8273/64 scope link
valid_lft forever preferred_lft forever
ip -4 route
ip -6 route
default via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
10.1.0.0/16 dev eth0 proto kernel scope link src 10.1.24.5 metric 100
10.1.0.1 dev eth0 proto dhcp scope link src 10.1.24.5 metric 100
10.9.0.0/24 dev br-snmpd proto kernel scope link src 10.9.0.1
168.63.129.16 via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
169.254.169.254 via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
::1 dev lo proto kernel metric 256 pref medium
2001:db8:1::/64 dev docker0 proto kernel metric 256 linkdown pref medium
2001:db8:1::/64 dev docker0 metric 1024 linkdown pref medium
2001:db8:1:1::/120 dev br-snmpd proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev docker0 proto kernel metric 256 linkdown pref medium
fe80::/64 dev br-snmpd proto kernel metric 256 pref medium
fe80::/64 dev veth58fff89 proto kernel metric 256 pref medium
fe80::/64 dev veth55e96c9 proto kernel metric 256 pref medium
答え1
eth0
設計上、コンテナへのトラフィックが無効になっていることがわかりました。
さらに、しばらくすると、コンテナ内でスキャナを実行し、スキャン対象をLANコンテナで実行するか、ピアルータを介して接続された別々のbird
ネットワークで実行する方が便利でより良い解決策であることに気づきました。