2019年3月31日日曜日

宮島の桜

撮影日:2019/03/30
撮影場所:広島県廿日市市宮島町 厳島


久々に宮島へカメラを持って散策に

五重塔辺りは5~6分咲きくらい
五重塔



みやじマリンのスナメリに子供が生まれたらしく、親と一緒に楽しそうに泳いでた
期間限定のイベントで小さなクマノミとレゴの展示やドクターフィッシュの体験など

初めてドクターフィッシュの水槽に手を入れたけど、二度とやらなくていいかな






大元公園まで足を伸ばすと桜も満開

今年はいいタイミングで来ることが出来た

来週は別の桜まつりがあるものの、時期や天気がどうだろうか?


2019年3月21日木曜日

Raspberry Pi 3 model b+でのvim設定変更

Raspberry Pi 3にvimをインストールはしていたものの、デフォルトの状態で設定を変えていなかったので少し設定変更を行っておく。


$ sudo apt-get install vim
にてすでにvimはインストール済み

設定ファイルが/etc/vim/vimrcに存在するので、piユーザのhome直下へコピーを作成して少し修正する。


$ sudo cp /etc/vim/vimrc ~/.vimrc


保存出来たら設定ファイルの中身を修正する(viで編集)
$ vi ~/.vimrc



26行目コメント解除(構文毎に色分けする)
syntax on

30行目コメント解除(背景色が暗い時に自動で色調整)
set background=dark

40~42行目コメントアウト
(ファイルタイプの検索とファイルタイプ毎のインデントを有効化)
if has("autocmd")
  filetype plugin indent on
endif


最終行に追記

左端に行番号を表示させる
set number

色指定(文字色などを変更)
colorscheme industry



とりあえずコレで多少は見やすくなったはず。

文字色などの色種類は下記で検索可能。
$ ls /usr/share/vim/vim80/colors/
colorscheme


delek.vim
industry.vim ←コレか
pablo.vim
slate.vim
blue.vim
desert.vim ←コレか
koehler.vim
peachpuff.vim
torte.vim
darkblue.vim
elflord.vim
morning.vim
ron.vim
zellner.vim
default.vim
evening.vim
murphy.vim ←コレか

shine.vim


デフォルトで入ってるのはコレくらいで3つくらいは配色が好みかな。
とりあえず見やすければコレでいいか

2019年3月8日金曜日

Microsoft FlowでGmail宛に毎朝天気予報を送ってみる

Microsoft Flowの無料枠が月750回無料らしいので少し触ってみた。

frow top



テンプレートに色々なパターンが入っているものの、目的があればキーワードで検索すればヒットするかもしれない。

今回は天気で検索すると該当しそうな物がいくつか出てきた。
flow



今回は「住んでいる都市の毎日の天気を受け取る」を選んでみた。
とりあえず続行を押して先へ。
flow1



設定編集画面に移動。
ここで色々な部品を組み合わせてあれこれできるようにするみたい。
flow2



一番上の「Recurrence」が開始時間等を設定する部品。

毎朝送るので「新しいパラメータの追加」から「設定時刻(時間)」と「設定時刻(分)」を追加して「06:30」を指定した。
flow3



次は天気予報の取得。
MSN天気となっていたものが「Get forecast for today」の部分。

場所は日本語でも大丈夫のようなので自分の住んでる「市」を入力。

県と市を入れたり番地まで入れるとエラーになった。

単位が「Imperial(華氏)」になっているので「metric(摂氏)」へ変更した。
flow4



ここで矢印の途中にある「+」を押して「Microsoft Translator」を追加する。

上の天気予報だと結果が英語表記なので日本語に変換したい。
flow5



「テキスト」に翻訳したい部分を入れるのだが、色々試したところココに指定したら、
コレ以降の項目で使う際に、翻訳内容がまとめて一つの文章にされてしまう。

今回は「条件」(晴れとか曇のち雨とかの表記)の部分だけをとりあえず日本語へ変換する。
flow6



一番下の赤い部品は自分のMicrosoftアカウトのメールに通知をHTML形式で送ってくれるんだけど、Gmailで受け取りたいので、削除してOutlook.comを選択した。

削除は「・・・」を右クリックして選択、追加は上の翻訳の要領で。
flow7



「宛先」は送りたい自分のGmailアドレスを入力

「件名」は任意で(下の画像だと選び間違えてるな)

「本文」は具体的に指定したい内容をテキストで打ち、天気予報の内容は右ウィンドウから選んで貼り付けるだけ。
flow8



右上のテストを選ぶと「保存&テスト」ボタンがあるので実行する。

今回は無料枠のためフローの実行感覚は15分毎に制限されている。

flow test



修正して実際に届いたメールのイメージが下図。
flow mail




少し味気ないからもう少しイジってもいいかな?

他の項目も翻訳して利用するならTranslatorを多段にすれば多分イケそう。

これも気が向いたらもう少し作り込もう。

2019年3月3日日曜日

2019年 岩国城下町ひなまつり

今年も岩国市の錦帯橋周辺に広がる城下町でひなが行われ、古い雛人形の展示がされていたので散策に出掛けてきた。

岩国城下町ひなまつり


物によっては百年くらい前からの物もあるとのこと。
内裏雛まつり1


土曜は天気がよかったものの3/10までは雨予報が多いので外への展示は中へ移動させるのだろうか?
内裏雛まつり2


人形だけでなく、うさぎ年に作られたと思われるものや、地元の人が作ったであろう折り紙で作られたものまで色々と。
内裏雛まつり3



人形の作りを見るもの楽しいけど、それ以外の小物もやはりよく出来ていて凄いと思う。
内裏雛まつり4

内裏雛まつり5

内裏雛まつり6



あとは主役の内裏雛以外の雛人形達か。脇を飾る人形たちもなかなか楽しい。


途中で寄った松がねで同じFUJIFILMのXユーザを発見したのはなんとなく親近感が湧いたな。

2019年2月27日水曜日

GoogleドメインのDNSへメールサーバ用にMXレコード等を登録する

GCEで作ったVMインスタンスをメールサーバとして利用する前準備として、ドメインを取得しているGoogleドメインのDNSへ設定を行う。


Googleドメイン



Googleドメインのマイページから「DNS」の設定を開く。

画面下の方に「カスタムリソースレコード」の項目があるので、こちらへ必要な情報を追加する。


■Aレコード
まずはGCEのグローバルIPアドレスをAレコードに追加する。
名前」の部分はメールサーバに付与するサブドメインを入れるので「mail」を記入する。
タイプ」はIPv4アドレスなので「A」を指定。
TTL」はデフォルトの「1H(1時間)」のままに
データ」にはIPv4アドレスが入るので、GCPのダッシュボードからGCEにあるVMインスタンスのグローバルIPアドレスを確認して記入する。


■MXレコード
名前」の部分は取得しているドメインの「silver-cat.info」だがデフォルト値のため「@」に変換される。
タイプ」は「MX」を指定。
TTL」はデフォルトの「1H(1時間)」のままに
データ」には上のAレコードで指定したサブドメインを入れるので「mail.silver-cat.info」を記入する。
保存すると「データ」のサブドメインの頭に自動的に優先値の「10」が追加される。


■SPFレコード
通常TXTレコードに記載するが、Googleドメインはわかりやすくプルダウンメニューに「SPF」の項目を作ってくれている。
名前」はMXレコード同様「@」のままで。
タイプ」は「SPF」を指定。
TTL」はデフォルトの「1H(1時間)」のままに
データ」には「v=spf1 +mx -all」を記入する。

v=spf1」は決まり文句。
+」がPASS(認証する)、「-」がFail(認証しない)
+mx」でドメイン名に対応するMXレコードに指定された不ストのAレコードを参照して該当すれば認証する。
-all」で上記以外なら認証しない。



今回はサーバ1台のみのためこれでいいはず。
あとはメールサーバの中身の構築を時間を見ながら進めていこう。

2019年2月22日金曜日

GCEのCent OSへログインするSSHポートを22番から変更する

Google Cloud Platform(以下GCP)のGoogle Compute Engine(以下GCE)で作成したVMインスタンスへアクセスする際のSSHポートを変更する。
今回は「22」から「20055」へ変更する。


GCEはVMインスタンスの上位にFWがあるため、設定変更箇所は下記の4箇所となる。

・GCPのファイアウォールルールに追加してVMに適用
・Cent OSのSELinuxにポリシー追加
・Cent OSのfirewalldに設定追加
・sshdにポート番号追加

その後疎通確認してから22番ポートを閉じていく。



■GCPのファイアウォールルールに追加する。

メニューの「VPCネットワーク」 - 「ファイアウォールルール」から「ファイアウォールルールを作成」から新規ルール作成画面に移る。

設定するのは下記の項目。

FW


名前」はわかりやすいように「allow-ssh20055」に設定

ターゲットタグ」を名称と同じにして、VMインスタンスへ適用する際にわかりやすくしてみた。任意なので自分がわかりやすければOK。

ソースIPの範囲」は「0.0.0.0/0

プロトコルとポート」は「指定したプロトコルとポート」から「tcp」にチェックを付けて「20055」を入力して保存。


VMインスタンスの編集から設定画面を開いて「ネットワークタグ」に先程作成したルールの「ターゲットタグ」を入力する。
VM


これでGCP上のファイアウォールルールでTCPの20055番ポートが空いた。




■SELinuxにポリシー追加

SELinuxの設定を変更するためVMにSSHでログインしてroot権限に移行する
$ sudo su -

SELinuxの状態を確認する。
# getenforce

Enforcing」と出れば有効化されているので作業を続ける。
設定がややこしいからと言って無効化するような無粋なことはしない。

SELinuxの設定変更には「semanage」コマンドを利用するが、今回立てたVMインスタンスのCent OSではすでにインストール済みだった為このまま続ける。

まずはSELinuxが許可しているSSHのポートを確認する。
# semanage port --list | grep ssh
semanage


tcpの22番ポートが許可されているので、これに今回追加する20055を追加する。
--add」オプションでポリシーを追加する。
# semanage port --add --type ssh_port_t --proto tcp 20055

設定が追加されているかを確認する。
# semanage port --list | grep ssh
SELinux20055


これでSELinuxのポリシーに20055番ポートの設定が追加された。
22番ポートが残っているが他の設定があるから一旦このままで。




■firewalldに設定追加

次にfirewalldの設定を変更する。
firewalldの稼働状況の確認から。
# systemctl status firewalld
firewalld


Active:の値がactive(running)となっているのでファイアウォールは有効になっている。
eth0のところにWARNINGが出ているが今回は無視しよう。

現状の確認としてファイアウォールが外に向けて公開しているサービスを確認する。
# firewall-cmd --list-services --zone=public --permanent
firewalld ssh


開放するポートを設定するが、この設定が入っているファイル「/usr/lib/firewalld/services/ssh.xml 」ではなく、
/etc/firewalld/services/」に「ssh.xml」を配置して設定を記述する必要がある。

既存のファイルを/etc/firewalld/services/にコピーする
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/


コピーした先のファイルに2005番ポートの設定を追加する。
# vi /etc/firewalld/services/ssh.xml
/etc/firewalld/services/ssh.xml


設定が完了したらfirewalldの設定を再読込させる。
# firewall-cmd --reload
reload


■sshdにポート番号を追加

最後にsshdにポート番号を追加する。
設定ファイルは「/etc/ssh/sshd_config」に記述されているのでこちらを編集する。

# vi /etc/ssh/sshd_config
上の方に#でコメントアウトしてある「#Port22」を下記に修正
Port 22
Port 20055
sshd_config


vimだとコメントアウトした文字色が背景色に近く見辛かったので今回はviで編集。
またその内vimの設定イジるか。

これで22番と20055番でsshへアクセスできるようになったはずなので、設定を再読込する。
# systemctl restart sshd


クライアントPC側の「.ssh」フォルダにある「config」ファイルのポート番号も忘れずに新しいポート番号に書き換えて、新しいポート番号でアクセスしてみる。
ssh20055


ここまでで新しく設定した20055番ポートでSSH接続できるようになった。
あとは残っている22番ポートの設定を無効化していけばいい。




■GCPのファイアウォールルールに追加

冒頭で行った新しいポート番号を登録する要領で22番ポートを拒否するルールを作成して、VMインスタンスへ適用する。
deny-ssh22


名前」はわかりやすいように「deny-ssh22」に設定

一致したときのアクション」を「拒否」に設定

ターゲットタグ」はこれも名前と同じモノに

ソースIPの範囲」は「0.0.0.0/0

プロトコルとポート」は「指定したプロトコルとポート」から「tcp」にチェックを付けて「20055」を入力して保存。

同様にVMインスタンスの編集から設定画面を開いて「ネットワークタグ」に先程作成したルールの「ターゲットタグ」を入力する。


また、ブラウザからのSSH接続はこのままでは出来ないが、
VMインスタンスのSSHの右にあるプルダウンメニューから「ブラウザウィンドウでカスタムポートを開く」を実行して、新しく設定した20055を入力すれば問題なく接続できた。
cloudshell 20055


実際の挙動としてはこれをやるだけで外部からの22番ポートでのSSH接続はできなくなる。

だからといって他の設定を置いておくのも気持ち悪いので22番ポートの設定を無効化していく。




■sshdから22番ポートを無効化

上で編集した「/etc/ssh/sshd_config」を編集する。

# vi /etc/ssh/sshd_config
22番ポートの情報をコメントアウト
#Port 22
#Port 22


設定を再読込する。
# systemctl restart sshd




firewalldから22番ポートを無効化

上で編集したファイルから22番ポートの記述を削除する。
# vi /etc/firewalld/services/ssh.xml
ssj.xml 22deny


firewalldの設定を再読込させる。
# firewall-cmd --reload




■SELinuxのポリシーから削除(出来なかった)

削除する場合は「semanage」コマンドで「--delete」オプションを利用する。
# semanage port --delete --type ssh_port_t --proto tcp 22
SELinux delete

とやってみたものの、
「ポート tcp/22 はポリシーに定義されているため、削除できません」
との事で削除出来なかった。


まぁこれで22番ポートのアクセスが出来ないことは確認できたので良しとしようか。

2019年2月19日火曜日

Windows10のPowerShellからGCPへのSSH接続

TwitterでWindows10 バージョン1803からOpenSSHが実装されてるらしいとの情報を見たので少し確認。

アプリと機能」から「オプション機能の管理」を確認すると確かに「OpenSSHクライアント」がインストールされている。

OpenSSH



せっかくなのでGoogle Cloud Platform(以下GCP)に無料枠でVMを作成してSSHで繋げて見ようかと。


GCP」に移動して自分のプロダクトへ移動して
Compute Engine」 - 「VMインスタンス」 から新規作成。

スペックはGCPの無料枠である「Always Free」の範囲内に収めるために以下の構成で。

リージョン:us-west1
ゾーン:us-west1-b
マシンタイプ:f1-micro(CPU:0.6GHz、メモリ:0.6GB)
OS:Cent OS 7 30GBの標準の永続ディスク

VM


ついでに外部公開用の固定IPもVMに紐付ける1個だけなら無料らしいので一緒に作成する。
global


作成したVMの右側にあるSSHを選べばブラウザからSSHでのアクセスは可能。
VMSSH



でもまぁコレじゃ面白くないのでWindowsから接続できるように準備する。
一応「OpenSSH」のマニュアルページを参照。


PowerShellを起動して以下コマンド実行
> ssh-keygen -t rsa -b 4096

-t で暗号方式を RSA に指定
-b で鍵の長さを 4096 に指定(デフォルト値は2048)
ssh-keygen


これでユーザフォルダ直下に「.ssh」フォルダが作成され、公開鍵と秘密鍵が生成された。
.ssh


以下コマンドを実行して公開鍵の内容を表示する。
> cat ~/.ssh/id_rsa.pub
rsa

ssh-rsa ** ~ ** == (ユーザ名)の様な表記で表示されるので全てコピペする。
もちろん該当ファイルをテキストエディタなどで開いても同様の物が見れる。


SSHで繋げたいVMを選んで編集画面に入ると「SSH認証鍵」の項目があるので、こちらの空欄に先程の文字列をそのままペーストする。


公開鍵


自動的に空欄の左側にSSHでのログイン用ユーザ名が表示されるが、
このVM内にも同じユーザ名で自動的にユーザを作成してくれる。

便利だ。

内容を確認したら保存ボタンで設定内容を更新。


PowerShellから下記コマンドでアクセスできるかを確認する。
> ssh (ユーザ名)@(IPアドレス) -i ~/.ssh/id_rsa




これでPowerShellからGCPのVMへSSHでログインできるようになったものの、毎回コレを入力するのは面倒なので「config」ファイルを作成する。

先程のログインで「known_hosts」ファイルが作成されていることも念の為確認。
こちらは接続したサーバ側のSSHサーバ証明書が格納されている。



.ssh」フォルダの直下に「config」ファイルを作成してテキストエディタで下記内容を入力

Host (任意の名称)
HostName (IPアドレス or ドメイン名) 
User (ユーザ名)
Port 22(接続ポート)
IdentityFile ~/.ssh/id_rsa(秘密鍵のパス)


今回はHost名をmail-srvに設定した。その内メールサーバにしたい。
これでPowerShellから
> ssh mail-srv(設定したHostの名称)でアクセスして問題なければ大丈夫かな。


GCPの無料枠は中国やオーストラリアからのVM宛の通信は無料枠対象外だから、気が向いたらSSHのポートを初期の22から別に変更しよう。


~ブログ更新~

設定してみた。