ネットワークのセキュリティ
システム管理者の多くは、IoTを実現する際のデータ転送と通信時の連携において、ネットワークのセキュリティが急所になっていると考えている。確かに多くのハッキングやクラッキング、攻撃はネットワークに潜む何らかのほころびを突くものであるが、そういった手段がすべてというわけではない。とはいえ、多くのハッカーがその種の攻撃を最初に試すのは事実である。それはハッカーにとって最もリスクが低く、また一般的に見た場合、データハッキング手段として成功率が最も高いためだ。
また、VPNがネットワーク上での攻撃を抑止する究極のセキュリティ対策だという考えも多く見られる。VPNは優れたプラクティスであるが、ネットワークのセキュリティを完璧なものにしてくれるわけではない。そう、VPNはトラフィックを暗号化するという点でセキュアだと言えるが、中間者攻撃(MitM攻撃)が可能である点を考えると、ネットワークのセキュリティをVPNだけに任せてしまうのは問題だと言える。
ネットワーク上のトラフィックを暗号化するだけで、100%安全であるとかセキュアであるとは断言できない。しかし、データの保全性チェックという手がある。このため、デバイスから送信されてくるトラフィックの整合性をチェックし、改ざんされていないことを確認すべきだ。IoTデバイスのプロバイダーによって、このようなチェックをやっているところとやっていないところがある。また、チェックを行なうサードパーティーのソフトウェアを検討する必要もあるだろう。
さらに、ネットワークから外部に向かうデータについてもチェックする必要がある。攻撃はすべて外部からの侵入によって起こると考えてはいけない。ネットワーク内から外部に向かうという攻撃もある。こういったかたちの情報漏えいも監視する必要がある。外部からの侵入がすべてではないという点を忘れてはならない。場合によっては、ネットワーク内から貴重なデータが徐々に漏れ出していくということもある。
サーバのセキュリティ
サーバのセキュリティとOSのセキュリティは異なるものだ。その違いは、サーバやサービスがOS上で稼働しているという点にある。ハッキングや攻撃の大多数は、パッチの当たっていない、あるいはセキュアでないこれらのサービス上で発生している。このため、システム上では外部から見えるサービスの数をできる限り減らしておくという経験則がある。通常の場合、TCPやUDP(インターネットプロトコル)のポートを介して、SSH(ポート22)やHTTPS(ポート443)、SMTP(ポート25)、POP3(ポート110)、DNS(ポート53)、RDP(ポート3389)といったサービスが外部から見える状態になっている。
Linuxサーバの場合、ポートをセキュアにする最善の方法は、/etc/hosts.denyファイルや/etc/hosts.allowファイルを使用し、特定マシンからの接続のみを許すようにしておくことだ。
サービスをセキュアにする他の方法として、ファイアウォールのポートアドレス変換ルールを使用し、特定ポート上の特定システムに接続できるネットワークやホストを定義しておく(つまり穴を開けておく)というものもある。
一部のプロトコルにはセキュアな代替も用意されている。こういった代替がある場合や、クライアントとサーバ間のセキュアな接続がサポートされている場合には、それを利用するようにしてほしい。例として、SMTPのポート587やポート465、POP3のポート995が挙げられる。なお、SSHはポート22で既にセキュアな状態になっている。
上述したように、通信の暗号化によって完璧なセキュリティがもたらされるわけではないものの、ネットワーク越しの攻撃に対しては、いまだに有効な対策となっている。ネットワークポートの多くは権限を昇格させた状態(root)で動作しているため、ハッカーがいったんrootのプロンプトを入手すればシステムに対して無制限のアクセスが可能になるという点が問題なのだ。