FreeBSDでletsencryptのメモ

FreeBSD-12.2でletsencryptを導入した。
環境はwebサーバ(apache24)
pkg install -y py37-certbot
apacheのモジュールは特に入れなかった。
証明書はwebrootで導入した。
この辺の記事は検索すればいっぱい出てくるが、FreeBSDに適した項目がある。
vi /etc/periodic.confに
weekly_certbot_enable=”YES”

通常はこの通りにすれば/etc/crontabのpriodic weeklyの設定が6ならば毎週土曜日に更新が行われ、証明書の更新期限に達すれば自動更新される。
しかし、サーバソフトによってはrestartやreloadしないと証明書エラーになる。
/usr/local/etc/letsencrypt/renewal-hooks/deploy/に名前は何でもよいがサーバーの再起動コマンドを入れる。
このディレクトリにスクリプトを入れると証明書更新成功後に実行される。
なおpriのディレクトリは更新成功に関係なく更新実行前に実行するし、postは更新実行後に実行する。
たとえば証明書をstandaloneで取得した場合、apacheを止めから更新を試みて実行後にapacheを起動するという事ができる。
私はwebrootで証明書を取得しているのでdeployにservice-restartというファイルを作成し
#!/bin/sh
service apache24 reload

保存したら
chmod 740 service-restart

これで実行されると幸せになれる。

 

カテゴリー: FreeBSD等の構築 | FreeBSDでletsencryptのメモ はコメントを受け付けていません

bhyveのインストール

インストールの概要
ハードウェア:Fujitsu TX1310 M1 Xeon E3-1226v3 2x1TB HDD 16GBメモリ
OS:FreeBSD 13.0-RELEASE
OSは通常インストール 今回はbiosがUFEI対応なのでBOOTをUEFIonlyに設定
windowsでisoをダウンロードしてrufusでUSBメモリに焼いた。
サーバを起動後F12を連打。boot menuからUSBメモリを選択して起動。
今まではキャラクター文字で描かれたBSDボール?がきれいなグラフィックで表示。
HDDは1TBx2なのでインストール先はzfsでmirrorを指定。
NTPdをオプションで指定。
再起動後、sshdのポートを変更して/etc/servicesのsshのポート番号を変更。リブート

bhyveの設定
kldload vmm
kldstatで確認
zfs create -o mountpoint=/usr/vm zroot/vm
vi /boot/loader.conf
vmm_load=”YES”

pkg install vm-bhyve
sysrc vm_enable=”YES”
sysrc vm_dir=”zfs:zroot/vm”
sysrc vm_list=””
sysrc vm_delay=”5″

vm init
cp /usr/local/share/examples/vm-bhyve/* /usr/vm/.templates/

今回はNICが2個あり管理用のプライベートネットワーク用がem0
仮想ホスト用のグローバルネットワーク用がigb0
igb0には仮のアドレスが必要
今回は利用できるグローバルアドレス中の最後のアドレスをigb0に割り当てる。
gwアドレスが無いので外部からアクセスできないはず。
vm switch create public
vm switch add public igb0
vm iso ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/13.0/FreeBSD-13.0-RELEASE-amd64-dvd1.iso

基本インスタンスの作成
vm create -t default -s 100g vmbase

vm configure vmbase
メモリなどの容量を決める

インストール作業
vm install vmbase FreeBSD-13.0-RELEASE-amd64-dvd1.iso

確認
vm list

コンソールからのインストール作業
vm console vmbase

IPアドレスは仮にする。
インストール終了後、~.でコンソール終了
このインスタンスをコピーして新規インスタンスを作成してサイト作成。
基本インストールが終了している状態なので追加の設定してすぐに利用できる。
できればweb用やmail用のインスタンスを作成しておけば楽だと思います。

カテゴリー: FreeBSD等の構築 | bhyveのインストール はコメントを受け付けていません

dovecotのtcpwrpper対応

自分のドメインで実験してみた
FreeBSDのpkgでdovecotをインストールするとこうなる
pkg info dovecot
LIBWRAP : on
また、portsでも
cd /usr/ports/mail/dovecot
make config
ここでも有効になっている。
つまりFreeBSDのdovecotは最初からtcpwrpperが有効になっている。
これを見ると使いたくなってくる。

では、設定
dovecotのHPに解説が書いてある。
https://wiki.dovecot.org/LoginProcess
Login access check sockets
Dovecot login processes can check via UNIX socket if the incoming connection should be allowed to log in. This is most importantly implemented to enable TCP wrappers support for Dovecot.

TCP wrappers support
You must have built Dovecot with support for TCP wrappers. You can do this by giving –with-libwrap parameter to configure.

Add to dovecot.conf:

login_access_sockets = tcpwrap

service tcpwrap {
unix_listener login/tcpwrap {
group = $default_login_user
mode = 0600
user = $default_login_user
}
}

これを/usr/local/etc/dovecot/dovecot.confに書く
/etc/hosts.allowも変更
pop3 : 111.222.333. , .domain.jp : allow
:
:
:
all : all :deny

このサーバは認証をpostgresqlで行っているがこの設定で大丈夫なようだ。
認証は995のSSLでもこの設定でOKだった。
hosts.allowのpop3は/etc/servicesに書いている名前かと思ったら違うみたい。

カテゴリー: FreeBSD等の構築 | dovecotのtcpwrpper対応 はコメントを受け付けていません

qpopperのSSL化

OS:Freebsd-11-RELEASE

sysrc inetd_enable=”YES”

pkg install qpopper
inetd.confに追加記入
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -s -T 1200 -t /var/log/pop3/pop3.log
pop3s stream tcp nowait root /usr/local/libexec/qpopper qpopper -f /usr/local/etc/qpoppers.conf -s -T 1200 -t /var/log/pop3/pop3.log

letsencryptの導入
ウェブメールがあるので当然apache24も入っているのでwebrootで証明書を導入
pkg install py37-certbot
certbot certonly -webroot -w /usr/local/www/apache24/data -d サーバ名 -m メールアドレス
/etc/periodic.confを作成または以下を追記
weekly_certbot_enable=”YES”

設定ファイル/usr/local/etc/qpoppers.confを作成
set clear-text-password = always
set tls-support = alternate-port
set tls-version = default
set tls-server-cert-file = /usr/local/etc/letsencrypt/live/サーバ名/qpopper.pem

qpopperはSSL証明書ファイルがkeyファイル+証明書+中間証明書のファイルになるので作成する
cat privkey.pem fullchain.pem > qpopper.pem
実行スクリプト
vi /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

!/bin/sh

cat /usr/local/etc/letsencrypt/live/サーバ名/privkey.pem /usr/local/etc/letsencrypt/live/サーバ名/fullchain.pem > /usr/local/etc/letsencrypt/live/サーバ名/qpopper.pem

このサーバはこの他にapache24 postfix dovecot(imap)があるので再読み込みをする

servece apache24 reload
service postfix reload
service dovecot reload

実行権限付与
chmod 744 /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

これをperiodic.confと同期させるため
/etc/crontabに追記
以下の設定が最初から入っていてweeklyの実行でweekly_certbot_enableが実行される
15 4 * * 6 root periodic weekly
つまりこの作業後にqpopper.pemを作ればよい
私は10分後にした
25 4 * * 6 root /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

dovecotは常時起動でpopクライアントからの接続を待ち受けるが、qpopperはinetdサーバから要求ごとに起動する。
なのでconfigの再読み込みは不要

このサーバは、元々postfix+qpopperのみで稼働していた。
imapを利用するため一時imap-uwを稼働していたがSSL化しようとしたらimap-uwがTLSに対応していなかった。そのためdovecotを導入してpopとimapを利用可能仕様とした。
しかしpopサーバを変えるとクライアントがサーバに残したメールをすべて再読み込みするためqpopperを残すこととした。

来年度の予定としてmailbox方式からmaildir方式に変更予定。その時にqpopperを廃止してdovecotでpopとimapを利用する仕様にする予定。

カテゴリー: FreeBSD等の構築 | qpopperのSSL化 はコメントを受け付けていません

ひかりTV

ルータのIPv6ファイアウォール設定を適用したらひかりTVが見れなくなった。
ネットで探してみるとudp 6310-6410を開放すると良いなどの情報が得られたが、ダメもとでひかりTVのサイトでチャット利用して質問してみた。
セキュリティが心配だからポート番号かIPアドレスを教えてほしいと言ったらIPv6をブリッジしろとかパススルーしろとか言ってきた。
それでも食い下がったらプロバイダに聞けと言われ、プロバイダに聞いたらひかりTVに聞けと言われたと言ったら、ルータのメーカーに聞けって言ってきた。
プロバイダやルータのメーカーにIPアドレスやポート番号を教えているの?って思ったが、「どこに聞いてもたらいまわしにされるので自分で解決します。」と伝えてチャットを切った。

まず初めにネット上で情報があったルータのファイアウォール設定にipv6 udp 6310-6410を開放してみた。
ビデオは見えるがTVが見れない。

一度全部開放してmldの情報を確認してみた。

ルータはIX2215なので
show ipv6 multicast-listeners GigaEthernet0.0
この中で
2404:1a8:ffff:0:ff21:0:2:45
2404:1a8:ffff:0:ff21:0:3:2
2404:1a8:ffff:0:ff51:0:3:10d
という情報が得られた。
このIPアドレスが配信サーバなのか?
このアドレスをwhois検索してみると
whois 2404:1a8:ffff:0::

inet6num: 2404:01a8::/32
netname: NTTEAST-NGN-CIDR-BLK-JP
descr: NIPPON TELEGRAPH AND TELEFHONE EAST CORPORATION

NTTのNGN網のアドレスだった。
ネット接続はv6プラスなのだがNTTのHGWでもNGN網のアドレスは開放しているのでここを開放しようと思う。

開放後、テレビを確認したら問題なく見れた。
ネットで情報を載せている方の情報のポート番号情報は結構前なので、その後変更があった?

まあ、見れるようになったので良しとしよう。

カテゴリー: FreeBSD等の構築 | ひかりTV はコメントを受け付けていません

radiusサーバ

radiusサーバの構築実験
FreeBSD-12.0
インストールしたサーバソフト
ほとんどpkgでインストール
apache24
MariaDB104
PHP7.2
pkg install -y php72 mod_php72 php72-mysqli php72-xml php72-hash php72-gd php72-curl php72-tokenizer php72-zlib php72-extensions php72-mbstring php72-fileinfo php72-fileinfo php72-pdo_mysql php72-pecl-APCu php72-pear php72-pear-DB
freeradius3
radiusd.conf
$INCLUDE mods-enabled/sqlを有効にする

ログ取りを可能にする
sed -i -e ‘s/^\tauth = no/\tauth = yes/g’ /usr/local//etc/raddb/radiusd.conf
sed -i -e ‘s/^\tauth_badpass = no/\tauth_badpass = yes/g’ /usr/local//etc/raddb/radiusd.conf
sed -i -e ‘s/^\tauth_goodpass = no/\tauth_goodpass = yes/g’ /usr/local//etc/raddb/radiusd.conf
/usr/local/etc/raddb/mods-enabled/sqlを追加

sql {
    driver = "rlm_sql_mysql"
    dialect = "mysql"
    server = "localhost"
    port = 3306
    login = "radius"
    password = "passsword"
    radius_db = "radius"
    acct_table1 = "radacct"
    acct_table2 = "radacct"
    postauth_table = "radpostauth"
    authcheck_table = "radcheck"
    groupcheck_table = "radgroupcheck"
    authreply_table = "radreply"
    groupreply_table = "radgroupreply"
    usergroup_table = "radusergroup"
    delete_stale_sessions = yes
    pool {
            start = ${thread[pool].start_servers}
            min = ${thread[pool].min_spare_servers}
            max = ${thread[pool].max_servers}
            spare = ${thread[pool].max_spare_servers}
            uses = 0
            retry_delay = 30
            lifetime = 0
            idle_timeout = 60
    }
    read_clients = yes
    client_table = "nas"
    group_attribute = "SQL-Group"
    $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
 }
mysql -u radius -p radius < /usr/local/etc/raddb/mods-config/sql/main/mysql/schema.sql


daloradius
daloradius.conf.phpを編集
wwwユーザにて書き込み可能にする

$configValues[‘CONFIG_DB_HOST’] = ‘localhost’;
$configValues[‘CONFIG_DB_PORT’] = ‘3306’;
$configValues[‘CONFIG_DB_USER’] = ‘radius’;
$configValues[‘CONFIG_DB_PASS’] = ‘password’;
$configValues[‘CONFIG_DB_NAME’] = ‘radius’;

mysql -u radius -p radius < fr2-mysql-daloradius-and-freeradius.sql
mysql -u radius -p radius < mysql-daloradius.sql

こんな感じ

カテゴリー: 未分類 | radiusサーバ はコメントを受け付けていません

久々のsendmail

ウェブサーバの構築を頼まれた。
今までの経験からFreeBSDを使用します。
通常にインストールしてからの設定項目
wwwサーバ
apache24
php7.2
mysql5.7

業務報告用のメールサーバ
FreeBSD付属のsendmail
accessの編集
local-host-namesの編集
inetdを利用している場合、
/etc/hosts.allowに以下を追記
sendmail : 127.0.0.1 : allow
起動してみたら
maillogにsendmailSTARTTLS=server: file /etc/mail/certs/dh.para
m unsafe: No such file or directory
ググるとdh.paramというファイルの生成が必要らしい。
cd /etc/mail/certs
openssl dhparam -out dh.param 4096
これでOKなのだが時間がかかるとメッセージが出る。
ウエブには4時間かかったとか書いてあったがxeon2.4GHzで約10分ほどかかった。
openssl dhparam -out dh.param 1024でもOK
続いてtslの設定
lets encryptを使用。今までのcertbotはpython2.7だが、これからは3.6が主流になるのでpy36-certbotを利用。
pkg install py36-certbot
いわれる通り
vi /etc/periodic.conf
weekly_certbot_enable=”YES”
certbot certonly –standalone -d ホスト名 -m 管理者メアド
何か聞かれるがaとyで答える。
cd /etc/mail
vi ホスト名.mc
define(`CERT_DIR’,/usr/local/etc/letsencrypt/live/ホスト名’)dnl
define(`confSERVER_CERT’,CERT_DIR/fullchain.pem’)dnl
define(`confSERVER_KEY’,CERT_DIR/privkey.pem’)dnl
define(`confCACERT’,CERT_DIR/fullchain.pem’)dnl
define(`confCACERT_PATH’,CERT_DIR’)dnl

make
sendmailを久々に設定したが暗号化が標準になったようだ。
これで起動してlogを見ると正常に動いているようだ。
mailコマンドでテストしたら正常に送信できた。
これで準備完了でユーザの作成、ファイルの移動を設置後に行う予定。

カテゴリー: FreeBSD等の構築 | 久々のsendmail はコメントを受け付けていません

webサーバの更新

webサーバのHDD交換をしようとしたが、サーバのハードウェアが安く手に入ったので全体を更新することにした。
本体:HP ProLiant ML310e Gen8 v2 8GB HDD 1TBX2 Raid
OS:Freebsd 10.1

インストールは通常通りだが、今回はHDDを2個でRaidを組む。マザーボード標準のRaidはソフトウェアRaiidでFreebsdでは使えない。なのでZFSで組むことにした。
インストール終了後、ソフトウェアの構築。 基本的にapache,PHP,Mysql。 まずは、apacheからだが、今回はpkgを利用してみることにした。 インストール直後から順を追ってみる。
pkg update -f pkg自体を利用するためのデータベース更新
pkg install -y apache24
pkg install -y php56
pkg install -y mod_php56
pkg install -y php56-mbstring
pkg install -y php56-extensions
pkg install -y phpmyadmin
pkg install -y mysql56-server
以下は/etc/rc.confに追記
apache24_enable=”YES”
mysql-server_enable=”YES”

apacheの設定
cd /usr/local/etc/apache24/ httpd.confを編集してphp,userdir,mod_cgiのモジュールの有効化
ディレクトリインデックスにindex.htm,index.phpを追加
cd /usr/local/etc/apache24/extra
httpd-userdir.confを編集
cd /usr/local/etc/apache24/Inceludes
php5.conf,phpmyadmin.confを作成

最初に旧サーバの/etc/passwd,/etc/master.passwd,/etc/groupを作業ディレクトリにコピー
新サーバの/etc/passwd,/etc/master.passwd,/etc/groupに追記

旧サーバからユーザデータを移動
今までは旧サーバでtar.bz2にまとめてftp getしていたがデータが巨大になるのでnfsを利用する。
旧サーバはこのままでは利用できないのでカーネルを書き換えて再構築。
rc.confに追記

NFS

rpcbind_enable=”YES”
nfs_server_enable=”YES”
mountd_flags=”-r”
新サーバにのrc.confに以下を追記
nfs_client_enable=”YES”
/etc/exportsを作成 ディレクトリ名(スライス名) -alldirs サーバ名

新サーバでの作業
cd /home
mount -t nfs 192.168.16.1:ディレクトリ名
/mnt cp -Rp /mnt/* ./

うまくできた! この後、vipwして確認 ls -la ~ユーザ名で属性や内容を確認。

最後の難関(問題ないはずだったが大問題になった)
mysqlのデータコピー ホームページにCMSを使用しているのでphpmyadminを利用して旧サーバからダウンロード。
新サーバにアップロードして終了するはずだったのに、文字化けしてダメ(涙)
mysqlのエンコード変えても何してもダメ。 調査すると旧サーバのmysqlのchrセットがLatin1だった。
ググってみるとnkf使ったりsed使えば何とかなるみたいだったがダメ。
一時しのぎでCMSのデータベースサーバを旧サーバに変更して対応。
ダウンロードしたデータを秀丸で見たら文字化けしてた。情報収集したら秀丸ではこのファイルを一旦Latinで保存すると幸せになれるみたいだ。やってみた。OKだぁ!
このデータを新サーバにアップロード。 CMSの設定を新サーバに変更してみたら文字化けなく表示。 試しに書き込みしてみた。書き込みした投稿だけ文字化け。
旧サーバのCMSのデータベースを新サーバに変更、こっちは書き込みOK。
あー、なんだ? phpは5.5からdefault char設定がUTF-8に変更になっている。この関係か?
phpinfoを確認してみる。
mbstringに「Local Value」と「Master Value」がある。値も違う。この違いは何だ?
phpのサイトで確認してみると「Master Value」はphp.ini、「Local Value」は.htaccessで変更されてる値らしい。
新サーバの.htaccessを無効にしてみた。なおった。

カテゴリー: FreeBSD等の構築 | コメントする

squirrelmailその2

今日、得意先からメールの読み書きができないと連絡がきた。

山の中なのでADSLも光も使えない場所らしい。
携帯のFOMAだけは使えるので、常時接続しても電話代を気にしなくて良いようにdocomoのmoperaサービスに入ったが、WebはOKだがメールがNGらしい。
いろいろ調べるとmopera自体のメールサービスがWebしかできないようだ。
得意先のメールサーバをmoperaを使って利用できるようにしなければならない。
考えた結果、得意先のサーバにWebMailのシステムを入れることにした。
得意先のサーバもFreeBSD7.0なのでSquirrelMailを入れることにした。
しばらく前にやった事がある。たしかportsで入れたが、苦労した思い出があるが、このblogを書く前だったので記録が残ってない。
考えていても前に進まないので、とりあえずインストール。

/usr/ports/mail/imap-uwでmake install clean
/usr/ports/lang/php4でmake install clean
SquirrelMailはデータベース(postgresqlやmysql)を使用しなくてもよいのでラク?
/usr/local/etc/apache22/httpd.confをいじったがphpinfo()も表示しない。
たしか、このサイトはドメインを二つ使っているはずなのだがバーチャルホストの設定が見つからない。
ん~?と思って調べるとapache22の下にextraという名前のディレクトリがあり、この中にhttpd-vhosts.confというファイルがありこの中に書いてあった。忘れていた・・・。このあたりのバージョンから基本とオプションのファイルが昔みたいに分けて書くことができるようになったんだっけ。
httpd-vhosts.confを直す。httpd.conf内に書いてあったaliaseと ~ を削除してhttpd-vhosts.confに追加。
それでもphpinfo()がダメ。結局AddType application/x-httpd-php .php DirectoryIndex index.html index.phpを上記のディレクティブに追加し、めでたく解決。
/usr/ports/mail/mquirrelmailでmake install clean
そしたらphp関係もインストールしてくれた。こっちから先にインストールすればよかった(T_T)
とりあえずログイン画面は出た。しか~~~し!imapdからplainパスワードはダメよ~んって怒られた。/var/db/ports/imap/optionsを見るとSSLがtrueになっている。/var/db/ports/imap/optionsをrenameして再インストール。もっと良い方法。
cd /usr/ports/mail/imap-uw make config
make
make deinstall
make install clean

/usr/ports/mail/imap-uwでmake install clean
これでどぉだ~!
ダメ・・・。
たしかこのシステムの認証時はブラウザ→cclient→imapdだったはず。
cclientを調べる。Makefileを見るとSSLがデフォルトでONになっている。
pkg_infoで調べるとインストールしたつもりはなかったがimap-uwをインストールした時に自動で入っているので/usr/ports/mail/cclientでmake deinstall。
imap-uwと依存関係にあるのでdeinstallできないのぉ♡って言われた。
ん~だ!こんな時に使えるのがmake reinstall。めでたく再インストール完了!
もう一回アクセスしたら、こんどはdrop imapdだぁ?なんだべ?こんどはimapdがmailDir方式でインストールされているみたい。ここのシステムはsendmailなのでMailBox方式。今度はimapの方をmake reinstall。
どぉだぁ!認証OKだぁ!
おーし!これでなんとかなるかな。

カテゴリー: FreeBSD等の構築 | コメントする

squirrelmail

squirrelmailを稼動していたサーバが逝ってしまったので再構築をしたメモ

 squirrelmailが稼動していたサーバが応答しないので調べると電源が落ちていて電源ボタンを押しても無反応。電源を取り替えても起動しない。マザーボードも逝ってるみたい。
 そこで急遽マシンを用意した。NEC Express 5800/110Gcちょっと古いが、CPUをceleronからpentium4、メモリは4GB。これでなんとかなるべ。
 OSはいつものFreeBSD。本家を見たら10.0がリリースされていた。早速CDイメージをdownload。イメージをCDに焼く。
 起動してインストール。9.0からだったかな?インストール画面が変わっている。gameとsrcは必要なし。なんとかインストール終了。
 10.0からbindがベースシステムからなくなり、代わりにUnboundというキャッシュ専用みたいなサーバが加わった。ま、今回はDNSを立てるわけではないので Unbound は起動させないで、いつも通りhosts,resolv.confで設定する。
 起動すると、すぐにsshdにアクセスしてくる**人。暇だね~。この能力をほかに使えばいいのにね。しかしlogに「authentication error for root from ...」だって。sshdでrootでアクセスOKにしている人っているの?ってこんなこと考えている時間がもったいない。コンソールにsshdのエラーが出まくりでやりにくいのでsshdのポートを変えた。
 さて、本題に戻って、最初にインストールするのは、perlだね。
1.www/apache22をインストール。
2.lang/php5,php5-extensionsをインストール。オプションはapacheを使用する。
3.mail/imap-uwをインストール。imap-uw,cclientともにSSLなし。
4.mail/squirrelmailをインストール。本家から日本語pachをdownloadし、squirrelmailディレクトリ内で解凍。

設定編
1.SSLを有効にする。/usr/local/etc/apache22/extraでssl用のファイルを変更する。
2.squirrelmail内で./configureを実行してメールサーバのimap情報を入力、LanguagesでDefault Languageをja_JP、Default Charsetをiso-2022-jpの変更。
3.php.iniを編集。
こんな感じかな。
あとは、newsyslog.confを編集してhttpdのlog管理。

終了!

カテゴリー: FreeBSD等の構築 | コメントする