ネットワーク/セキュリティ調査系コマンド/ツールとか
目次
こんにちは。
鎖骨が脆弱(Critical)、システムソリューション部のかわです。
最近いろんなものがなんでもクラウドに移行されるのが主流になってますが、ふとしたときに、物理ネットワークが基礎となって生まれた技術が、クラウド環境になっても当たり前のように使われてるんだなーと実感するタイミングがあることに気付きます。
例えばサブネットの範囲を決めるとき、サーバからping応答がないとき、ポートが開いてるか確認したいときなど、ふだんクラウドサービスでポチポチ意識せずに設定可能な部分は、どれもネットワークの知識が必要な部分になりますよね。
ということで今回は、ネットワーク調査などに使えるコマンドやツールをいくつか紹介したいと思います。
動作環境
使用OS:Ubuntu18.0.4
※以下ツールはCentOS 7.9でも動作可能なこと確認。インストール時は「yum」に読み替えてください
疎通確認、ネットワークテストツール「hping3」
apt install hping3
言わずと知れた、コマンドベースのネットワーク調査/テストツール。
ICMPはもちろん、TCP/UDPパケットを任意のフラグを立てて送れたり、データサイズを指定したりと、ネットワークテスト等に活用できます。もちろん悪用厳禁です。
■コマンド例
▼何も考えずに1回pingを送信します
hping3 -c 1 1.1.1.1 HPING 1.1.1.1 (ens33 1.1.1.1): NO FLAGS are set, 40 headers + 0 data bytes --- 1.1.1.1 hping statistic --- 1 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
▼TCP/443宛、ソースポートをTCP/8080、デフォルトゲートウェイ宛にSYNパケットを1回送信
hping3 --traceroute -V -S -c 1 -p 443 -s 8080 10.0.0.1 using ens33, addr: 10.0.0.10, MTU: 1500 HPING 10.0.0.1 (ens33 10.0.0.10): S set, 40 headers + 0 data bytes hop=1 TTL 0 during transit from ip=10.0.0.2 name=_gateway hop=1 hoprtt=4.0 ms --- 10.0.0.1 hping statistic --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 4.0/4.0/4.0 ms
443ポートから応答があったことがわかります。
▼セキュリティチェック的にも使えます。以下の例では10.0.0.1宛に、TCP1-100までのポートにSYNスキャンをかけています。
hping3 -S -8 1-100 10.0.0.1 Scanning 10.0.0.1 (10.0.0.1), port 1-100 100 ports to scan, use -V to see all the replies +----+-----------+---------+---+-----+-----+-----+ |port| serv name | flags |ttl| id | win | len | +----+-----------+---------+---+-----+-----+-----+ 22 ssh : .S..A... 128 13078 64240 46 80 http : .S..A... 128 13590 64240 46 All replies received. Done. Not responding ports: (1 tcpmux) (2 nbp) (3 ) (4 echo) (5 ) (6 zip) (7 echo) (8 ) (9 discard) (10 ) (11 systat) (12 ) (13 daytime) (14 ) (15 netstat) (16 ) (17 qotd) (18 msp) (19 chargen) (20 ftp-data) (21 ftp) (23 telnet) (24 ) (25 smtp) (26 ) (27 ) (28 ) (29 ) (30 ) (31 ) (32 ) (33 ) (34 ) (35 ) (36 ) (37 time) (38 ) (39 rlp) (40 ) (41 ) (42 nameserver) (43 whois) (44 ) (45 ) (46 ) (47 ) (48 ) (49 tacacs) (50 re-mail-ck) (51 ) (52 ) (53 domain) (54 ) (55 ) (56 ) (57 ) (58 ) (59 ) (60 ) (61 ) (62 ) (63 ) (64 ) (65 tacacs-ds) (66 ) (67 bootps) (68 bootpc) (69 tftp) (70 gopher) (71 ) (72 ) (73 ) (74 ) (75 ) (76 ) (77 ) (78 ) (79 finger) (81 ) (82 ) (83 ) (84 ) (85 ) (86 ) (87 link) (88 kerberos) (89 ) (90 ) (91 ) (92 ) (93 ) (94 ) (95 supdup) (96 ) (97 ) (98 linuxconf) (99 ) (100 )
応答のあったポート(SSH,HTTP)からSYN-ACKの応答があったことがわかります。不必要なポートが開いているか等がわかります。
tracerouteのちょっと強い版「mtr」
経路調査で使われるtracerouteの進化版
apt install mtr
▼基本形。通常のtracerouteと違って経路途中の平均/最大/最小応答速度も表示されるので、トラブルシューティングに役立ちます。「-i」オプションで任意の間隔での送信も可能(デフォルト1秒)。
mtr -t 1.1.1.1 hostname (10.0.0.10) Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. _gateway 0.0% 17 0.4 0.5 0.4 1.0 0.1 ... 10. one.one.one.one 0.0% 16 14.6 13.8 12.1 16.1 1.2
▼「-T」でTCP、「-u」でUDPパケットでも実施できます。
mtr -T -t 1.1.1.1 mtr -u -t 1.1.1.1
▼「-r」オプションでバックグラウンド実行後、結果のみが表示されます。
mtr -r beyondjapan.com Start: 2022-10-11T14:15:33+0900 HOST: hostname Loss% Snt Last Avg Best Wrst StDev 1.|-- _gateway 0.0% 10 0.5 0.5 0.4 0.6 0.1 2.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
途中で喪失しましたね。
ちょっと便利なARPコマンド「arp-scan」
apt install arp-scan
物理ネットワークではよく使われるARPコマンドですが、同一ネットワーク内にいるホストを調べて、MACアドレスも含めてリスト化ができます。arp-scanはベンダ情報も表示してくれるので便利です。
arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:15:5d:e1:28:70, IPv4: 192.168.80.77 Starting arp-scan 1.9.7 with 4096 hosts (https://github.com/royhills/arp-scan) 192.168.80.1 00:15:5d:8f:b3:18 Microsoft Corporation
ネットワーク/セキュリティツールの鉄板「nmap」
主にポートスキャンに用いられるnmap
社内サーバ等で、不必要に開いているポートの調査などに使えるツールです。社内なら問題は少ないですが、外部公開しているサーバにおいてはセキュリティホールとなりえるので、こういったツールを使用して調査するのもセキュリティ向上に役立ちます(もちろん悪用厳禁。用法用量を守って正しくお使いください)。
apt install nmap
▼TCP/80が開いているかの確認
nmap -p 80 10.0.0.1 Starting Nmap 7.60 ( https://nmap.org ) at 2022-10-11 14:32 JST Nmap scan report for 10.0.0.1 Host is up (0.00042s latency). PORT STATE SERVICE 80/tcp filtered http ...
Stateが「filtered」となっているので、TCP/80は開放されていないことがわかりました。
ポート番号部分をハイフン指定することで、一度に複数ポートを調査できます。ステルススキャンを実施するので、第三者リソースへの使用は厳禁です。
ネットワークエンジニアの必需品、パケットキャプチャツール「tcpdump」
定番のパケットキャプチャツール。
出力したファイルをWiresharkなどに読み込ませれば、GUIでキャプチャしたパケットを閲覧できます。非暗号化パケットは中身が見えてしまうので、あくまでもローカル環境での利用限定です。
apt install tcpdump
▼基本的には特定のインターフェイスやホストを指定しキャプチャします。今回は「ens33」というインターフェイスを指定、「captured.pcap」というファイルに出力します。
tcpdump -i ens33 -w captured.pcap
キャプチャを止めた後、以下オプションを付けて中身が確認可能
tcpdump -r captured.pcap 14:46:33.494124 ARP, Request who-has _gateway tell 10.0.0.1, length 46 14:46:33.586828 IP 10.0.0.1.54475 > 239.255.255.250.1900: UDP, length 175 14:46:34.588083 IP 10.0.0.1.54475 > 239.255.255.250.1900: UDP, length 175
ファイルを引っこ抜いてWiresharkに突っ込めば、色付きで表示されるので見やすくなります。ソートなども簡単にできます(Wiresharkについてはいつか記事にしたいと思います)。
まとめのまとめ
以上、ネットワーク/セキュリティ関連ツールの紹介でした。
ビヨンドではクラウド環境メインになるのであまり実感がないですが、社内ネットワークやリモートワーク環境、お客さんが来訪された際のゲストWi-Fi、社内セキュリティなど、完全にクラウドへの移行ができない/難しい部分が存在します。今回紹介したツールはクラウド環境のトラブルシューティングでも必ず役立つ技術なので、これを機会に触りながら勉強してみると気分転換になると思います:)
完