2015年5月6日水曜日

NFS Bootできるようにしたraspberry pi 活用 その前に。

NFS Bootする様に設定したrasberry piに必要最小限のセキュリティ設定をします。
(5年前に書いて放置していたが一応公開・・・ 2021/07/03)


1.まずはとりあえず、rootのパスワード設定

  sudo passwd root

  2回同じパスワードを入力します。

2.新規ユーザ作成
  piユーザの代わりにする新しいユーザを作成します。
  
  sudo adduser username
  (usernameには自分で付けたい名前を必ず設定しましょう。)
  新しいユーザのパスワードを

3.piユーザに付与されていたgroupを新規作成したユーザに付与します。

  現在piユーザに設定されているgroupの確認
  groups pi

  色々付与されているが、気にせず全部付与します。

sudo rpi-update

  
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio username
sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio username

reboot

cp -r /home/pi/* /home/username

deluser -r pi

sudo apt-get install vim

cp /etc/vim/vimrc ~/.vimrc

vi .vimrc

su -
cd /home/yoneyone
cp .bashrc .vimrc .bash_aliases /home/root
source .bashrc
exit

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

元の設定ファイルをバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
SSHの設定ファイルを開きます。
sudo vi /etc/ssh/sshd_config
【sshd_configの編集内容】
①ポート番号の変更
SSHのポート番号22は広く知られており、外部からアクセスできるようにした場合攻撃の対象になります。
なのでポート番号を予測しにくい任意の番号に変えておきましょう。
ポートスキャンされればわかってしまうので気休めですが。
ちなみに自由に使えるポート番号は49152~65535です。
5行目ぐらいの以下行の数字22を書き換えます。
Port 22

Port 50022 (例えばの例です上記範囲なら好きに設定していいです)
②rootユーザーのSSHログインを禁止
セキュリティ向上のためrootユーザーでのログインを禁止します。
root権限が必要な場合は今まで同様に一般ユーザーでログインし、rootにスイッチするかsudoで対応します。
27行目付近のPermitRootLoginをyesからnoに変更します。
PermitRootLogin yes

PermitRootLogin no


pi@raspberrypi ~ $

pi@raspberrypi ~ $ cat id_rsa.pub >> .ssh/authorized_keys

pi@raspberrypi ~ $ chmod 700 .ssh

chmod 600 .ssh/authorized_keys

rm id_rsa.pub

sudo vi /etc/ssh/sshd_config

#Port 22
Port 28987
以降の作業も元の記述を残しておきたい場合、同様に作業してください。
続いて、rootログインを禁止します。”PermitRootLogin”という設定項目があるので、以下のように変更します。すでにこのようになっている場合は変更の必要はありません。
PermitRootLogin no
次に、公開鍵ファイル認証を有効にします。しばらく下の方に行くと設定がありますので、以下のように変更してください。
RSAAuthentication    yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys
最後に、パスワード認証を無効にします。さらに下の方にいくと、”PasswordAuthentication yes”という記述がありますので、以下のようにyesをnoに変更します。
PasswordAuthentication no


/etc/inittab
(中略)
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty --noclear 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
(中略)

http://wings2fly.jp/yaneura/raspberry-pi-first-security-setting/

2015年4月30日木曜日

RaspBerry pi NFS 起動への道

いろいろな情報を参考にしてはいるのだが、どうもNFSからのBootがうまくいかない。

最終的に原因不明ながら成功したのでメモを残しておく。


1.前提条件
     NFS Client(今回 NFSから起動させたいraspberry pi)
  OS:Raspbian 2015-02-16
     Client name:greg
  IP:192.168.100.162

  NFS Server
  OS:Raspbian 2015-02-16
  Server name:base
  IP:192.168.100.161
  HDDからBootする様に設定済み
  (参考ページ http://wings2fly.jp/yaneura/raspberry-pi-on-hdd-no1/
  
   Gateway:192.168.100.1

2.Server設定
  
  NFS関連インストール  
sudo apt-get install -y nfs-common nfs-kernel-server
  
  
  /etc/exportsの編集  
sudo vi /etc/exports
  

  下記の設定を追加
/var/raspi_image/greg 192.168.100.0/24(rw,sync,no_root_squash,no_subtree_check)
  

  ディレクトリ作成
mkdir /var/raspi_image

mkdir /var/raspi_image/greg
  

  NFSサービスリロード
sudo /etc/init.d/nfs-kernel-server reload

これでNFSサーバ側の設定は一旦完了。


3.client設定
  
  NFSのインストールおよび設定
sudo apt-get install  rpcbind nfs-common
sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
  
  NFSサーバにコピーするためにコピー先のディレクトリをマウント
sudo mount 192.168.100.161:/var/raspi_image/greg  /wrk
  
  
  /boot以外のファイルをコピーするためにmmcblk0p2を別途マウント
sudo mount /dev/mmcblk0p2 /media
  

  全てのファイルをコピー
sudo cp -rav /media/* /wrk/ 

  起動設定のバックアップ
sudo cp /boot/cmdline.txt /boot/cmdline.back
  

  起動設定の編集
sudo vi /boot/cmdline.txt 
以下の様に編集(1行で書くこと)
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.100.161:/var/raspi_image/greg,udp,vers=3 ip=192.168.100.162:192.168.100.161:192.168.100.1:255.255.255.0:rpi:eth0:off rootfstype=nfs smsc95xx.turbo_mode=N
  
  NFS上にコピーしたfstabファイルの変更
sudo vi /wrk/etc/fstab
以下の様に3行目をコメントアウト
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1 ←ここをコメントアウト
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that


  ここでいったん、Clientをリブート (これでNSFから起動するはず。)
sudo reboot

  起動に成功したら今度はSWAPファイルの整理(以下は特に気にしなければ必要ないです。)
sudo apt-get remove --purge dphys-swapfile
sudo rm /var/swap
sudo update-rc.d dphys-swapfile remove
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=1024
sudo losetup /dev/loop0 /var/swapfile
sudo mkswap /dev/loop0
sudo swapon /dev/loop0


  起動時にSwapを設定するように/etc/rc.localを編集
sudo vi /etc/rc.local
  以下の様に編集
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

#ここから追加

echo "Setting up loopy/var/swapfile.." 
sleep 2
losetup /dev/loop0 /var/swapfile
mkswap /dev/loop0
swapon /dev/loop0

#ここまで

exit 0

  
  その他のチューニング
sudo vi /etc/default/rcS
以下の様に編集
#
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.
# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
#TMPTIME=0
# spawn sulogin during boot, continue normal boot if not used in 30 seconds
#SULOGIN=no
# do not allow users to log in until the boot has completed
#DELAYLOGIN=no
# be more verbose during the boot process
#VERBOSE=no
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes
ASYNCMOUNTNFS=no #←追加

下記参考ページ
http://youresuchageek.blogspot.jp/2013/01/raspberrypi-root-over-nfs-share.html