ラズパイでセキュアを意識した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
これで完成