いろいろバックエンドな人の備忘録

CとGoが大好きな人のポエム掲載所

<メモブログ>今更ながら CentOS 7 +Google Authenticator を利用して二段階認証にする

基本的に家に接続するときは IPsec/L2TP を使っているが環境によっては VPN(ESPパケット)を通さないネットワークがあるのので、SSHを開けておく。(22番ポートが閉まっていると詰むが・・・)

かといって、22番ポートインターネットに晒すのも気が引けるし、公開鍵認証も鍵の管理に不安が残る。なので、二段階認証を導入する。

CentOS 7 +Google Authenticator を利用して二段階認証に対応させる。

ただし、以下の方法は Tera Term では動作しない。 したがって、TeraTerm環境で設定し、セッションをすべて切ってしまうと ログイン不能 になるので注意。

(自分は気付かずにハマった。Macのターミナルや未確認だが TeraTerm 以外の Windows SSHクライアントだと動作するかもしれない。)

必要なパッケージのインストール

yum -y install git pam-devel automake libtool
git clone https://github.com/google/google-authenticator.git

インストール

cd ~/google-authenticator/libpam
./bootstrap.sh
./configure
make
make install
ln -s /usr/local/bin/google-authenticator /usr/bin
cp /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/

sshd の設定 /etc/ssh/sshd_config

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
#PasswordAuthentication yes

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes # デフォルト
AuthenticationMethods publickey,keyboard-interactive

PAMルールの新規作成 /etc/pam.d/google-auth

#%PAM-1.0
auth        required      pam_env.so
auth        sufficient    pam_google_authenticator.so nullok
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
#auth       substack     password-auth
auth       substack     google-auth
auth       include      postlogin

ここから、動作させたいユーザーになる。 いろいろ聞かれるが、すべて y でいいと思う。

google-authenticator

QRコードとイマージェンシーコードが表示されるのでコードは控えておく。 QRコードはアプリ、Google認証システムで右上の「…(設定ボタン)」→「アカウントを設定」→「バーコードをスキャン」でスキャンすればOK

<備忘録>VyOS の SSHでハマった / 特定のセグメントから VyOS 自身のSSHをブロックする方法

構成

f:id:nrtn:20160821202350p:plain

図のような構成を考える。

ここで、

  • VM Segment からはルーターにログインさせたくない。

としたとき、下記のようにコンフィグを書いた。

set service ssh listen-address '192.168.0.1'
set service ssh port '22'
set firewall name TO_SELF_SSH default-action 'accept'
set firewall name TO_SELF_SSH rule 1 action 'reject'
set firewall name TO_SELF_SSH rule 1 destination port '22'
set firewall name TO_SELF_SSH rule 1 source adddess '172.16.0.1/24'
set firewall name TO_SELF_SSH rule 1 protocol 'tcp'
set interface ethernet eth1 firewall in TO_SELF_SSH

f:id:nrtn:20160821202352p:plain

しかし、これはつながってしまった。

まず、リッスンアドレスは eth0 側だが、ルーティングされ 自身の eth1 にアクセスされてしまう。 なので、172.16.0.1/24 セグメントからのアクセスを制限し、eth1 の in に適用した。

しかし、これでもまだつながってしまった。

どうやら、ファイアーウォールが評価されるのは 自分自身以外のインターフェイスに投げるとき であるようだ。

下記のように 適用 I/F を local と書いて解決。

set service ssh listen-address '192.168.0.1'
set service ssh port '22'
set firewall name TO_SELF_SSH default-action 'accept'
set firewall name TO_SELF_SSH rule 1 action 'reject'
set firewall name TO_SELF_SSH rule 1 destination port '22'
set firewall name TO_SELF_SSH rule 1 source adddess '172.16.0.1/24'
set firewall name TO_SELF_SSH rule 1 protocol 'tcp'
set interface ethernet eth1 firewall local TO_SELF_SSH

キュアジェントルマンになってほしいよね

Twitterで見つけた下記記事

prehyou2015.hatenablog.com

読んでみた感想。

激しく同意するわ

人に言わせるとにわからしいが、自分もキュアジェントルマンなんでコスプレイヤーやってる人の気持ちを理解できないわけでもない。 その上で、記事の趣旨はとてもよくわかる。

自分の話になるが、チビだった頃ウルトラマンセーラームーンがほんとうにいると思っていた時期はあった。 4歳くらいだったかな。

そんなある日、とあるデパートの屋上でセーラームーンの格好をしたオッサンに出くわしたことがある。 そのときなんとも言えない興ざめした気持ちになったのは覚えている。

「いや、おまえ男だろ」

って言われるかもしれないけど、4歳くらいといえばまだ男女関係なく共通意識があって 「憧れのキャラクターに対する絶対的信仰」が強い時期なので、「それに対するがっかり感」は大人が思う以上に大きい物だと思う。

「あれ何!?不思議!!」というより「え、なに、どういうこと?」と考えてしまった。

その一方、記事にあるようにその格好をしている大人は作品愛があることも承知なので、 そこら辺はデリケートに考えて、キュアジェントルマンしてほしいと願う。

ちなみに私はどちらかと言うとコスプレよりキグルミのほうが好きな派なんですがね。