2016年5月20日金曜日

Microserver FreeBSD10.3でNASとWebサーバーを構築する5 メインテナンス編

一通りの設定が済んだので、メインテナンスについて述べる。

普段のアップデート作業まとめ
カーネルのアップデートチェック
# freebsd-update fetch
アップデート対象があったら
# freebsd-update install

パッケージに脆弱性がないかチェック
# pkg audit -F
パッケージ一括アップデート( -yオプションを付ければ自動でインストール)
# pkg upgrade

ZFSストレージにエラーがないかチェック
# zpool status

有効になっているサービスの確認
# service -e

入っているパッケージの確認
# pkg version -v

パッケージを探す
# pkg search パッケージ名

パッケージの削除(例としてsamba47を削除する場合)
# pkg delete samba47-4.7.12

使われていない package の自動削除(不必要な依存パッケージの削除)
# pkg autoremove

アップデートの確認をCronで自動実行する
# vi /etc/crontab
#↓を追加(実行結果はvar/log/batch.logに出力され、更新の必要がある場合メール通知される)
@daily                                  root    freebsd-update cron >> /var/log/batch.log 2>&1

periodic絡みの毎日実行されるコマンド内容をメールでなくログ出力にする場合
# vi /etc/periodic.conf
#下記内容を追加
daily_output=/var/log/daily.log
weekly_output=/var/log/weekly.log
monthly_output=/var/log/monthly.log
#重要な内容のみ出力するには下記も追加。
daily_show_success=NO
daily_show_info=NO
daily_show_badconfig=NO
#/tmpディレクトリ下にある3日以上前の一時ファイルを毎朝削除するには下記を追加
daily_clean_tmps_enable="YES"

本当にFreeBSDの管理は楽だと思う。
カーネルの更新はこちら
https://maimokumemo.blogspot.com/2020/01/freebsd.html

root宛てのメールはssmtpをインストールしてGmailに転送すると便利。


参考・引用
ZFSを使いたかったので、FreeBSD 10.0をインストールしてNAS構築
http://ik-fib.com/2014/02/freebsd10-install/
[FreeBSD] 日常使いのpkgng その1
http://april.fool.jp/blogs/2013/03/freebsd-%E6%97%A5%E5%B8%B8%E4%BD%BF%E3%81%84%E3%81%AEpkgng-%E3%81%9D%E3%81%AE1/
pkg によるバイナリ package の管理
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/pkgng-intro.html

Microserver FreeBSD10.3でNASとWebサーバーを構築する4 Apache設定編

OSインストール、Sambaの設定が済んだら、いよいよApacheの設定を行う
(やや下書き記事。時間あるとき追記します。 )

まず、Apache2.x系のパッケージを検索

# pkg search apache2
apache22-2.2.31                Version 2.2.x of Apache web server with prefork MPM.
apache22-event-mpm-2.2.31      Version 2.2.x of Apache web server with event MPM.
apache22-itk-mpm-2.2.31        Version 2.2.x of Apache web server with itk MPM.
apache22-peruser-mpm-2.2.31    Version 2.2.x of Apache web server with peruser MPM.
apache22-worker-mpm-2.2.31     Version 2.2.x of Apache web server with worker MPM.
apache24-2.4.20_1              Version 2.4.x of Apache web server
p5-Apache2-SOAP-0.73_3         Apache2 mod_perl2 SOAP Server
p5-Apache2-SiteControl-1.05_2  Perl web site authentication/authorization system

apache2.4系をインストール
# pkg install apache24


設定ファイルを編集
vi /usr/local/etc/apache24/httpd.conf

編集すべき場所↓

WevDAVを使う場合は下記コメントアウト#を消して有効にする
LoadModule dav_module libexec/apache24/mod_dav.so
LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so
Include etc/apache24/extra/httpd-dav.conf

#サーバーのポート番号
Listen 80

#自分のドメイン名またはグローバルIPアドレス
ServerName example.com

#ドキュメントルート(ブラウザからサーバーにアクセスした時に表示される最上層の場所)
DocumentRoot "/export/homeserver" 

公開ディレクトリの個別設定
<Directory "/tank/homeserver">
    #インデックスリストを表示するかどうか(下の場合はする場合)
    Options Indexes FollowSymLinks
    #Sambaとの文字化けを防ぐためにUTF-8で統一↓
    IndexOptions Charset=UTF-8
    #.htaccessファイルでディレクトリごとの設定変更を許可するか(下記の場合は許可)
    AllowOverride All
    #どのIPからも接続は許可
    Require all granted
    #WebDAVを使用する
    Dav On
</Directory>

Apacheをリバースプロキシにして特定のURLをLAN内の別のサーバーに転送する場合
ProxyPass /hoge2/ http://192.168.x.xx/
ProxyPassReverse /hoge2/ http://192.168.x.xx/ 

Apacheの設定が終わったらrc.confに登録
# echo 'apache24_enable="yes"'>> /etc/rc.conf

Apache起動
# /usr/local/etc/rc.d/apache24 start 

 今後Apacheの設定を変えただけの場合はreloadでも良い。
# /usr/local/etc/rc.d/apache24 reload

SSL化
大体
http://www.lifewithunix.jp/notes/2015/09/28/how-to-install-https-apache24-on-freebsd10-2/
ここに書いてあるとおりにする

SSLに必要な署名ファイルたちは
http://www.kyoji-kuzunoha.com/2013/08/startssl-certificate.html
ここのように設定する

注意すべき点は/extra/http-ssl.conf のVirtualhostの中のポート番号をSSLのポートに設定するのと、DocumentRootのパスを公開するディレクトリに設定しないとSSLアクセス出来ない。
また、証明書と秘密鍵のペアが違うとSyntax OKとは出るが、サーバーは起動しない。

Webdavについては、とりあえず見られればいいやというスタンスで、書き込みなどについては設定ができてないかもしれない。時間があるとき見直したい。


参考・引用
FreeBSD 10.2: Apache 2.4 に SSL を導入
http://www.lifewithunix.jp/notes/2015/09/28/how-to-install-https-apache24-on-freebsd10-2/

StartSSLで無料のSSL証明書を取得してサーバーに適用する
http://www.kyoji-kuzunoha.com/2013/08/startssl-certificate.html

2016年5月19日木曜日

Microserver FreeBSD10.3でNASとWebサーバーを構築する3 samba設定編

OSインストール、ZFSストレージ設定まで終わったら、今度はsambaを設定し、NASとして使えるようにする。

まずはsambaインストールから。
# pkg search samba
p5-Samba-LDAP-0.05_2           Manage a Samba PDC with an LDAP Backend
p5-Samba-SIDhelper-0.0.0_3     Create SIDs based on G/UIDs
samba-nsupdate-9.8.6_1         nsupdate utility with GSS-TSIG support
samba-virusfilter-0.1.3_1      On-access anti-virus filter for Samba
samba36-3.6.25_3               Free SMB and CIFS client and server for Unix
samba36-libsmbclient-3.6.25_2  Shared lib from the samba package
samba36-nmblookup-3.6.25       NetBIOS Name lookup tool
samba36-smbclient-3.6.25       Samba "ftp-like" client
samba41-4.1.22_2               Free SMB/CIFS and AD/DC server and client for Unix
samba42-4.2.11                 Free SMB/CIFS and AD/DC server and client for Unix
samba43-4.3.8                  Free SMB/CIFS and AD/DC server and client for Unix

 samba4.3.8が出ているのでこれをインストール
# pkg install samba43

初回はsambaの設定ファイルを作成。
# vi /usr/local/etc/smb4.conf

[global]←samba全体設定
workgroup = WORKGROUP
server string = FreeBSD
security = user
hosts allow = 192.168.←同一LANからのアクセスのみ許可
netbios name = hogehoge←他のPCから見られるサーバー名
map to guest = Bad User
load printers = no
log file = /var/log/samba4/log.%m
max log size = 50
dns proxy = no
printing = bsd
create mask = 760
directory mask = 770
wide links = yes
unix extensions = no
follow symlinks = yes

[share]←個別設定。ここではゲストアクセス可、読み書きOK設定
path = /tank/homeserver/test1
browseable = yes
writable = yes
guest only = yes
guest ok = yes

[user1]←個別設定例2。特定ユーザーのみアクセス可、サーバーを参照してもパスを直接打たないかぎり表示もされない設定
path = /tank/homeserver/user1
browseable = no←ここでパス直打ち以外の表示を拒否
writable = yes←ユーザーは書き込み可能
valid users = user1←ここで指定したユーザーのみアクセス可

設定が終わったらsambaをrc.dに登録し、起動できるようにする。
# echo 'samba_server_enable="YES"'>> /etc/rc.conf
# /usr/local/etc/rc.d/samba_server restart
 
なお、上記の[user1]のような設定をした場合は、user1の名前でFreeBSD上にアカウントを作り、sambaにも登録する必要がある。また、Windowsからアクセスする場合、このユーザー名とパスワードはWindowsのものと同一である必要がある。

FreeBSDにユーザー追加
# adduser

 ユーザー認証(FreeBSD上のアカウントをSambaで使えるようにする)
# pdbedit -a -u user1

この時、Windowsのユーザー名とそのパスワードも一致させる必要がある。
その上で、sambaで使うフォルダの所有者とパーミッションを設定する必要がある。
# chown -R user1 /tank/homeserver/user1
# chmod -R 770 /tank/homeserver/user1
 以上で、Windowsから、\\hogehoge\user1とアクセスした際に、アクセスできるようになっているはずである。


引用・参照
FreeBSD 10 + samba 4で、Windowsからeveryoneアクセス可能な共有フォルダを作成
http://symfoware.blog68.fc2.com/blog-entry-1423.html

Microserver FreeBSD10.3でNASとWebサーバーを構築する2 ZFSストレージ設定編

せっかくFreeBSDで運用するので、売りであるZFSを使う。いくつかモードが有るのだが、HDD4台で運用する場合、冗長性と容量を確保できるRaidz1を用いた。

といっても一つの記事にする必要もないぐらい簡単で、下記コマンドで作成できる。
zpool create -m {マウント先} {プール名} {RAID レベル} {デバイス 1} {デバイス 2} ...

zpool create -m /tank/ tank raidz1 ada1 ada2 ada3
以上で/tank/にマウントされるRaidz1ストレージができる。



なお、OSを再インストールした場合、ZFSを再びマウントするには、
# zpool import

   pool: zpool0
     id: 4383566041817703211
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zpool0      ONLINE
          raidz1-0  ONLINE
            ada1    ONLINE
            ada2    ONLINE
            ada3    ONLINE

# zpool import zpool0
# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
zpool0         47.3M  12.5T   368K  /zpool0
zpool0/gzip    4.78M  12.5T  4.78M  /zpool0/gzip
zpool0/gzip-9  4.76M  12.5T  4.76M  /zpool0/gzip-9
zpool0/lz4     6.13M  12.5T  6.13M  /zpool0/lz4
zpool0/main    15.8M  12.5T  15.8M  /zpool0/main
zpool0/zle     13.9M  12.5T  13.9M  /zpool0/zle
# zpool list
NAME     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zpool0    19T  71.8M  19.0T     0%  1.00x  ONLINE  -
↑解説
zpool importで、マウントされてないがインポート可能なZFSストレージのリストアップを行い、
zpool import プール名でマウントする。マウントポイントは以前の場所となる。この場合で言う/tank/にマウントされる。
マウントされたことはzfs listやzpool listで確認できる。

参考・引用
CentOS 7 + ZFS でファイルサーバを作成
http://lazy-dog.hatenablog.com/entry/2014/08/17/033038

ZFSを使いたかったので、FreeBSD 10.0をインストールしてNAS構築
http://ik-fib.com/2014/02/freebsd10-install/

Oracle Solaris 11 ZFSを使ってみよう(構築・運用ガイド)
https://www.fujitsu.com/jp/documents/products/computing/servers/unix/sparc/technical/document/01_ZFS.pdf

Microserver FreeBSD10.3でNASとWebサーバーを構築する1 OSインストール編


この記事は、主にHP Microserverで、できるだけ簡単にFreeBSDを用いてNASとWebサーバー構築し、実用的に運用することを目的としている。以下の様な作りを目指す。

HP MicroserverでUSBメモリ2つあるいは3つをOS用にし、ストレージ用にHDD4台で運用。
USBメモリは安いが耐久性が弱いことが多いので、RaidZ-Mirrerを使い冗長性を確保。
ストレージHDDは容量と冗長性を確保するためRaid-Z1で運用。
Portは入れず、Packageだけで管理する。(ゼロデイ攻撃に弱くなるが、運用は簡単になる)
NASアクセス時、日本語ファイルを文字化けさせない

特にPortを入れないあたり、セキュリティに関して万全とはいえないので、自己責任で行うこと。
ただ、Packageでも実用上十分な堅牢性や機能性は確保できるのではないかと思う。

なお、前提知識としてある程度のネットワークやUNIXコマンドの知識のほか、viエディタを使えることが必要である。(多分この記事を読みながら調べれば済むはず)
ド素人では難しいが、PC中級者以上ならばできるのではないかと思う。

OSインストール
USBメモリを用いてインストールする。OS領域にUSBメモリを2つ使う場合、インストール先USB2つと、それとは別にインストール用USBが必要。

下記サイトより自分のマシンに合ったイメージをダウンロードし、インストール用USBにイメージを書き込む。大抵の場合はamd64-memstick.imgを選択すれば問題ない。
https://www.freebsd.org/ja/where.html

イメージのUSBへの書き込みはWin32DiskImagerを使う。
下記サイトからダウンロードする。
https://osdn.jp/projects/sfnet_win32diskimager/

 USBに書き込んだら、インストール用USB、インストール先USBを刺してPCを起動。

FreeBSD ブートローダメニュー
このままEnterを押す。

ウェルカムメニュー
Installを選択してEnter

キーマップの選択
 YesでEnter

キーボードメニューの選択
自分の使っているキーボードを選択してEner。(jp.106.kbd keymapを選択すればたいてい問題ない)
その後Continue with~(自分の選択したキーマップ)でEnter

ホスト名の設定
ここでホスト名を入れる。今回は自宅サーバー用にドメインを取得していたのでそれを入力した。特にない場合は空欄でOKでも平気だったはず。


インストールするコンポーネントの設定
 ここはlib32だけを選択した状態でEnter。選択はスペースキーで行う。不要なgames等はチェックを外す。(上記画面とは違うことに注意)
今回は、手軽に運用することを目的とするので、ソースからビルドするPorts treeはチェックを外した。 必要なソフトはパッケージで入手することになる。

FreeBSD 10.x 以降でのパーティション分割の選択
インストール先のパーティション設定。今回はUSBを複数用いてZFSのMirrorモードを使うので、ZFSを選択しEnter

ZFS パーティションメニュー
Pool Type/Disks:を選択しEnter

ZFS プールタイプ
Mirrorを選択しEnter

ディスクの選択
インストール先のストレージを選択しEnter

ZFS パーティションメニュー
これで 再びこの画面に戻り、Installを押すとインストールが開始されるはずなのだが、私の場合途中でエラーが出てしまった。どうやらPool Nameがzrootのままでは勧めないとの事だったので、適当な名前zroot1等にしてインストールしたらうまく行った。

配布ファイルのダウンロード
しばらくこのような画面が続く。しばらく待機。

root パスワードの設定
この画面まで来たら、rootのパスワードを設定。打ち間違えないように確認のパスワードもタイプする。

イーサネットインタフェースの選択
ネットワークカードを選択しEnter

IPv4 ネットワークの選択
IPv4で運用する場合Yes。大抵の場合はまだIPv4なのでOKを押す。

IPv4 DHCP 設定の選択
DHCPサーバーから適当なIPアドレスを割り当てる場合はYesを。特定のIPアドレスを使う場合はNOを選択し、次に進む

IPv4 の静的な設定
前画面でNOを選択した場合はここでIPアドレスを設定。

IPv6 ネットワークの選択
IPv6を使う場合はYesを、渡しの場合はまだ使わないのでNOを選択した。

DNS の設定
DNSの設定。iSearchは自分のドメイン名を入力。なければ空欄でもいいかも。
IPv6はNoを押した場合、画像のようなIPv6DNSは表示されずIPv4DNSの設定だけになる。一つは設定が必要。大抵の場合DNSはルータのアドレスを入れればよい。

ローカルまたは UTC クロックの選択
時刻の設定。大抵の場合NOを押す。

地域の選択
タイムゾーンの設定。自分が住んでいる国(AsiaのJapanese)を選択。

追加で有効にするサービスの選択
有効にするサービスの設定。sshdとpowerdはチェックを入れておく。10.3ではこの他にcrashdにデフォルトでチェックが入っていたのでそのまま有効にした。

新しいユーザのアカウントの作成
ユーザーの追加でEnter

ユーザ情報の入力
ユーザー名だけ任意の名前で入れたら、あとはEnterのまますすめる。途中、パスワードを撃ちこむだけそこは任意の文字列を入力。あとは何も考えずにそのままEnter

ユーザおよびグループの管理を終了する
 利用するユーザーの登録が終わったらnoを入力しEnter。


このままセットアップを完了してよければExitを選択しEnter

Manual Configuration
追加の設定をするか聞かれるが、特に必要なければNoを選んでEnter

インストールの終了
 再起動時するので、電源が切れた段階でインストール用USBを外す。

ここまで行けば、あとはリモートから管理できる・・・とおもいきや、次の設定を行うまでリモートからsuコマンドが使えず管理者コマンドが使用できないので、再起動したらrootでログインして次の設定を行う。 自分のユーザー名がhogeの場合
# vi /etc/group

(変更前)
wheel:*:0:root

(変更後)
wheel:*:0:root,hoge 
 これで変更を保存し終了すればリモート管理ができる。お疲れ様でした。

参考(画像引用)
FreeBSD のインストール
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/bsdinstall.html

メモ: FreeBSDでsuを使うにはユーザをwheelグループに所属させる
http://d.hatena.ne.jp/torazuka/20110505/wheel