samba ADのドメインコントローラ(DC)上でfreeradiusを用いたRADIUSサーバを動作させ,無線LAN APからのWPA2-EnterpriseでのEAP-PEAP-MSCHAPv2を受け付ける.
前提条件: Gentoo Linux上でsamba AD DCが動作している.SSLライブラリはLibreSSLである(これはあまり影響しない・・・はず),当該サーバに有効なサーバ証明書が作成されている.
1. freeradiusをインストール
/etc/portage/package.use/freeradiusに以下記述.
net-dialup/freeradius ldap samba
インストール
sudo -E emerge -v freeradius
2. freeradiusの設定
2.1 設定ファイル所有者所有グループ変更
chown -R radius:radius /etc/raddb
2.2 /etc/raddb/client.confの設定
無線LANアクセスポイントとの接続情報を設定
上記ファイルの適当な場所に以下の設定を記述
client WCT_LAB_AP {
ipaddr = <WLAN_AP_IPADDR>
secret = <WLAN_AP_password>
shortname = <WLAN_AP_ShorName> # 必ずしも必要ではない?
}
2.3 /etc/raddb/mods-enabled/eapの設定
EAPの設定
eap {
default_eap_type = PEAP
tls-config tls-common {
private_key_password = <サーバ証明書の秘密鍵のパスワード>
private_key_file = ${certdir}/<サーバ証明書の秘密鍵ファイル名>certificate_file = ${certdir}/<サーバ証明書ファイル名>
ca_file = <ルート証明書のファイル名・フルパス>
dh_file = ${certdir}/dh4096.pem
random_file = /dev/urandom
}
peap {
copy_request_to_tunnel = yes
use_tunneled_reply = yes
2.4 DHファイルの作成
openssl dhparam -out dh4096.pem 4096
ここまでビット長が長くなくても良いかも.
2.5 /etc/raddb/mods-enabled/mschap
MSCHAPv2の認証アプリケーション設定
mschap {
use_mppe = yes
require_encryption = yes
require_stron = yes
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{mschap:User-Name}:-None}} --domain=%{%{mschap:NT-Domain}:-<ドメイン名>} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
(後略)
2.6 /etc/raddb/sites-enabled/default
待ち受けアドレス・ポート番号の設定
server default {
listen {
type = auth
ipaddr = <サーバIPアドレス>
}
listen {
type acct
ipaddr = <サーバIPアドレス>
}
}
2.7 /var/lib/samba/private/winbindd_privilegedのグループ変更
radius:radiusよりntlm_authを行えるように.
chgrp radius /var/lib/samba/private/winbindd_privileged
3. テスト用プリケーションのインストールとテスト
wpa_supplicantをインストールする.USEフラグを設定./etc/portage/package.use/wpa_supplicantに以下を設定.
net-wireless/wpa_supplicant gnutls eapol_test
インストール.
sudo -E emerge -v wpa_supplicant
次の内容を適当なファイル名で保存.
network={
ssid="<無線 SSID>"
key_mgmt=WPA-EAP
eap=PEAP
identity="<ユーザ名>"
password="<パスワード>"
phase2="autheap=MSCHAPV2"
ca_cert="<ルート証明書ファイル名・フルパス>"
}
以下のコマンドでテスト.
sudo eapol_test -c <上記ファイルをフルパスで> -s <WLAN_AP_password> -a <サーバIPアドレス>
上記コマンドを実行すると,大量の表示がされるが,最後にSUCCESSという表示が出れば,設定は成功.
4. 無線LAN APにradiusサーバに関する必要事項を設定.
接続先を<サーバIPアドレス>,パスワードを<WLAN_AP_password>で設定すると,動作するはず.
]]>zfs上にsamba共有ディレクトリを作る場合は,注意しないとアクセス速度が遅くなる.
原因はwindowsはファイル名の大文字小文字を区別しない,Unixは大文字小文字を区別するということ,らしい.
対応は簡単.
1. zfsファイルシステム作成時に以下の設定で行う.
zfs create -o casesensitivity=insensitive -o relatime=on -o compression=lz4 -o acltype=posixacl -o mountpoint=/hogetete ztank/path/to/cifs
2. sambaの設定を変える.smb.confの該当セクション([share]など)に,以下の項目を追加.
]]> 2020-02-17追記case sensitive = yes
preserve case = no
short preserve case = no
smb.confが上記設定だと,ファイル名の大文字小文字がすべて小文字になってしまう.
以下のように変更した方が良いようだ.
case sensitive = yes
preserve case = yes
short preserve case = no
下記の記事の通りなのだが,そのままでは動かず.
https://wiki.samba.org/index.php/Configure_DHCP_to_update_DNS_records_with_BIND9
/var/log/named/named.logに以下のようなエラーを吐いて動作しない.
18-Dec-2019 18:39:59.111 database: error: samba_dlz: spnego update failed
様々試してみた結果,以下の方法で動作する様になった.
https://lists.samba.org/archive/samba/2017-December/212948.html
systemdを使用しているので,systemdで起動する際に環境変数を設定する.
ここ(https://docs.docker.jp/engine/articles/systemd.html)を参考にする.
sudo mkdir /etc/systemd/system/named.service.d
sudo vi /etc/systemd/system/named.service.d/local.conf
--------------
[Service]
Environment="KRB5RCACHETYPE=none"
--------------
sudo systemctl daemon-reload
設定ファイルが読み込まれたのを確認する.
$ sudo systemctl show named --property Environment
Environment="KRB5RCACHETYPE=none"
再起動する.
$ sudo systemctl restart named
サーバの署名要求 (CSR) とクライアントの署名要求を作成する所までは今までと同じです.異なるのはCAによる署名手続きです.サーバの場合とクライアントの場合で組み込む extension が異なります.extensionの定義ファイル "xpextension" の内容は次のようになっています.
# # For use with the 'CA.all' script. # [ xpclient_ext] extendedKeyUsage = 1.3.6.1.5.5.7.3.2 [ xpserver_ext] extendedKeyUsage = 1.3.6.1.5.5.7.3.1
#openssl ca -policy policy_anything -out newcert.pem -extensions xpserver_ext -extfile xpextensions \
-infiles newreq.pem -config openssl.cnf
#openssl ca -policy policy_anything -out newcert.pem -extensions xpclient_ext -extfile xpextensions \
-infiles newreq.pem -condig openssl.cnf
以上。
]]>
なお,サーバ証明書の場合には,例えば,openssl-server.cnfという名前で以下のファイルを作成する.
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
そしてCAの署名時に以下のコマンドを実行する。
openssl ca -in dwctsv01-csr.pem -keyfile private/ca_key.pem -cert RootCA_cert.pem -out dwctsv01-cert.pem -config openssl.cnf -extfile openssl-server.cnf
クライアント証明書の場合は,例えば,openssl-client.cnfという名前で以下のファイルを作成する.
basicConstraints = CA:FALSE
keyUsage = digitalSignature
extendedKeyUsage = clientAuth
openssl ca -in dwctsv01-csr.pem -keyfile private/ca_key.pem -cert RootCA_cert.pem -out dwctsv01-cert.pem -config openssl.cnf -extfile openssl-client.cnf
]]>libreSSLを使用した場合の,rootCAの公開証明書と秘密鍵の作成。
なお,セキュリティ的には次の文書を参照すること.
https://www.ipa.go.jp/security/ipg/documents/ipa-cryptrec-gl-3001-2.0.pdf
適当なディレクトリを掘って、sslフォルダからopenssl.cnfをコピーする。
んで編集。
----- ここから -----
--- /etc/ssl/openssl.cnf 2012-01-28 08:50:35.982866598 +0900
+++ openssl.cnf 2012-03-08 10:10:34.342555551 +0900
@@ -39,7 +39,7 @@
####################################################################
[ CA_default ]
-dir = /root/privateCA # Where everything is kept
+dir = /root/wctCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
@@ -70,7 +70,7 @@
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
-default_days = 365 # how long to certify for
+default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
@@ -103,7 +103,7 @@
####################################################################
[ req ]
-default_bits = 1024
+default_bits = 4096
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
@@ -126,24 +126,25 @@
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
-countryName_default = AU
+countryName_default = JP
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
-stateOrProvinceName_default = Some-State
+stateOrProvinceName_default = Hokkaido
localityName = Locality Name (eg, city)
+localityName_default = Kushiro
0.organizationName = Organization Name (eg, company)
-0.organizationName_default = Internet Widgits Pty Ltd
+0.organizationName_default = Kushiro NCT
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
-#organizationalUnitName_default =
+organizationalUnitName_default = WCT-Lab, Dept. of Electronic Eng.
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
@@ -167,13 +168,13 @@
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
-basicConstraints=CA:FALSE
+basicConstraints=CA:TRUE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
-# nsCertType = server
+nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
@@ -245,7 +246,7 @@
# keyUsage = cRLSign, keyCertSign
# Some might want this also
-# nsCertType = sslCA, emailCA
+nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
@@ -327,7 +328,7 @@
[ tsa_config1 ]
# These are used by the TSA reply generation only.
-dir = /root/privateCA # TSA root directory
+dir = /root/wctCA # TSA root directory
serial = $dir/tsaserial # The current serial number (mandatory)
crypto_device = builtin # OpenSSL engine to use for signing
signer_cert = $dir/tsacert.pem # The TSA signing certificate
------ ここまで ------
コマンドは以下の通り。
ルート証明書の秘密鍵の作成
openssl ecparam -genkey -noout -name secp521r1 -param_enc explicit -out "./private/ca_key.pem"
ルート証明書の公開鍵の作成
openssl req -x509 -key "./private/ca_key.pem" -out "RootCA_cert.pem" -days 3650
これによって、オレオレルート証明書(公開鍵・秘密鍵)が作成された。
Windowsなどにインポートできる形式にするには以下のコマンド。
openssl x509 -in RootCA_crt.pem -outform DER -out wct.elctro.kushiro-ct.ac.jp_cert.der]]>
サーバ証明書などは、別記事にて。
そのときにはバックアップの電気二重層キャパシタの容量抜けを疑って交換したが,結局直らずそのまま放置していた.
悔しいので,ネットを調査したところ,ここに参考になりそうな情報が.
テスタで当たったところ,参考先とは異なるヒューズ(FUSE1)がオープンとなっていたので,ワニ口クリップで短絡して試したところビンゴ.見事起動した.
同一特性のヒューズを調達して,本復旧となった.
現在,搭載ソフトのアップデート作業中.5年前のGentoo Linuxなので,一足飛びにはアップデート出来ず.ここを参考にした.CPUとメモリが非力なため,amd64なPC上にqemu環境を構築して,バイナリパッケージを作ってportageのアップデートを試みている.
それから,HDD換装を計画しているが,2TB以上のHDDをすべて利用しようとするとGPTである必要があり,ブートローダー(u-boot)のアップデートが必要かも.
]]>うーむ.なんと言ってよいのか.
]]>ちょっと前の記事だが,無償SSLサーバー証明書Let's Encryptの普及とHTTP/2および常時SSL化を参考に,無料SSLサーバ証明書を手に入れ,設定することとした.こちらのLet's Encrypt 総合ポータルの方が新しい情報となっており,こちらをメインに参照する方がよいかも.
CMS側の設定にhttps://が指定されている部分があって動作させるまでに少々試行錯誤したが,何とか動いている.http://でアクセスした場合,https://にリダイレクトされているはず.
]]>うーむ,帰路だからなあ,なにか異物を巻き込んだとか.ともかく,軌道と車両の速い復旧を願う.
というか,こんなところまで撮影している「視聴者(=鉄ちゃん)」,恐るべし.
]]>突然の知らせ.ご冥福をお祈りします.「征途」「レッドサンブラッククロス」「侵攻作戦パシフィックストーム」「覇王信長伝」「遙かなる星」「地球連邦の興亡」など,楽しませてもらいました.特に真田忠道はキャラ立ってたなあ.ほとんどを未完のままで旅立たれたのは,らしいっちゃらしいかもしれません.
あと,「HOTD」.
]]>ただし,やはり新幹線で140km/hは遅い.まあ,抜本的に解決しようとするとトンネルもう一本掘らなければならないので,しょうが無いが.
]]>ここらへんを参考に.しばらく運用してみる.
]]>基板製造サービスとしては,Fusion PCBを利用している.もちろん仕事では利用できないが,少量生産ならばかなり安価(50mm x 50mm 2層基板5枚で$9.9)で,決済にPayPalも利用可能(相手が大陸中国なので,直接クレジットカード決済だと心配)なのがよいところ.仕上がりも不満はない.手元に届くまでだいたい2~3週間かかるところ,送料が高いところ($20~$30)が若干難だが,コストと比較するとまあまあ満足.
]]>