raspi:proftpd SSL/TLS

ちょっとしたことで、ftpd欲しいと思ったりしたので、サービスを立てた。

インストールはいつもの通り、aptでいれちゃいます。

$ sudo apt-install proftpd

/etc/proftpd/ssl.conf

TLSRSACertificateFile           /etc/letsencrypt/live/[domain name]/cert.pem
TLSRSACertificateKeyFile        /etc/letsencrypt/live/[domain name]/privkey.pem
TLSCACertificateFile            /etc/letsencrypt/live/[domain name]/chain.pem

/etc/proftpd/modules.conf

LoadModule mod_tls.c #コメントを外す
[code]

お好みで、virtualhostの設定
[code]
VRootAlias upload /hpme/ftp/[domain_name]/upload
#
<VirtualHost ftp.[domain_name]>
VRootEngine on
VRootServerRoot /hpme/ftp/[domain_name]/
VRootOptions allowSymlinks
#DefaultRoot ~
</VirtualHost>

raspi:Value-Domain DDNS

そのまま使えたので、有り難く頂戴しました。
(参考)
https://qiita.com/kouichirou/items/b89beaf27942aadd9307

/usr/local/sbin/update_ddns.sh

#!/bin/bash

CONFIG_FILE='/etc/update_ddns.conf'
IP_CACHE_FILE='/tmp/update_ddns_ip'
DDNS_CACHE_FILE='/tmp/update_ddns_result'

# sources DOMAIN= , PASSWORD= and HOST=
source $CONFIG_FILE

old_ip=`[ -e $IP_CACHE_FILE ] &amp;&amp; cat $IP_CACHE_FILE || echo ''`
new_ip=`wget --quiet -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip'`
if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0
fi

url="http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=$DOMAIN&amp;p=$PASSWORD&amp;h=$HOST"
result=0
wget --quiet -O - "$url" 2&gt;/dev/null | tee $DDNS_CACHE_FILE | grep 'status=0' &gt;/dev/null &amp;&amp; result=1

if (( !$result )); then
    echo `date` 'FAILED'
    logger -t UPDATE_DDNS "ERROR: FAILED result:" `cat $DDNS_CACHE_FILE`
    exit 1
fi

echo $new_ip &gt; $IP_CACHE_FILE

echo "UPDATED ($new_ip)"
logger -t UPDATE_DDNS "INFO: UPDATED with new IP:$new_ip"
exit 0

設定ファイル
HOSTについて、更新するドメインのホスト名を指定します。DNSレコード編集画面のホスト名と全く同じ仕様です。
例: *(全ホスト)、www、指定なしはホスト名なし
/etc/update_ddns.conf

DOMAIN=[Domain name]
PASSWORD=[Domain Password] 
HOST=*

Scriptと設定ファイルの設置が出来れば、起動してみます。

# /usr/local/sbin/update_ddns.sh
UPDATED (xxx.xxx.xxx.xxx)

アップデート出来たようです。
このあたりの処理で、同一IP ADDRESSの場合は、wgetの処理は行わないようです。

if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0

updateの確認が出来たので、cronでまわすように設定します。

# crontab -e
*/10 * * * *    /usr/local/sbin/update_ddns.sh &gt; /dev/null 2&gt;&amp;1

念のため、cronを再起動しておこう。

# service cron restart

raspi:raspbx ASTERISK


以前に書いた記事


今回は、raspbxというディストリビューションをインストールしてみる。

raspbxは、インストールするだけでWEB GUIを使った管理が可能となるディストリビューションらしい。

頻繁にupdateされているようで、良い感じです。

LAN内で接続する分には、問題は少なくなるが、外から接続させる場合は、セキュリティに注意が必要なので、VPN等を利用する。VPNはQNAPに入っているOpenVPNを利用して接続することにする。

最終的には、readonly filesystemで構築できれば、より安全です。crackされても再起動すれば元の状態に戻ります。万が一crackされた場合は、書込許可にしたfilesystemで起動し、パスワードを変更し、再度readonly filesystemで起動してしまえばOKです。そのためには、readonlyなfilesystemに対応したkernelが必要ですが、それについてはまたの機会に。このあたりが参考になりますね。

最新版は、Raspbian Stretchをベースに構築されている。

  • Asterisk 13.20.0
  • FreePBX 14.0.2.10
  • Upgrade to FreePBX 14 (latest stable release)
  • Upgrade to Raspbian Stretch, supported for 3 years from now
  • Based on official Raspbian Stretch Lite 2017-09-07 image
  • MariaDB replaces MySQL
  • Zram replaces disk-based swapSSH login:user: root
    password: raspberry

インストールは、OfficialのRasbianをインストールする手順と同じです。

インストール後、基本的には、Documentの通り進めてきます。

まずは、dhcpでIP Addressを受けとっているので、raspbxにloginします。login方法はいくつかあるので、可能なものでログインします。

SSH Login:

$ ssh root@ip address

Web GUI:

http://ip address

MacOS:

$ ssh root@raspbx.local

Asteriskはセキュリティに気をつけないといけませんので、まず、rootパスワードを変更し、upgradeを行います。

# raspi-config
# passwd
# raspbx-upgrade

ssh hostkey生成

# regen-hostkeys

Timezoneの設定

configure-timezone

localesの設定

# dpkg-reconfigure locales

Email (smtp)の設定
細かな設定については、ググればいろいろヒットするので、それを参考に設定する。

(参考)http://tateisu.hatenablog.com/entry/2012/03/03/083829

# dpkg-reconfigure exim4-config
# vi /etc/exim4/passwd.client
SMTP_HOSTNAME:USERNAME:PASSWORD
# /etc/email-addresses
root: your_email@someisp.com
asterisk: your_email@someisp.com
# update-exim4.conf

設定が終われば、テストメールを送る。

# send_test_email your_email@someisp.com

Fail2Banも忘れずインストールしておく

# install fail2ban

設定はTutrialを参考に。

LAN側からAsteriskを出す時は、セキュリティに注意が必要だ。国外通話掛けられる可能性もあるので、可能なら電話契約で国外通話を無効にしたうえで、fake-hwclockやdnsmasqなどを設定しておくとよい。

# apt-get install fake-hwclock
# apt-get install dnsmasq
# cd /etc
# mv resolv.conf resolv.conf.dnsmasq
# vi resov.conf.dnsmasq
nameserver 127.0.0.1
# service dnsmasq restart

細かな設定などは、FreePBX のドキュメントを参考にする。

raspi:Raspbian ヘッドレスで設定

何度か、RaspbianOSをインストールして、いちばん面倒だったのが、モニタ、キーボード、マウス、NICのつなぎ替えでした。
そこで、今回は事前に設定ファイルを準備し、OS起動前にシステムに反映する方法を試してみた。
sshを有効にしておけば、なんとでもなりますからね。
ethについてはdhcpcdが起動しますのでIP ADDRESSを受けとることが出来ます。
確認は、routerのlogで確認するといいでしょう。

Raspiberry Pi 3はPoE HATと呼ばれる追加ボードで受電に対応できるので、便利ですね。NICケーブル1本刺すだけでOKなんだから。でもPoE HATは高いな。探せば安いのがあるのかもしれないが。

価格(2018/10/12)
売り切れ
https://www.switch-science.com/catalog/3971/ 3240円

 

PoEの規格だけ調べておこう。PoEとPoE+があるんですね。

規格

IEEE802.3af IEEE802.3at
1ポート当たり最大 15.4W 30.0W
LANケーブル CAT3以上 CAT5e以上

 

電力クラス

クラス 給電 受電 対応規格
0 15.4W 0.44〜12.95W IEEE802.3af
1 40.W 0.44〜3.84W
2 7.0W 38.4〜6.49W
3 15.4W 6.49〜12.95W
4 30.0W 12.95〜25.5W IEEE802.3at

 

(参考)
https://dev.classmethod.jp/hardware/poe-hat/

 

純正のPoE HATはIEEE802.3afのクラス2らしいのでハブも802.3afに対応したものが必要となる。

ここから、実際の設定に入ります。

SSHが有効になるよう設定を行います。設定と言いましても空ファイルを置くだけです。
設定は、/boot以下に書込を行いますので、bootをmountします。
mountといっても、macだと micro sdcardを刺すと自動でmountしてくれます。

$ cd /Volumes/boot

sshを有効にするには、/bootに “ssh”というからファイルを作成すればよい。

$ touch ssh

これで、起動すればOKですが、micro sdcardをumountするのを忘れないように。

無線LANを有効にする場合は

今回は、有線LANを使いましたので、wpa_supplicant.confは作成しません。
無線LANを使うなら、このような感じ設定すればよいかな。

wpa2 passphrase(平文)

$ pwd
/Volumes/boot
$ vi wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="使うAPのSSID"
    psk="APのパスフレーズ"
    scan_ssid=1
}

wpa2 passphrase(hash)

passphraseをそのまま書くのは良くないので、WPA key calculationを利用させてもらい、keyを計算できます。

http://jorisvr.nl/wpapsk.html

計算結果をconfigに書き込む。

$ vi wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="abc"
    psk=1d3e8d4e64f7dd82ff083b21c7f2856e90c0762669f91f376c5fe85510e4f596
scan_ssid=1
}

scan_ssid=1 というのは、ステルスAPに接続する場合に必要だそうです。

(参考)
https://qiita.com/y_k/items/2e37583d4a5dcf81dc19

raspi:MineCraft Pi サバイバルモード

オリジナルのMineCraftには、4つのモードが搭載されています。

特徴 対応
サバイバルモード Playerは死にます
時間制限あり
動物やゾンビの出現
mod
以下転載:http://nonhide.blog.jp/archives/42415041.html
HPとアーマーは使えるようになります。
空は飛べません。
資源は自分で獲得しましょう。
作業台が作れ機能します。
かまども機能します。
矢じり・石炭・鉄までは確認済み。
レッドストーンも確認!けどアイテム化できず。(アイテム化の方法あるのでしたら教えて下さい。)
マルチプレイが出来ない。(相手のバージョンが違うといって怒られる。誰か解決方法知りませんか?)
敵出てきます。クモ・ゾンビ・弓矢兵・クリーパー確認。
武器で敵に攻撃できません。(方法がわからないだけかも。)
クモは倒せます。(高いところから体当たりで落としたら殺せた!)
クモから糸がアイテム化した。
ゾンビは倒せます。(日光の下で焼死します。)
夜にならないのでベットはあっても寝れません。
溺れます。
麦とサトウキビは育ちます。
金やダイヤはまだ未確認。出てくるのかな~?
ハサミ?で羊の毛は刈り取れます。(しかし二度と毛が生えてこないみたい)
火打ち石が作れますが、用途不明・・・だれか教えて!!
弓作れます。矢を引き絞れるけど、飛んでいかない。
クリエイティブモード Playerは死にません
無限の資源が使い放題
RasPi純正
アドベンチャーモード オリジナルゲームを作れる ×
スペクテイターモード モンスター目線
観察が目的
洞窟探しとワールド調査
×

RaspiにインストールされているMineCraftはクリエイティブモードのみプレイできる。
これをサバイバルモードでも対応できるようパッチを当ててみる。
OpenGLのライブラリのパスが切れているので、追記しないとダメかも

$ sudo apt-get install bsdiff
$ cd /opt/minecraft-pi
$ wget https://www.dropbox.com/s/iutdy9yrtg3cgic/survival.bsdiff
$ <del>wget https://dl.dropbox.com/s/dscw98vlki7rfsi/mcpifull.bsdiff</del>
$ bspatch minecraft-pi mcpipatched survival.bsdiff
$ <del>bspatch minecraft-pi mcpipatched mcpifull.bsdiff</del>
$ sudo chmod +x mcpipatched

起動方法

$ cd /opt/minecraft-pi
$ env LD_LIBRARY_PATH=/opt/minecraft-pi/lib/brcm/:LD_LIBRARY_PATH /opt/minecraft-pi/mcpipatched
$ ../mcpipatched

起動出来れば、毎回envセットするのが面倒なので、profileに書くか、別途スクリプトを用意します。

$ vi ~/bin/mi-surv.sh
cd /opt/minecraft-pi
env LD_LIBRARY_PATH=/opt/minecraft-pi/lib/brcm/:LD_LIBRARY_PATH /opt/minecraft-pi/mcpipatched
../mcpipatched
$ chmod 755 ~/bin/mu-surv.sh

完全版のインストール方法
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=137279
情報によると、OpenGLドライバ周りでエラーが出ているらしいです。2018/10/9未確認