環境
- Ubuntu 22.04 LTS AMD64 Ja
nmap と root
「Ubuntu18.04 や RaspberryPi ホストから 同一 LAN 上の RaspberryPi のIPアドレスを検索する」
https://qiita.com/nanbuwks/items/1aa7b1ba8ad654535d59
では nmap を使う際に root と そうでないユーザで挙動が変わる件について触れました。
その後調べると、管理者で実行すると SYN Scan となるらしい。一般ユーザで実行すると、 Raw Socket を使わずに Connect Scan となるらしい。3way handshake を成功させずにスキャンするか、 Connect を成立させてスキャンするかの違いらしい。
インストール
さて、nmap を使おうとしたら
$ nmap
コマンド 'nmap' が見つかりません。次の方法でインストールできます:
sudo snap install nmap # version 7.92-core22, or
sudo apt install nmap # version 7.91+dfsg1+really7.80+dfsg1-2build1
他のバージョンについては 'snap info nmap' を確認してください。
と出た。
どっちでもいいかなーと思い、
$ sudo snap install nmap
nmap 7.92-core22 from Maximiliano Bertacchini (maxiberta) installed
とインストール。
エラー
まずは一般ユーザーで使ってみる。
$ nmap localhost
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-07 15:53 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
こっちはOK.
sudo すると
$ sudo nmap localhsot
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-07 15:53 JST
Couldn't open a raw socket. Error: Permission denied (13)
?? 以前は管理者権限でなければ十分な動きをしなかったことがありましたが、今回は逆ですね。
snap の権限
この問題は、snap パッケージへの権限設定の問題らしい。
$ snap connections nmap
Interface Plug Slot Notes
home nmap:home :home -
network nmap:network :network -
network-bind nmap:network-bind :network-bind -
network-control nmap:network-control - -
の中の、network-control の Slot が - となっているのが原因。
Slot はシステム側の提供を表し、Plugは snapパッケージ側の要求を表すらしいです。
通常の snap パッケージは confinement が strict となっていて、Plug/Slot で権限を割り当てているらしい。
確認してみると、確かに nmap の confinement は strict に設定されていました。
$ snap info --verbose nmap
name: nmap
summary: A free and open source utility for network discovery and security auditing
health:
.
.
.
notes:
private: false
confinement: strict
devmode: false
.
.
.
network-control については、
「The network-control interface | Snapcraft documentation」
https://snapcraft.io/docs/network-control-interface
によると、
network-control enables the configuration of networking and network namespaces via ip netns, providing a wide, privileged access to networking.
となっていますがよくわかりません。おそらく raw network の操作に必要なのかな?
解決
解除してみます。
$ snap connect nmap:network-control
と設定して確認すると
$ snap connections nmap
Interface Plug Slot Notes
home nmap:home :home -
network nmap:network :network -
network-bind nmap:network-bind :network-bind -
network-control nmap:network-control :network-control manual
権限が許可に鳴ったみたいですね。
$ sudo nmap localhost
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-07 16:25 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
動作しました。