【WordPress】WordPress導入

WorldPressを初期ディレクトリ(wordpress)以外に
リビジョン機能を無効にした状態でインストールします。

  • WordPress導入

    1cd /var/www
    3unzip latest-ja.zip
    4# wordpressというディレクトリで展開されますが、気分で変更
    5mv wordpress/ 任意ディレクトリ名
    6# ディレクトリに権限付与
    7chown -R www-data.www-data 任意ディレクトリ名/
    8cd 任意ディレクトリ名
    9# wp-config.phpをサンプルからコピーして作成
    10cp -pi wp-config-sample.php wp-config.php
    11vi wp-config.php
    # 下記内容を変更
    define('DB_NAME', 'database_name_here');
    ↓
    define('DB_NAME', 'DB名');
    
    define('DB_USER', 'username_here');
    ↓
    define('DB_USER', 'DBユーザ名');
    
    define('DB_PASSWORD', 'password_here');
    ↓
    define('DB_PASSWORD', 'DBパス');
    
    # 下記内容を「編集が必要なのはここまで(略)」より上に追加
    /* リビジョン無効 */
    define('WP_POST_REVISIONS', false);
    

下記URLにアクセスする。
http://z-area.net/任意ディレクトリ名/wp-admin/install.php

初期設定後にログインすると記事を投稿できるようになります。
初期設定画面が出てこない場合、下記設定を一時的に変更する。

1vi /etc/apache2/sites-available/default
# 下記内容を変更(「/var/www/」の子要素)
Options -Indexes FollowSymLinks -MultiViews
↓
Options Indexes FollowSymLinks -MultiViews

WordPress導入後は設定を元に戻しておきます。

【DBサーバ】MySQL導入

【PHP】php5導入

WordPressを公開するためにphp5とMySQLを導入します。

  • php5導入

    1# php本体
    2apt-get install php5
    3# php高速化:気持ち的に
    4apt-get install php-apc
    5# phpライブラリ(cURL):本当に必要か謎
    6apt-get install php5-curl
    7# phpライブラリ(gd):本当に必要か謎
    8apt-get install php5-gd
    9# phpライブラリ(mysql):必須
    10apt-get install php5-mysql

【WEBサーバ】Apache2ログ設定

現場ではログはデイリーなのでどうやってるのかということで設定お試しです。
さらにログ解析した際、エクセルでやらされた覚えがありますが、
やはりツールがあるようなのでお試しです。

  • Apache2ログローテーション

    1vi /etc/apache2/sites-available/default
    # 下記内容を変更
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ↓
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    # 下記内容を追加
    # XXは固定化したいIPによって変更
    # ownlog:自身のアクセスログ ⇒ access_own.log に出力
    # robotlog:検索ロボットのアクセスログ ⇒ access_robot.log に出力
    # nolog:自身と検索ロボット以外のアクセスログ ⇒ access.log に出力
    SetEnvIf Remote_Addr "192.168.XX." ownlog nolog
    SetEnvIf Remote_Addr "127.0.0.1" ownlog nolog
    SetEnvIf User-Agent "Googlebot" robotlog nolog
    SetEnvIf User-Agent "bingbot" robotlog nolog
    SetEnvIf User-Agent "MJ12bot" robotlog nolog
    SetEnvIf User-Agent "YahooFeedSeeker" robotlog nolog
    SetEnvIf User-Agent "ichiro/mobile goo" robotlog nolog
    SetEnvIf User-Agent "360Spider" robotlog nolog
    SetEnvIf User-Agent "SurveyBot" robotlog nolog
    SetEnvIf User-Agent "ia_archiver" robotlog nolog
    SetEnvIf Remote_Addr "208.43.225.84" robotlog nolog
    SetEnvIf Remote_Addr "208.43.225.85" robotlog nolog
    SetEnvIf User-Agent "crowler" robotlog nolog
    CustomLog ${APACHE_LOG_DIR}/access_own.log common env=ownlog
    CustomLog ${APACHE_LOG_DIR}/access_robot.log combined env=robotlog
    CustomLog ${APACHE_LOG_DIR}/access.log combined env=!nolog
    
    # 下記内容を変更
    weekly
    ↓
    daily
    
    rotate 52
    ↓
    rotate 90
    

    1日単位でログをローテーションするよう変更したため、
    新規ファイルをログフォルダで作成できるようログ権限を変更する。

  • webalizer導入
    webalizerによるアクセスログの解析を行います。
    解析対象は下記の通り。
    1.自身と検索ロボット以外のアクセスログ
    2.検索ロボットのアクセスログ

    1apt-get install webalizer
    2# インストール時に自動作成された「/var/www/webalizer」は1のアクセスログ用
    3# 2のアクセスログ用フォルダを作成
    4mkdir /var/www/webalizer/robot
    5# 1のアクセスログ解析ファイルを編集
    6vi /etc/webalizer/webalizer.conf
    # 下記内容を変更
    # Incremental no
    ↓
    Incremental yes
    
    # 下記内容を追加
    HTMLHead <META HTTP-EQUIV="content-Type" CONTENT="text/html; charset=UTF-8">
    
    1# 1のアクセスログ解析ファイルをコピーして2のアクセスログ解析ファイルを作成
    2cp -pi /etc/webalizer/webalizer.conf /etc/webalizer/robot.conf
    3vi /etc/webalizer/robot.conf
    # 下記内容を変更
    LogFile /var/log/apache2/access.log.1
    ↓
    LogFile /var/log/apache2/access_robot.log.1
    
    OutputDir /var/www/webalizer
    ↓
    OutputDir /var/www/webalizer/robot
    

    既に出力済のアクセスログがあれば、過去分を解析する。

    1webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log
    2webalizer -c /etc/webalizer/robot.conf /var/log/apache2/access_robot.log

    アクセスログ解析結果はHTMLで参照する。
    1.http://z-area.net/webalizer/
    2.http://z-area.net/webalizer/robot/

    現状のままでは、誰でもアクセスログ解析結果を参照できてしまうので制御する。

    # 下記内容を追加
    # XXは固定化したいIPによって変更
    order deny,allow
    deny from all
    allow from 192.168.XX.
    allow from 127.0.0.1
    allow from localhost
    
    1vi /var/www/webalizer/robot/.htaccess
    # 下記内容を追加
    # XXは固定化したいIPによって変更
    order deny,allow
    deny from all
    allow from 192.168.XX.
    allow from 127.0.0.1
    allow from localhost
    

【WEBサーバ】Apache2導入

  • IP固定化

    # 下記内容を変更
    iface eth0 inet dhcp
    ↓
    iface eth0 inet static
    
    # 下記内容を追加
    address 固定化したいIP(Cクラス内)
    netmask 255.255.255.0
    gateway ルータのIP
    

Indexes:ディレクト一覧表示制御
FollowSymLinks:シンボリックリンク利用制御
⇒ロリ○ップでのセキュリティ事故はシンボリックリンクに関するもの。
 マイナスオプションで制御しても色々問題があるようなのでひとまず有効のまま。
 参考URL:https://fumiyas.github.io/2013/09/03/no-followsymlinks-is-not-safe.html
MultiViews:多言語表示制御
「http://固定化したいIP/」でIt Works!が表示されれば成功。

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

  • 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」が保存されていることを確認。

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

    1cd
    2mkdir .ssh
    3chmod 700 .ssh
    4cat id_rsa.pub > .ssh/authorized_keys
    5chmod 600 .ssh/authorized_keys
    6rm -f id_rsa.pub

    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
    

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

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

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

    1# すべてのアクセスを拒否
    2ufw default DENY
    3# 20番ポートの通信を条件付許可(FTP)
    4ufw limit 20
    5# 21番ポートの通信を条件付許可(FTP)
    6ufw limit 21
    7# 22番ポートの通信を条件付許可(SSH)
    8ufw limit 22
    9# 80番ポートの通信を許可(HTTP)
    10ufw allow 80
    11# 8080番ポートの通信を許可(HTTP)
    12ufw allow 8080
    13# 設定を有効化後に設定値を確認
    14ufw enable
    15ufw status

    ToActionFrom
    20LIMITAnywhere
    21LIMITAnywhere
    22LIMITAnywhere
    80ALLOWAnywhere
    8080ALLOWAnywhere

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

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

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

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

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

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

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

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

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

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

    1groups ユーザ名
    2ユーザ名 : ユーザ名 adm dialout cdrom sudo audio video plugdev games users netdev input spi gpio
  • SSH接続設定
    SSH接続設定はデフォルトで有効化されているので、ユーザ制限だけを行う。

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

【Raspbian】初期設定

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

  • GUI設定呼び出し

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

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

    ファイルシステムサイズ使用未使用使用率マウント
    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