本ブログでは、各Armadillo製品のTCP/UDPポート(以下ポートと記述)開放状態及びアプリケーション起動状態の確認方法をご紹介します。
Armadillo製品は、利用者が円滑な開発を行うために多くのポートを開放しています。
しかし各利用者が量産時に必要なポートは異なるため、開放しているポートの一部が不要となることもあります。
製品化されたArmadilloが「不要開放ポートを使用するアプリケーションを起動しており、通信可能な状態である」場合、その製品のセキュリティが弱くなる場合があります。
そのため量産前に使用しているArmadilloがどのポートを開放し、各ポートに対応するアプリケーションが起動しているか確認する必要があります。
今回の確認では、デフォルト設定のLinuxカーネル/ユーザランドを使用しています。
iptablesを用いた開放ポートの確認
Armadillo上からポート開放状態を確認する方法についてご紹介します。
確認コマンドとして、[iptables]コマンドを使用します。
例としてArmadillo-IoT G3上で使用した例を次に記載します。
[armadillo ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
上記結果では、INPUT,OUTPUTの[policy]が[ACCEPT]となっており、ルールが設定されていません。
このためポートはすべて開放されていることがわかります。
次に、Armadillo-440上でコマンドを実行した例を記載します。
[armadillo ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:telnet
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:snmp
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data
REJECT tcp -- anywhere anywhere tcp dpt:auth reject-with icmp-port-unreachable
DROP tcp -- anywhere anywhere tcp dpts:x11:6010
ACCEPT tcp -- anywhere anywhere tcp dpts:1024:65535
ACCEPT udp -- anywhere anywhere udp dpt:ntp
ACCEPT udp -- anywhere anywhere udp dpt:snmp
ACCEPT udp -- anywhere anywhere udp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:22222
ACCEPT udp -- anywhere anywhere udp dpts:1024:65535
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
この結果から、[policy]は[DROP]となっていますが[INPUT]の[ACCEPT]ルールが存在しており、この数だけポートが開放されていることが分かります。
FTPなどを用いるアプリケーションが起動してしまうと、思わぬセキュリテホールとなる可能性があるため不要な開放ポートは閉鎖すると安全です。
ネットワーク情報表示コマンドを用いた起動アプリケーションの確認
次にArmadilo上からアプリケーション起動状態を確認する方法についてご紹介します。
確認コマンドとして、[netstat]コマンドを使用します。
[netstat]コマンドをArmadillo-IoT G3上で使用した例を次に記載します。
[armadillo ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:http *:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
udp 0 0 *:38848 *:*
udp 0 0 *:mdns *:*
udp6 0 0 [::]:36247 [::]:*
udp6 0 0 [::]:mdns [::]:*
Active UNIX domain sockets (servers and established)
--------------以下略-----------------
この結果から、[tcp]に関するポートでは[http]アプリケーションのみ起動していることがわかります。
またArmadillo-440上で実行した例を次に記載します。
[armadillo ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:x11 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ftp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:telnet 0.0.0.0:* LISTEN
tcp 0 0 :::x11 :::* LISTEN
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp 0 0 :::5353 :::*
Active UNIX domain sockets (servers and established)
--------------以下略-----------------
この結果から、[tcp]の[http][ftp][telnet]がアクティブになっているため、[iptables]で調べた開放ポートに対応したアプリケーションが起動していることがわかります。
ftpやtelnetのポートを使用せずに開放だけしている状態は、セキュリティが弱くなってしまうため対策する必要があります。
ATDEからポートスキャナを用いた開放済ポートの確認
ATDEからポートスキャナを用いて、使用しているArmadilloの通信状況を確認します。
ポートスキャナとは、スキャン対象機が「どのポートでサービスを提供しているか」を確認するソフトウェアです。
今回は[nmap]コマンドというセキュリティ/ポートのスキャンを行うことができるツールを使用します。
ArmadilloとPCをLAN接続し、ATDEから[nmap]コマンドを実行します。
次のコマンド例はArmadillo-IoT G3Lに対してコマンド実行したものです。
atde:~/$ nmap [ArmadilloのIPアドレス]
Starting Nmap 6.00 ( http://nmap.org ) at 2017-12-28 15:12 JST
Nmap scan report for [ArmadilloのIPアドレス]
Host is up (0.0060s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
結果を確認すると[TCP/80:http]と通信できることがわかります。
一方で、Armadillo-440に対して[nmap]を行うと次のような結果が得られます。
atde:~/$ nmap [ArmadilloのIPアドレス]
Starting Nmap 6.00 ( http://nmap.org ) at 2017-12-28 16:52 JST
Nmap scan report for [ArmadilloのIPアドレス]
Host is up (0.0010s latency).
Not shown: 841 closed ports, 156 filtered ports
PORT STATE SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 10.40 seconds
この結果から、[TCP/80:http]に加えて[TCP/21:ftp]と[TCP/23:telnet]と通信できることがわかります。
ポートスキャン結果一覧
以下に、各製品のデフォルトで開放しているポートの一覧表を記載します。
製品名 | 開放ポート |
---|---|
Armadillo-IoT G3/G3L | TCP/80:http |
Armadillo-X1 | TCP/80:http |
Armadillo-IoT G2 | TCP/80:http,TCP/21:ftp,TCP/23:telnet |
Armadillo-440 | TCP/80:http,TCP/21:ftp,TCP/23:telnet |
Armadillo-840 | TCP/80:http,TCP/21:ftp,TCP/23:telnet |