みま

満員電車つらい

ラズパイでセキュアを意識したSSH接続の設定をした

 久々の投稿。今回はみんな大好きラズベリーパイでセキュアを意識したssh接続の設定をやってみた。
 ラズパイとは関係ないが昨日WPA2の脆弱性が発表された。Wi-Fiで最も安全性が高いと言われていた認証方式なだけにネット上でも衝撃が走っていた。
 通称KRACKs(key reinstallation attacks : 鍵再インストール攻撃)と呼ばれAESなどの暗号解読によってパスワードが読み取られるという訳ではなく暗号化された通信の内容を覗かれたり、攻撃コードを埋め込んだり、不正サイトに誘導されるらしい。怖い話です。

ラズパイ側の設定

さて本題に
まずIPアドレスを固定
ルーターDHCPサーバ機能によってIPアドレスを動的に振り分けるため、ラズパイ側のIPアドレスは何度も変わってしまうため、IPアドレスを固定。
$ sudo vi /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
 source-directory /etc/network/interfaces.d
 
   # The loopback network interface
   auto lo
   iface lo inet loopback
  
  auto wlan0
  iface wlan0 inet static   // "dhcp""static"に変更
  address 192.168.100.40   // 設定したいラズパイの固定IPアドレス
  netmask 255.255.255.0   // サブネットマスク
  gateway 192.168.100.1    // ルータのIPアドレス
  dns-nameservers 192.168.100.1  // ルータのアドレス

と書いたら
$ sudo /etc/ini.d/networking start
でネットワークサービスを起動
ちなみに編集して再起動したいときは
$ sudo /etc/init.d/networking restart
止めたいときは
$ sudo /etc/init.d/networking stop
OpenSSHをラズパイ側で利用するためのパッケージをインストール
$ sudo apt-get install openssh-server

続いて
$ sudo vi /etc/ssh/sshd_config

//もともと書いてある
Port 22
//を22番以外の数字に変更
//49513~65535の間が基本的に無難
Port 615625

rootログインを非許可にする
PermitRootLogin no //yesをnoに
// ラズパイのUbuntu MATEで
// 最初から記述してある
// PermitRootLogin widhout-password
// だとなぜかエラーが出た

// パスワード認証によるログインを非許可
PasswordAuthentication  no //yesをnoに

$ sudo /etc/init.d/ssh start
サービスを起動

クライアント(mac)側の設定

OpenSSHをクライアントで利用するためのパッケージをインストール
$ brew install openssh-client
鍵ファイルの作成
$ ssh-keygen -t rsa
$ cd .ssh
$ vi config

Host [ラズパイ側のエイリアス名前(何でも良い)]
    HostName 192.168.100.40 // ラズパイのIPアドレス
    User [クライアント側のユーザ名]
    Port 615625
    IdentityFile ~/.ssh/id_rsa
#以下の場合180秒ごとにサーバ(ラズパイ)にメッセージを送り、ServerAliveCountMax のデフォルト回数である 3回応答しなくなったらタイムアウトする
ServerAliveInterval 180

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/[鍵ファイルの作成でつけた名前].pub
$ chmod 600 ~/.ssh/[鍵ファイルの作成でつけた名前]

公開鍵をラズパイに転送
$ rsync -e "ssh -p 615625" -avz ~/.ssh/id_rsa.pub [ラズパイ側のユーザ名]@192.168.100.40:~/.ssh

ラズパイ側の設定

$ mv ~/.ssh/[鍵ファイルの作成でつけた名前].pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ sudo /etc/init.d/ssh start

2このようにすれば本来
$ ssh ユーザ名@ホスト名 -p ポート番号
と打ち込むのを
$ ssh ユーザ名
でパスワードを入力せずにパスワード認証方式より安全な公開鍵暗号方式ssh接続できるようになる

最後に

ufwファイアウォールの設定を行う
ufwをインストール
$ sudo apt install ufw

同一ネットワーク内からのみのfromで指定したアドレスからtoで指定したアドレスかつポートへの通信を受信する
$ sudo ufw allow from 192.168.100.0/24 to any port 615625

ufwの設定を読み込み
$ sudo ufw enable
$ sudo /etc/init.d/ufw start

これで完成