JF1DIR業務日誌(はてなblog版)

アマチュア無線局JF1DIRのアクティビティをつづっています。

Raspberry PiでWebサーバーの諸設定(その2)

まだ設定が終わってなかったので、前回の続きを書いておきます。環境はRPi3にRaspbian 8.0/jessie(kernel 4.4.50-v7)、apache/2.4.10です。

FTPサーバーの設定

自宅サーバーを地元のハムクラブのWebページの引越し先にするという話になり、以前のWebページの管理者がFTPでファイルを転送する必要がでてきました。

$sudo apt-get install vsftpd

/etc/vsftpd.confを編集します。

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

次にユーザー設定ファイル/etc/vsftpd.chroot_listにFTPユーザーのリストを記載。
さらに、ルーターの静的マスカレード設定でftpのポートtcp20と21番を開けて、ファイアウォールの設定を許可し、デーモンをリスタート。

$sudo ufw allow 20
$sudo ufw allow 21
$sudo service vsftpd restart

BASIC認証を設定

Webのとあるページを仲間うちだけアクセスできるよう、パスワードをかけておく基本的な認証方式。やり方はいろいろあるようで、その一つのうまく行った例を上げておきます。
まずはパスワードファイル.htpasswdを作る。IDはfoobarとする。

$sudo htpasswd -c /etc/apache2/.htpasswd foobar

保存先を/etc/apache2になっているが場所は任意。パスワード聞かれるので答えるとファイルが生成される。
/etc/apache2/apache2.confの末尾に、

<Directory "/home/xxxx/public_html/">
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
#AuthGroupFile /dev/null
</Directory>

としapache2をrestart。/home/xxxx/public_html/にアクセスしようとするIDとパスワードを求められるようになります。

let's encryptによるSSL

let's encryptで無料でSSL化できるということなのでやっておきした。https://でないWebは怖がってアクセスされないようです。
まずはルーターの443番ポートを静的マスカレード設定で開けておき、

$sudo ufw allow 443

ファイアウォールでも443番ポートを開けておく。GitでCertbotをCloneする。

$sudo apt-get install git
$cd /usr/share
$sudo git clone https://github.com/certbot/certbot
$cd certbot
$./certbot-auto

この時点でいろいろ聞かるけど、Ctrl+Dで一旦終了。証明書をもらう手続きをコマンドでやってしまう。独自ドメインだとまず問題なくもらえるらしいです。

$./certbot-auto certonly --standalone -d jf1dir.info -m jf1dir@jarl.com --agree-tos

/etc/apache2/sites-available/default-ssl.confを編集。

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/jf1dir.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jf1dir.info/privkey.pem

SSLの設定を有効にしておく。

$sudo a2ensite default-ssl
$sudo a2enmod ssl
$sudo service apache2 restart

これでjf1dir.infoがSSL化されます。
なお90日で更新せよとメールが来ますので、certbotをインストールしたディレクトリに移動して、

$sudo service apache2 stop
$sudo ./certbot-auto renew
$sudo service apache2 start

これで更新できます。

NTPサーバとRaspberry Piの時刻同期

NTPデーモンの設定ファイルである/etc/ntp.confファイルを編集。

$ sudo nano /etc/ntp.conf

server 0〜4から始まる行をコメントアウトまたは削除し、"pool ntp.nict.jp iburst"を加える。

$ sudo service ntp restart

NTPデーモンを再起動します。"ntpq -p"で同期状態を確認できます。