【Raspbian】ShellShock対策

bashに脆弱性が発見されたらしく、Rapspberry Piも対策してみました。

x='() { :;}; echo vulnerable' bash -c 'echo this is a test'

上記コマンド実行した際に「vulnerable」がコンソールに出ると要対策。

vulnerable
this is a test

というわけで最新版にアップデートします。

apt-get update
apt-get --only-upgrade install bash

再度コマンド実行して対策できたか確認します。

x='() { :;}; echo vulnerable' bash -c 'echo this is a test'
this is a test

「vulnerable」が表示されていなければ問題なし。
アップデートしただけで対策完了。

【Raspbian】DiCE導入

IPアドレスは固定にしていなので、
DynamicDNSサービスを利用していたのですか、
ずっと更新していなかったら怒られました。
そこでDiCEを導入することに。
Windows版を導入しました。

http://www.hi-ho.ne.jp/yoshihiro_e/dice/

上記URLにアクセスし、「DiCE for Windows Version 1.59」の「Download MSI Package」をダウンロードします。
インストールディレクトリを選択し、画面に従いインストールを行います。

インストール後に起動したら、下記設定を行う。

「イベント」-「追加」ボタン押下。
説明:自宅サーバ
イベントタイプ:DNS更新
一般タブ-サービス:MyDNS.JP
一般タブ-ホスト名:z-area-.net
一般タブ-ドメイン名:mydns.jp
一般タブ-ユーザ名:MyDNS.JPのログインユーザID
一般タブ-パスワード:MyDNS.JPのログインパスワード
一般タブ-IPアドレス:空欄
スケジュール-頻度:IPアドレス変化時
スケジュール-変化がない時:21日毎
イベント有効にチェック
それ以外は変更せずデフォルト設定としました。

「イベント」-「今すぐ実行」を選択するとIPアドレスが通知される。
MyDNS.JPにログインしLOG INFOを確認すると、IPアドレスの更新を確認できる。

【Raspbian】Raspberry Pi性能向上

Raspberry Piに無理をさせているので、
ちょっとでもパフォーマンスをアップさせます。

  • GPUメモリ割り当て変更

    raspi-config
    

    「8. Advanced Option」を選択。
    「A3 Memory Split」を選択。
    GPUメモリ割り当てを16に変更。

  • 仮想端末無効化
    6つも仮想端末が立ち上がるようになっていますが、
    ログインする人はSSHで本人のみなので、5つをコメントアウトします。

    vi /etc/inittab
    
    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
    

【Raspbian】セキュリティ向上その2

  • TCP Wrapper設定

    echo "sshd: ALL" >> /etc/hosts.allow
    echo "ALL: ALL" >> /etc/hosts.deny
    
  • SELinux無効化
    CentOSでは出来ていたけどRaspberry Piでは出来ない!?
  • バッファオーバーフロー対策
    CentOSでは出来ていたけどRaspberry Piでは出来ない!?
  • 公開鍵設定
    Tera Termで「設定」-「SSH鍵生成」を選択。
    鍵の種類「RSA」ビット数「2048」を確認して「生成」をクリック。
    鍵の生成が終わったらパスフレーズを入力して「公開鍵の保存」をクリック。
    ※パスフレーズはログイン時に使用するので忘れずに。

    「teratermインストールフォルダ/サーバー名」にファイル名「id_rsa.pub」で公開鍵を保存。
    ※保存場所は任意。

    続いて「秘密鍵の保存」をクリック。
    「teratermインストールフォルダ/サーバー名」にファイル名「id_rsa」で秘密鍵を保存。
    「キャンセル」をクリックして鍵生成窓を閉じる。

    先ほど保存した「id_rsa.pub」をTeraTermの画面へドラッグ&ドロップ。
    ※ログインユーザーのホームディレクトリにid_ras.pubを転送。

    「ファイル転送を行いますか?」で「SCP」をクリック。
    「id_rsa.pub」が保存されていることを確認。

    公開鍵をサーバーへ登録する。

    cd
    mkdir .ssh
    chmod 700 .ssh
    cat id_rsa.pub > .ssh/authorized_keys
    chmod 600 .ssh/authorized_keys
    rm -f id_rsa.pub
    

    sshd_configを編集する。

    vi /etc/ssh/sshd_config
    
    # 下記内容を変更
    # RSA公開鍵による認証その1
    #PubkeyAuthentication yes
    ↓
    PubkeyAuthentication yes
    
    # RSA公開鍵による認証その2
    #AuthorizedKeysFile %h/.ssh/authorized_keys
    ↓
    AuthorizedKeysFile %h/.ssh/authorized_keys
    
    # パスワードでの認証制御
    #PasswordAuthentication yes
    ↓
    PasswordAuthentication no
    
    # 下記内容を追加
    # チャレンジ/レスポンス認証制御
    ChallengeResponseAuthentication no
    
    /etc/init.d/ssh restart
    

    TeraTermは一旦exitする。
    TeraTermを起動。「ホスト名」を入力して「OK」をクリック。
    「ユーザ名」と先ほど入力した「パスフレーズ」を入力。
    「RSA/DSA鍵を使う」にチェックを入れ「秘密鍵」をクリックして保存した秘密鍵「id_rsa」を選択。
    「OK」をクリック。

  • ファイルウォール設定
    簡易ファイアウォールを導入します。

    apt-get install ufw
    

    ufwは上から順に評価されるので、上に1番強い制御を設定。

    # すべてのアクセスを拒否
    ufw default DENY
    # 20番ポートの通信を条件付許可(FTP)
    ufw limit 20
    # 21番ポートの通信を条件付許可(FTP)
    ufw limit 21
    # 22番ポートの通信を条件付許可(SSH)
    ufw limit 22
    # 80番ポートの通信を許可(HTTP)
    ufw allow 80
    # 8080番ポートの通信を許可(HTTP)
    ufw allow 8080
    # 設定を有効化後に設定値を確認
    ufw enable
    ufw status
    

    ToActionFrom
    20LIMITAnywhere
    21LIMITAnywhere
    22LIMITAnywhere
    80ALLOWAnywhere
    8080ALLOWAnywhere

【Raspbian】セキュリティ向上その1

  • ルートユーザパスワード変更

    passwd root
    

    変更後のパスワード入力。
    変更後のパスワード再入力。

  • ログインユーザ(作業ユーザ)追加

    adduser ユーザ名
    

    変更後のパスワード入力。
    変更後のパスワード再入力。
    残りの項目は空でエンターを押下すれば問題なし。
    最後に”Y”を入力。

    sudoを管理する「/etc/sudoers」を編集するための特殊コマンドを実行する。
    特殊なエディタが起動したらデフォルトユーザpiの下に作業ユーザを追加する。

    visudo
    
    # 下記内容を追加
    # PASSWDはsudoコマンド時にパスワード入力を求める。
    ユーザ名 ALL=(ALL) PASSWD: ALL
    

    CTRL+Xとエンターで保存する。
    次にデフォルトユーザpiの所属を確認する。

    groups pi
    pi : pi adm dialout cdrom sudo audio video plugdev games users netdev input spi gpio
    

    作業ユーザにも同様の所属を適用する。

    sudo usermod -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio ユーザ名
    

    再起動後、作業ユーザが同様の所属になったか確認する。

    groups ユーザ名
    ユーザ名 : ユーザ名 adm dialout cdrom sudo audio video plugdev games users netdev input spi gpio
    
  • デフォルトユーザ削除

    userdel pi
    

    「/etc/sudoers」からもデフォルトユーザをコメントアウトする。

    visudo
    
    # 下記内容を変更
    pi ALL=(ALL) NOPASSWD: ALL
    ↓
    # pi ALL=(ALL) NOPASSWD: ALL
    
  • SSH接続設定
    SSH接続設定はデフォルトで有効化されているので、ユーザ制限だけを行う。

    vi /etc/ssh/sshd_config
    
    # 下記内容を変更
    # rootログイン制御
    PermitRootLogin yes
    ↓
    PermitRootLogin no
    
    # 空パスワード制御
    PermitEmptyPasswords yes
    ↓
    PermitEmptyPasswords no
    
    # 下記内容を追加
    # 指定ユーザ名のみのログイン制御
    AllowUsers ユーザ名
    
    /etc/init.d/ssh restart
    

【Raspbian】初期設定

インストールまでは各サイトを参考にし、OSはRaspbianを選択。
コマンドの記述は特に注釈がない限りはrootで実行です。

  • GUI設定呼び出し
    raspi-config
    

    piのパスワードとSSHの有効化はGUIで変えました。
    日本語文字パック導入する前にここで設定すると
    GUIが文字化けするとかなんとか。

  • キーボード設定
    母艦からssh接続しかしないのでデフォルトのままでいきました。
  • スワップ領域拡張
    容量確認しても問題ないように見えたので、そのまま。
  • 日本語文字設定
    apt-get install fonts-ipafont ttf-vlgothic xfonts-intl-japanese xfonts-intl-japanese-big
    apt-get install fonts-ipafont ttf-vlgothic xfonts-intl-japanese
    dpkg-reconfigure locales
    

    en_GB.UTF-8 UTF-8をスペースで選択。
    jp_JP.EUC-JP EUC-JPをスペースで選択。
    jp_JP.UTF-8 UTF-8をスペースで選択。
    タブで移動しOKを選択。
    3つから好きなの選択しタブで移動しOKを選択。
    今回はen_GB.UTF-8を選択。

  • ホスト名変更
    z-area.netに変更。
  • 最新アップデート
    apt-get update
    apt-get upgrade
    
  • 容量確認
    df -h
    

    ファイルシステムサイズ使用未使用使用率マウント
    rootfs5.6G2.8G2.6G52%/
    /dev/root5.6G2.8G2.6G52%/
    devtmpfs239M0239M0/dev
    tmpfs49M248K49M1%/run
    tmpfs5.0M05.0M0%/run/lock
    tmpfs98M098M0%/run/shm
    /dev/mmcblk0p560M9.4M50M16%/boot
    /dev/mmcblk0p327M397K25M2%/media/SETTINGS
  • 再起動
    shutdown -r now
    
  • シャットダウン
    shutdown -h now
    
  • vimエディタ導入
    apt-get install vim
    

    ログインユーザの.bashrcを変更して
    viコマンドでvimエディタを使えるように変更します。

    # ホームディレクトリ(/home/ユーザ名)に戻る
    cd
    vim .bashrc
    
    # 下記内容を最終行に追加
    alias vi='vim'