悪霊にさいなまれる世界 -The Demon-Haunted World

30代独身機械系技術者が雑記/セキュリティ/資産運用なんかを書きます/PGP・GPG Key:BC884A1C8202081B19A7A9B8AB8B419682B02FF8

時刻合わせにNTPdではなくsystemd-timesyncdを使うようにした話

メモがわりの雑記。

RaspberryPi 1B、以前の初期設定では時刻合わせ標準のNTPdを使用してたものの、よく考えるとNTPサーバとしての機能は必要ない。必要の無い機能は削除するのがセキュリティの基本である。

science-as-a-candle-in-the-dark.hatenablog.com

そういうわけでNTPクライアントのみの機能に絞ったら何があるかな、と調べてみたところsystemdに標準で何やら着いてる模様。ArchLinuxは相変わらずWikiの充実度が凄いので非Archユーザにも超タメになる。

systemd-timesyncd - ArchWiki

そういうわけでサクサクと設定をする。NTPをまず削除。しかる後にtimesyncdの設定ファイルを設定。

sudo apt remove ntp
sudo vim /etc/systemd/timesyncd.conf

NTPとFallbackNTPの2項があるが、どうやらNTPが落ちてたらフォールバックの方を参照するとかそんな感じらしい。オーソドックスにNICTとntp.orgのプール、あるいはGoogleのNTPでいいだろう。大学ならSINETのサーバがネットワーク的に一番近いかもしれない。

[Time]
NTP=ntp.nict.jp
FallbackNTP=0.jp.pool.ntp.org

timesyncdを起動。

sudo timedatectl set-ntp true

状態を確認

timedatectl status

ここで、Network time onがyesになってればいいっぽい。いじょ

SoftEtherサーバをOpenVPNサーバとして利用する場合に、使用されるハッシュ関数をSHA-1から変更する方法

TL;DR. "○○_openvpn_remote_access_l3.ovpn"を開いて、"auth SHA1"を"auth SHA256"に書き換えろ

 最近blogを書いてないので小ネタ。私の持ってるRaspberryPiはSoftEther Serverを入れてVPNサーバ化している。初期設定方法は以前書いた記事の下の方に、説明無しで書いてある。

SoftEther VPN プロジェクト - SoftEther VPN プロジェクト

science-as-a-candle-in-the-dark.hatenablog.com

が、スマホで使える専用クライアントソフトがないので、OpenVPNサーバを有効化して、OpenVPNクライアントソフトから繋いでる。OpenVPNサーバを有効にするには、まずSoftEtherサーバ管理マネージャを開き、下の矢印部分をクリックする。

f:id:scienceasacandleinthedark:20180726213820p:plain

そこで①にチェックを入れれば有効化される。一応、ポートはデフォルトから変更しておくと安心だろう(これは諸説あるが割愛)。OpenVPNの設定ファイルは自力で作るのが難しいので、②をクリックさせて自動で生成させることになる。

f:id:scienceasacandleinthedark:20180726213949p:plain

さて、そうすると"OpenVPN_Sample_Config~.zip"なるファイルが母艦PCにダウンロードされる。その中にある"○○_openvpn_remote_access_l3.ovpn"なるファイルが設定ファイルになる。

これをスマホにコピーして、適当なOpenVPNクライアントソフトをインストールし、この設定ファイルをインポートすれば良い。ここら辺も割愛する。問題なく設定が完了すれば繋がるはずだ。が、問題は、この設定ファイル、デフォルトでは暗号化アルゴリズムがAES-128-CBCハッシュ関数SHA-1を使用する設定となる。ログを見てみるとはっきりするだろう。

f:id:scienceasacandleinthedark:20180726215517p:plain

暗号化アルゴリズムと暗号利用モードは基本的にデフォルトのAES-128-CBCで良いだろう。しかしいまどき危殆化したSHA-1を使う理由はない。さっくりと変更してしまうべきだ。(ちなみにSoftEtherサーバ管理マネージャの「暗号化と通信関係の設定」を弄ってもOpenVPNでの設定には影響しない)

先ほど自動生成した"○○_openvpn_remote_access_l3.ovpn"、中身はテキスト形式なので適当なテキストエディタで開く。ざっと眺めていけば繋ぐサーバのアドレスやポートが書いてあることがわかるだろう。ポイントはファイルの中盤付近にある暗号化・認証アルゴリズムの設定だ。下記の文章が見つかるはずである。

###############################################################################
# The encryption and authentication algorithm.
# 
# Default setting is good. Modify it as you prefer.
# When you specify an unsupported algorithm, the error will occur.
# 
# The supported algorithms are as follows:
#  cipher: [NULL-CIPHER] NULL AES-128-CBC AES-192-CBC AES-256-CBC BF-CBC
#          CAST-CBC CAST5-CBC DES-CBC DES-EDE-CBC DES-EDE3-CBC DESX-CBC
#          RC2-40-CBC RC2-64-CBC RC2-CBC CAMELLIA-128-CBC CAMELLIA-192-CBC CAMELLIA-256-CBC
#  auth:   SHA SHA1 SHA256 SHA384 SHA512 MD5 MD4 RMD160

cipher AES-128-CBC
auth SHA1


###############################################################################

この"auth SHA1"を"auth SHA256"に変更して保存する。もちろんSHA384や512でもいい。先ほどと同様にこの設定ファイルをインポートして接続、ログを確認すればSHA-256が使用されていることが分かるはずだ。 

f:id:scienceasacandleinthedark:20180726220315p:plain

思わず暗号化アルゴリズムも国産のCamelliaなどに変更したくなるが、大抵エラーが出るので自重しよう。むしろちゃんと設定できて、エラーが出なければ環境を教えて欲しい。以上である。

 ちなみになぜIPsec/L2TPを使わないのかというと、設定が複雑すぎるために「本当にセキュアな設定に出来ているのか」が自分ではわからないからである。俺には出来らぁ!!と言う方は頑張って欲しい。

Ubuntu18.04LTSをインストールしてみた

Sandbox兼Linuxの勉強用としてVirtualBoxを使いUbuntu14.04LTSを使っていたけど、流石にそろそろサポート切れが近くなってきたので先日リリースされた18.04LTS日本語Remixを入れてみた。

Homepage | Ubuntu Japanese Team

18.04からは軽量インストールがオプションで選べるようになり、Firefox以下最低限の環境を簡単に構築できるようになったので、サクサクとインストール。

しかし、なぜか実用に耐えないレベルに動作が遅い罠。インストール直後はわりと軽く動くのに、何度か再起動すると無茶苦茶重くなる。

なんぞようわからんなぁ…と思いつつ試行錯誤をしたところ、14.04LTSでは3Dアクセラレーションを有効にしてグラフィックがChromium(これが何かよく分からない)にしないとモッサリしまくりなのだけど、逆に18.04LTSでは3Dアクセラレーションを有効にしてしまうと重くなってしまう模様。llvmpipe(これが何かもよく分からない)なら普通に動く。たぶんデスクトップ環境がUnityからGNOMEに変わったせいなのかな、と思いつつもよく分からない。とりあえず動くなら良いかな。

f:id:scienceasacandleinthedark:20180528194802p:plain

f:id:scienceasacandleinthedark:20180528194856p:plain

しかし18.04だとUbuntuソフトウエアでソフトを探しても、今まで使ってたのが出てこない件。まぁ14.04サポート切れまであと1年あるので、のんびりやっていく次第。

政府による通信事業者への海賊版サイト接続遮断要請に関するツイートまとめ

RaspberryPiにUnboundを入れたので、IPv4/v6デュアルスタック環境でIPv6のDNSサーバした件

TL;DR. ラズパイのリンクローカルアドレスを指定してやることでIPv6DNSサーバ化に成功したけど、パーミッションの設定がとてもスマートじゃないので今後なんとかしたい。

→2018/05/28:とりあえず解決。ラストに追記

science-as-a-candle-in-the-dark.hatenablog.com

 昨日の続きです。

f:id:scienceasacandleinthedark:20180408193417p:plain

と言うわけで、リンクローカルアドレスを調べてみました。その結果、

  • IPv6に対応した機器は必ずFE80::/10の範囲で一つは持つ
  • MACアドレスから生成される
  • ルータを越えない、名前の通りローカルな通信のためのアドレス

と言うことが判明。早速RaspberryPiでifconfigをかけてみると、確かにそれっぽいアドレスが割り振られてます。これを母艦PCで、IPv6DNSサーバに設定すればいいわけですね。そういうわけで早速試してみました。

f:id:scienceasacandleinthedark:20180409161741p:plain

さぁこれでどうだ。

f:id:scienceasacandleinthedark:20180409162252p:plain

Query refused. はいそうです。Unbound側で許可してるIPアドレスはループバックと192.168.11.0/24だけでした。初歩的なミスですね。母艦PCのIPv6アドレスを許可してやる必要がありますが、当然母艦PCにもリンクローカルアドレスが振られているはずです。そういうわけでunbound.confに次の1行を追加してみます。

access-control: fe80::/10 allow

これでUnboundを再起動して、もう一度チャレンジ。

f:id:scienceasacandleinthedark:20180409162716p:plain

f:id:scienceasacandleinthedark:20180409163036p:plain

思わず昔懐かしのAAを使ってしまいますが、うまく行きました。

と言うわけでこれで万事OK。Problem Solved.です。つかさ先生の次回作にご期待ください。

 

 

本当にfe80::/10をAllowしてて大丈夫なんでしょうか?

「ルータは越えない」とは言っても、我が家のルータはIPv6はブリッジさせる…つまり素通りさせるだけのシロモノ。気がついたらオープンリゾルバになってましたとかそういう悲しいことは避けたい。のでUnbound.confをさらに書き換え。

#access-control: fe80::/10 allow
#MainPC
access-control: fe80::****/128 allow

と、母艦PCのリンクローカルアドレスを直接指定してやりました。正直、すっごく筋の悪い対処法な気がします。PCやタブレットが増えるたびに許可を1行ずつ追加してやらなきゃならないと言う全然スマートさが感じられないアレ。

ま、とりあえず動いてるのでよしとしますが、ここらへんも今後の課題と言うことで。

 

2018/05/28追記:

Wiresharkで流れてくるパケットを眺めてみたりする限り、どうやらfe80::/10をAllowしても大丈夫な模様。そういうわけで

access-control: fe80::/10 allow
#MainPC
#access-control: fe80::****/128 allow

と言うパーミッションに変更。ログとかも一応チェックしましたが、まぁ多分大丈夫でしょう。

RaspberryPiにUnboundを入れたけど、IPv4/v6デュアルスタックだとv6のDNSサーバに出来なかった件

TL;DR. RaspberryPiにUnboundを入れてDNSフルリゾルバにしたけど、IPv6NTT東日本フレッツ網のDNSサーバから変更する必要があるのでそこで詰まってる。解決策求む

→2018/04/09:とりあえず解決 RaspberryPiにUnboundを入れたので、IPv4/v6デュアルスタック環境でIPv6のDNSサーバにした件 - 悪霊にさいなまれる世界 -The Demon-Haunted World

science-as-a-candle-in-the-dark.hatenablog.com

 先日再セットアップしたRaspberryPi、Unboundを入れようと思いつつ放っておいたのですが、ご存じの通り邪悪な国家権力は違法漫画配布サイトへのアクセスを妨害するため、「緊急避難」として検閲をもくろんでいるというお話が出てきました。DNSポイゾニングによる児童ポルノブロッキングが開始された当初から懸念されてたことが大体実行され始めた感じです。そういうわけでサクサクとRaspberryPiをフルリゾルバにしてしまいましょう。

なお、以下の設定はNTT東日本フレッツ 光ネクスBIGLOBEBIGLOBE光パックNeo with フレッツ「ひかり」で、IPv6オプションを申し込み、IPv6(IPoE)とIPv4のデュアルスタック環境でのものです。

sudo apt install unbound dnsutils
sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache

という感じでサクサクとUnbound本体と関連ユーティリティをインストール、ルートヒントもDLしておきます。続いて設定。

sudo vim /etc/resolv.conf

nameserver 127.0.0.1
nameserver ::1 

とループバックに変更。続いて/etc/unbound/unbound.confの設定

server:
    interface: 0.0.0.0
    interface: ::0

    do-ip4: yes
    do-ip6: yes

    access-control: 127.0.0.1/8 allow
    access-control: ::1/128 allow
    access-control: 192.168.11.0/24 allow

    root-hints: "/etc/unbound/root.hints"

こんな感じ。エラーが出ないことを確認して再起動。digで動作を確認

unbound-checkconfig
sudo systemctl restart unbound.service
dig www.google.com

まぁここら辺は問題ないですよね。と言うわけでRaspberryPi側の設定は終わりにして母艦PCのDNSサーバの設定を変更

f:id:scienceasacandleinthedark:20180408190947p:plain

ーー2018/04/24追記:IPv4ならここまでで動きます。

それでは確認のためにWindows PowerShellでnslookupしてみます。まぁここまで来ればトラブルが起きるようなところはもうないですよね。

f:id:scienceasacandleinthedark:20180408191802p:plain

……

f:id:scienceasacandleinthedark:20180408191519j:plain

 

ググってみたところ、NTT東日本DNSサーバでした。はいそうですね。ミスしたのは私です。さっき設定したのはあくまでIPv4DNSサーバの設定であって、IPv6 IPoEデュアルスタック環境なんだからそっちも設定してやらないと行けないわけです。

さてここで問題が。IPv4ならRaspberryPiに割り振ったプライベートアドレス(この場合192.168.11.3)を指定してやればいいわけですが、IPv6だとどうしたらいいものか。

v6アドレスはフレッツ網から自動で振られてくるし、手元のルータはIPv6パケットを素通りさせているだけ。振られたv6アドレスを指定するのもおかしいよな…と言うわけで旧知の成瀬ゆい氏(@nalsh)に相談してみたところ

f:id:scienceasacandleinthedark:20180408193417p:plain

と言う助言をもらいました。調べてやってみます(多分そのうち続く

小ネタ:Suica関連データ社外販売のオプトアウト方法

TL;DR. 一時期話題になったJR東日本が社外に販売するSuicaの利用情報は、今はWebサイトから簡単にオプトアウトできます。

 

2013年の話題なので忘れている人も多々と思いますが、Suicaの利用履歴は匿名化されて販売されおり、これが反発を呼んだことがあります。

bizmakoto.jp

データ自体は匿名化されていますが、心理的に抵抗感があるという人も多い、と言うか私は嫌なので、所有しているSuicaをこの販売対象から排除して貰うことが出来ます。以前はメールで受付だったのですが、今では専用の受付フォームがあり簡単に申請できます。

www.jreast.co.jp

これの「Suicaに関するデータの社外への提供分からの除外のご要望受付フォームはこちら」をクリックすると受付フォームが開くので、持っているSuicaのID(印刷してある)を入力して送信しましょう。

 

プライバシーを云々するなら常に現金で切符を買え、と言うのも一理はあるのですが、利便性との兼ね合いもあるのでまぁそこは適当にお好みでバランスを取っていくところかと思います。なお私は無記名Suicaを数ヶ月ごとに変更して使ってます。