本ブログでは、各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 |