Raspberry Pi
Raspbian Stretch セットアップ 方法
Raspbian Stretch セットアップ 方法
Debian のコードネームは、「Toy Story」のキャラクターの名前が引き継がれており、Debian 9 のコードネームは「 Stretch 」になった。Debian 10 は「 Buster 」になるそうだ。Raspberry Pi に『 2017-08-16-raspbian-stretch version 』で、新規インストールを行った。
以下に、Raspbian Stretch (Debian 9 stretch) のインストール方法について記載。
スポンサー リンク
目 次
1. Raspbian Stretch のセットアップ
1-1. Systemタブの設定
1-2. Interfacesの設定
1-3. オーバークロックの設定
1-4. Localisationの設定
2. Rspberry Pi の最適化
2-1. ipアドレスの固定化
2-2. Chkconfig のインストールと不要デーモンの無効化
2-3. 不要パッケージの削除
2-4. swap の無効化
2-5. tmpフォルダ の RAMディスク化
2-6. cron により一日に一回システムをリブート
2-7. ログの最小限化
3. セキュリティ設定
3-1. root パスワードの設定とユーザの追加
3-2. sshのポート変更 と root でのログインを無効化
3-3. SSH接続のアクセス制限
3-4. ファイヤーウォールの導入
3-5. SSH接続の公開鍵化
1-1. Systemタブの設定
1-2. Interfacesの設定
1-3. オーバークロックの設定
1-4. Localisationの設定
2. Rspberry Pi の最適化
2-1. ipアドレスの固定化
2-2. Chkconfig のインストールと不要デーモンの無効化
2-3. 不要パッケージの削除
2-4. swap の無効化
2-5. tmpフォルダ の RAMディスク化
2-6. cron により一日に一回システムをリブート
2-7. ログの最小限化
3. セキュリティ設定
3-1. root パスワードの設定とユーザの追加
3-2. sshのポート変更 と root でのログインを無効化
3-3. SSH接続のアクセス制限
3-4. ファイヤーウォールの導入
3-5. SSH接続の公開鍵化
1.Raspbian Stretch のセットアップ
SDカードのフォーマット要領 や Raspberry Pi 起動ディスクの作成要領 については、Raspberry Pi SDカードに関するノウハウ一覧 を参照されたい。
初回起動で、いきなり立ち上がる X Windows のGUI 画面は、Jessie と全く同じ。
1-1. Systemタブの設定
①.ディフォルトユーザー ” pi ” のパスワードは、セキュリティ対策として必ず変更する。
②.ホスト名を設定。
③.起動時画面を『To CLI』に変更する。( CLI画面が使い慣れているから )
④.自動ログインのチェックを外す。
これで次回からはいきなりGUIは立ち上がらず、CLIの地味な画面でユーザ名とパスワードを入力してログインすることになる。
⑤.ディスプレイの解像度を設定する。
ディスプレイの解像度は、プルダウンで選択できる。
②.ホスト名を設定。
③.起動時画面を『To CLI』に変更する。( CLI画面が使い慣れているから )
④.自動ログインのチェックを外す。
これで次回からはいきなりGUIは立ち上がらず、CLIの地味な画面でユーザ名とパスワードを入力してログインすることになる。
⑤.ディスプレイの解像度を設定する。
ディスプレイの解像度は、プルダウンで選択できる。
上記の設定は、下記の設定と同じで、この設定が簡単に行えるようになった。
sudo nano /boot/config.txt の編集
hdmi_ignore_edid=0xa5000080
Disable_overscan=1
hdmi_group=2
hdmi_mode=35
hdmi_ignore_edid=0xa5000080
Disable_overscan=1
hdmi_group=2
hdmi_mode=35
1-2. Interfacesの設定
1-3. オーバークロックの設定
1-4. Localisationの設定
Raspbian Jessie にはデフォルトで日本語フォントが入っていたが、Raspbian Stretch では日本語フォントが入っていない。Stretch で日本語化する場合は、日本語フォントをインストールする必要がある。
sudo apt-get install fonts-ipafont
sudo apt-get install ibus-mozc
sudo apt-get install ibus-mozc
④.Set WiFi country:WiFi country コードの設定。
これで、Raspbian Stretch のセットアップは完了。
ここで一旦、reboot。
ここで一旦、reboot。
2. Rspberry Pi の最適化
ここからの作業は、ifconfig で IP Adress を確認し、SSHでの操作とする。
2-1. ipアドレスの固定化
Raspbian Stretch からは、従来までの eth0 スタイルではなく、enxb827eb815b91 のようなMACアドレスに基づくinterface名に変わった。
最近、また eth0 スタイルに戻った。(2017.11.29)
最近、また eth0 スタイルに戻った。(2017.11.29)
/etc/dhcpcd.conf の編集。
sudo nano /etc/dhcpcd.conf で、ファイルの最下部に以下を追記。
- - - - -
interface enxb827eb815b91 ← MACアドレス ← eth0 で良くなった。
static ip_address=192.168.11.xxx/24 ← xxx 固定 ipアドレス
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
- - - - -
interface enxb827eb815b91 ← MACアドレス ← eth0 で良くなった。
static ip_address=192.168.11.xxx/24 ← xxx 固定 ipアドレス
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
これでリブートすれば、IPアドレスが固定化される。
2-2. Chkconfig のインストールと不要デーモンの無効化
sudo apt-get install chkconfig
- - - - -
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off
- - - - -
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off
2-3. 不要パッケージの削除
$ sudo apt-get autoremove -y wolfram-engine
$ sudo apt-get autoremove -y scratch
$ sudo apt-get autoremove -y python-pygame
$ sudo apt-get autoremove -y pistore
$ sudo apt-get autoremove -y sonic-pi
$ sudo apt-get autoremove -y python-minecraftpi
$ sudo apt-get autoremove -y idle idle3
$ sudo apt-get autoremove -y netsurf-common dillo
$ sudo apt-get autoremove -y debian-reference-common
$ sudo apt-get autoremove -y libraspberrypi-doc
- - - - -
$ sudo rm -rf /home/pi/python_games/
$ sudo rmdir /usr/local/games/
$ sudo rmdir /usr/games/
- - - - -
$ sudo apt-get autoremove -y man manpages
$ sudo apt-get autoremove -y git git-man
$ sudo apt-get autoremove -y galculator
$ sudo apt-get autoremove -y scratch
$ sudo apt-get autoremove -y python-pygame
$ sudo apt-get autoremove -y pistore
$ sudo apt-get autoremove -y sonic-pi
$ sudo apt-get autoremove -y python-minecraftpi
$ sudo apt-get autoremove -y idle idle3
$ sudo apt-get autoremove -y netsurf-common dillo
$ sudo apt-get autoremove -y debian-reference-common
$ sudo apt-get autoremove -y libraspberrypi-doc
- - - - -
$ sudo rm -rf /home/pi/python_games/
$ sudo rmdir /usr/local/games/
$ sudo rmdir /usr/games/
- - - - -
$ sudo apt-get autoremove -y man manpages
$ sudo apt-get autoremove -y git git-man
$ sudo apt-get autoremove -y galculator
2-4. swap の無効化
スワップは(マイクロ)SDカードへ負荷をかけるので、これを無効にする。freeで確認すると、スワップが100MBほどある。
pi@yaopi70:~ $ free
total used free shared buff/cache available
Mem: 949576 31020 555188 6312 363368 851112
Swap: 102396 0 102396
swapを無効化。
sudo swapoff –all
再度、freeで確認。スワップがゼロになった。
pi@yaopi70:~ $ free
total used free shared buff/cache available
Mem: 949576 31104 555088 6312 363384 851028
Swap: 0 0 0
これだけだと、リブートしたときに復活するので swap が起動しないようにパッケージを削除。
sudo apt-get remove dphys-swapfile
ブート設定でも、自動起動しないように dphys-swapfile をオフにする
sudo chkconfig dphys-swapfile off
dphys-swapfile オフの確認。
pi@yaopi70:~ $ sudo chkconfig dphys-swapfile -list
dphys-swapfile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
swap ファイルの削除
sudo rm /var/swap
2-5. tmpフォルダ の RAMディスク化
tmpフォルダのマウント状況確認。
pi@yaopi70:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 3.4G 25G 13% /
devtmpfs 460M 0 460M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.2M 458M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 464M 0 464M 0% /sys/fs/cgroup
/dev/mmcblk0p1 42M 21M 21M 52% /boot
tmpfs 93M 0 93M 0% /run/user/1
sudo nano /etc/fstab で次の2行を追記。
# tmp files put on RAM disk
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
#
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
#
再起動。
sudo reboot
df -h で tmp がマウントされているか再確認。上記で追加したtmp がマウントされている。
pi@yaopi70:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 3.4G 25G 13% /
devtmpfs 460M 0 460M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.2M 458M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 464M 0 464M 0% /sys/fs/cgroup
tmpfs 16M 0 16M 0% /var/tmp
tmpfs 32M 0 32M 0% /tmp
/dev/mmcblk0p1 42M 21M 21M 52% /boot
tmpfs 93M 0 93M 0% /run/user/1000
これでRAMディスク化ができたので、SDカード上の tmpファイルを削除する。
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
sudo rm -rf /var/tmp/*
2-6. cron により一日に一回システムをリブート
RAMをクリアするために、システムを自動でリブートする設定を行う。
sudo crontab -e
nanoでcrontabファイルの編集ができる。
最後の行に下記を追加する。ここでは午前4時5分に再起動がかかるようにした。
5 4 * * * /sbin/reboot
nanoでcrontabファイルの編集ができる。
最後の行に下記を追加する。ここでは午前4時5分に再起動がかかるようにした。
5 4 * * * /sbin/reboot
2-7. ログの最小限化
rsyslog.confを編集し、必要最小限のログ(auth , syslogとmessages)のみを記録させるようにして、ディスクへの書き込みを減らす。
sudo nano /etc/rsyslog.conf
必要最低限のログだけ残し、他はコメントアウトする 。
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
#
# Logging for INN news system.
#
#news.crit /var/log/news/news.crit
#news.err /var/log/news/news.err
#news.notice -/var/log/news/news.notice
#
# Some "catch-all" log files.
#
#*.=debug;
# auth,authpriv.none;
# news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;
auth,authpriv.none;
cron,daemon.none;
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;
# news.=crit;news.=err;news.=notice;
# *.=debug;*.=info;
# *.=notice;*.=warn /dev/tty8
# The named pipe /dev/xconsole is for the `xconsole' utility. To use it,
# you must invoke `xconsole' with the `-file' option:
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
# busy site..
#
daemon.*;mail.*;
news.err;
*.=debug;*.=info;
*.=notice;*.=warn |/dev/xconsole
3.セキュリティ設定
3-1. root パスワードの設定とユーザの追加
root パスワードの設定。
sudo passwd root
exit し root でログインした後、xxxxxx ユーザの追加と sudo グループへの追加。
sudo adduser xxxxxx
sudo gpasswd -a xxxxxx sudo
sudo gpasswd -a xxxxxx sudo
/etc/sudoersを編集し、xxxxxx ユーザのコマンド毎での、パスワード入力を不要にする 。
sudo nano /etc/sudoers
次の行を追記する。
xxxxxx ALL=(ALL) NOPASSWD: ALL
次の行を追記する。
xxxxxx ALL=(ALL) NOPASSWD: ALL
pi ユーザーの削除。
userdel -r pi
3-2. sshのポート変更 と root でのログインを無効化
ssh設定ファイルのバックアップ。
cd /etc/ssh/
sudo cp sshd_config sshd_config.org
sudo cp sshd_config sshd_config.org
sshのポート番号を変更し、SSHの root でのログインを無効にする。
sudo nano sshd_config
(自由に利用できる番号として、公式には49152-65535が規定されている)
Port 22 → nnnnn ← 変更
PermitRootLogin no ← 追記
(自由に利用できる番号として、公式には49152-65535が規定されている)
Port 22 → nnnnn ← 変更
PermitRootLogin no ← 追記
sshサーバを再起動。
cd
sudo service ssh restart
sudo service ssh restart
3-3. SSH接続のアクセス制限
SSH接続は外部から破られるとコンピュータを乗っ取られるので、ローカルLANまたは指定IPからの接続のみを許可するように、アクセス制限を行う。
hosts.denyファイルを修正する。
sudo nano /etc/hosts.deny
# アクセス制限を追加(すべてのアクセスを拒否)
sshd: ALL
# アクセス制限を追加(すべてのアクセスを拒否)
sshd: ALL
hosts.allowファイルを修正する。
sudo nano /etc/hosts.allow
# ローカルLANからのアクセスのみを許可
sshd: 192.168.11.0/24 127.0.0.0/8
# ローカルLANからのアクセスのみを許可
sshd: 192.168.11.0/24 127.0.0.0/8
3-4. ファイヤーウォールの導入
ファイヤーウォールの導入。
sudo apt-get install ufw
ステータスの確認。
sudo ufw status
inactive
inactive
アクセス制限の設定。Port 22 → nnnnn に変更済み番号。
sudo ufw limit nnnnn
ポート 80 と 443 を許可する。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/tcp
ファイヤウォールを有効にする。
sudo ufw enable
ステータスの確認。
sudo ufw status
active
active
3-5. SSH接続の公開鍵化
以下の要領は、すでに公開鍵があり、同じものを使いまわす場合の手順で記載。
参考:
公開鍵ファイル id_rsa.pub をTera Termにドラッグアンドドロップする。
ドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送する。
ドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送する。
鍵格納用フォルダを作り、作成したフォルダのパーミッションを設定した後、鍵をフォルダに移動する。
$ pwd
/home/yaopi
$ ls
id_rsa.pub
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
/home/yaopi
$ ls
id_rsa.pub
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
SSHの設定を、認証鍵方式のログインに変更。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org2
sudo nano /etc/ssh/sshd_config
- - - - -
PubkeyAuthentication yes ← #を外す
AuthorizedKeysFile %h/.ssh/authorized_keys ← 追記
PasswordAuthentication no ← #を外し、yesをnoに変更
sudo nano /etc/ssh/sshd_config
- - - - -
PubkeyAuthentication yes ← #を外す
AuthorizedKeysFile %h/.ssh/authorized_keys ← 追記
PasswordAuthentication no ← #を外し、yesをnoに変更
以上で設定は終了。SSHサーバーを再起動して設定を読み込ませる。
sudo service ssh restart
参考:
以上。
(2017.09.10)
スポンサー リンク