yum update失敗で、再起動できず

ConoHa VPSのCentOS7.6サーバーで、yumアップデートを掛けたが、その後サーバーが無反応となってしまった。管理パネルから再起動かけたところ、kernel panicで起動できなくなった。VPSのため、レスキューモードでどう起動するかわからず、探したら以下ページを発見した。

https://qiita.com/kiyocy24/items/5897d58bdd04f2e2a65c

ただし、上記ページでは再起動となっているが、再起動の場合はタイミングが取りづらく何回も失敗した。以下の手順が良いと思う。

  1. コントロールパネルから一旦、強制終了する
  2. コントルールパネルから、起動する
  3. コントロールパネルの「コンソール」ボタンが有効化されたら、すかさず押す
  4. コンソール画面で、キー入力

上記手順で、古いカーネルなり、レスキューモードなりを選んで起動して、復旧作業ができるようになった。

ニフクラで、CentOSサーバー設定

ニフクラで、CentOS(7.6)サーバー追加時に最初にやることのメモ 。ConoHaはサーバー側でファイアウォール設定だが、ニフクラは外部のファイアウォールを使うという違いがある。

「firewall-cmd」で確認すると、デーモンは実行していない。

# firewall-cmd --list-all
FirewallD is not running

# firewall-cmd --state
not running

# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

ファイアウォールは動作していないので、ニフクラのファイアウォールで設定する。それ以外は、ConoHaの時と同じ。

違いのある場所については以下。

1.サーバー追加時

サーバー設定で、ファイアウォールを追加する。ファイアウォールの設定は、「INルール追加」でプロトコル「SSH」で接続元種別「現在接続しているIPアドレス」とする。

2.サーバーの基本設定

2.0 パスワード設定

コンソールからログインする場合には、rootパスワードが必要となるので設定する。

https://cloud.nifty.com/cs/catalog/cloud_faq/catalog_120416000678_1.htm

2.3 SSHポート変更

「 2) ファイアウォールの設定変更」は、コントロールパネルの「ファイアウォール」から設定変更を行う。

ニフクラのファイアウォールだけでなく、内部のファイアウォールを有効にする場合の手順は、以下。

cd /usr/lib/firewalld/services/
cp -p ssh.xml ssh-????.xml
vi ssh-????.xml ※port="22"の22を変更したポート????に

cd /etc/firewalld/zones
vi public.xml  ※ssh.xmlをssh-????.xmlに変更

systemctl unmask firewalld
systemctl start firewalld
firewall-cmd --list-all ※確認
systemctl enable firewalld

SoftEther VPNでL2TP/IPSec

ConoHaのVPSサーバー(CentOS 7.6)にインストールしたSoftEther VPNでL2TP用のサーバー設定した時の作業メモ。

利用目的としては、 外で公共Wifiを使う時のセキュリティ対策と、サイト管理作業時のIPアクセス制限をVPSサーバーに限定するため。後、東京リージョンのサーバーなので、地方や海外でもradikoでJ-Waveが聴けるというメリットもある。

1.管理マネージャーからの設定

https://ja.softether.org/4-docs/2-howto/L2TP_IPsec_Setup_Guide/1

1)不要機能の無効化

管理マネージャーから以下をすべて無効にする。

  • OpenVPN / MS-SSTP
  • ダイナミックDNS ※configファイルの書き換え
  • VPN Azure

2)余分なリスナーを削除

 使わないリスナーは削除する。

3)暗号化と通信関係の設定

「使用する暗号化アルゴリズム」はデフォルトから強いものに変更。

「インターネット接続の維持機能を使用する」のチェックを外す。

4)仮想HUBの設定

「DEFAULT」があれば削除して、新たに適当な名前でデフォルト用Hub(以下、仮にHubDummy)と利用するHub(以下、仮にHubReal)を作成する。

  • 「匿名ユーザーに対してこの仮想HUBを列挙しない」にチェックを入れる。
  • 最大同時セッション数の制限を設定する

5)IPSec / L2TP 設定

「L2TP サーバー機能を有効にする(L2TP Over IPSec)」を有効にする。

「IPSec事前共通鍵」を適当に設定。

「接続時のユーザー名で仮想HUBが省略された場合に接続する仮想HUBの選択」にHubDummyを設定する。

6)仮想NATおよび仮想DHCPサーバー機能

HubRealの 「仮想Hubの管理」から「仮想NATおよび仮想DHCPサーバー機能」を開いて、

「SecureNAT機能を有効」にする。

「SecureNATの設定」で、「仮想NAT機能を使用する」と「仮想DHCPサーバー機能を使用する」にチェックを入れる。

7)ローカルブリッジ設定

新しいローカルブリッジを定義する。

以下にあるようにtapデバイスを使うようにした。

https://ja.softether.org/4-docs/1-manual/3/3.6#3.6.9_tap_.E3.83.87.E3.83.90.E3.82.A4.E3.82.B9.E3.81.AE.E4.BD.BF.E7.94.A8

仮想HUBにHubRealを選択し、「作成する種類」は「新しいtapデバイスとのブリッジ接続」を選択して、「ローカルブリッジ」を追加する。

8)ユーザーの作成

HubRealの「仮想HUBの管理」から、ユーザーを作成する。とりあえずはパスワード認証で。

2.ポート開放

使用するポートは、UDPの500と4500。

https://ja.softether.org/3-spec#SoftEther_VPN_Server_.E3.81.AE.C2.A0L2TP.2FIPsec_.E3.82.B5.E3.83.BC.E3.83.90.E3.83.BC.E6.A9.9F.E8.83.BD.E3.81.AE.E4.BB.95.E6.A7.98

サーバーでIPSecのポートを公開する。

firewall-cmd --permanent --add-service=ipsec
firewall-cmd --reload

3.クライアント接続

SoftEtherのサイトのチュートリアルはここ。

https://ja.softether.org/4-docs/2-howto/L2TP_IPsec_Setup_Guide

3.1 Windows10からの接続

SoftEtherのサイトはWindows7のままなので、以下サイトが参考に。

http://www.seil.jp/doc/index.html#fn/pppac/use/pppac-client/win10_l2tp.html

ユーザー名は、「ユーザー名@HUB名」を入れる。 事前共有キーは、「IPSec事前共通鍵」のこと。

3.2 iPhone/iPadからの接続

iOS12.1.4の場合、「設定」から「VPN」で、「VPN構成を追加」で設定できる。タイプは「L2TP」にし、 アカウントは「ユーザー名@HUB名」、 シークレットに「IPSec事前共通鍵」を設定。

SoftEtherのサイトは 、古いiOSで英語版だけど参考まで。

https://ja.softether.org/4-docs/2-howto/L2TP_IPsec_Setup_Guide/2

SoftEther VPNサーバーのインストール

ConoHaのVPS(CentOS7)に、SoftEther VPNサーバーを入れた時のメモ。

(SoftEther VPN)

https://ja.softether.org/

(インストール手順)

https://ja.softether.org/4-docs/1-manual/7/7.3

1.事前準備

必要なソフトを入れる。

 yum install gcc 

2.インストール

(ダウンロードページ)

https://www.softether-download.com/ja.aspx?product=softether

コンポーネント「SoftEther VPN Server」、プラットフォーム「Linux」、CPU「Intel 64 / AMD 64(64 bit)※」を選択する。(※念のため、サーバーの/proc/cpuinfoで確認)

最新のものをサーバーで取得する。

wget ダウンロードURL 

後は、インストール手順通りに進める。

(インストール作業)

tar xzvf ダウンロードファイル
cd vpnserver/
make ※質問にはすべて1を入力

vpnserverディレクトリを、/usr/localに配置してパーミッションを変更する。

cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver

解凍したvpnserverフォルダがフルアクセスだったので、一応、このパーミッションも変更した。

cd ..
chmod 700 vpnserver

3.動作確認

vpncmd の check コマンドによる動作チェックを行う。

cd vpnserver
./vpncmd

コマンドで、「3」を入力して「VPN Tools」に入り、 「check」を入力して動作確認を行い、「exit」で終了。

4.サービス登録

公式ページのインストール手順では、スタートアップスクリプトとなっているが、CentOS7ではサービス登録にする。サービス登録の内容は、以下ページが参考になる。

https://qiita.com/salt_field/items/5969f7d7a8612e150bda

サービス登録までを行う。

 vi /usr/lib/systemd/system/vpnserver.service 
----------------------------------------------
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
[Install]
WantedBy=multi-user.target
----------------------------------------------

systemctl daemon-reload
systemctl enable vpnserver

5.NATトラバーサル、ダイナミックDNS機能 、IPv6リスナー の無効化

NATトラバーサルが有効のままでは、ファイアウオールに関係なくSoftEther VPNサーバー管理マネージャから接続できてしまうので、無効化する。

コンフィグファイルを直接編集し、ダイナミックDNS機能 、IPv6リスナーも使わないので同時に無効化する。 。

cd /usr/local/vpnserver
cp -p vpn_server.config vpn_server.config.org
vi vpn_server.config
-------------------------------
:
declare DDnsClient
{
bool Disabled true
:
:
declare ServerConfiguration
{
:
bool DisableIPv6Listener true
bool DisableNatTraversal true
:
-------------------------------

6.管理者パスワード設定

管理者ログインのIPアドレス制限の設定を行う。

cd /usr/local/vpnserver
vi adminip.txt
-------------------------------
127.0.0.1
XXX.XXX.XXX.XXX   ※6.で接続するクライアントIPアドレス
-------------------------------

vpnserverを起動し、コマンドにて管理者パスワードを設定する。

systemctl start vpnserver 

cd /usr/local/vpnserver
./vpncmd
:
Select 1, 2 or 3: ※1を入力
:
Specify Virtual Hub Name: ※そのままリターン

Specify Virtual Hub Name: ※そのままリターン

VPN Server>ServerPasswordSet
:
Password: ※パスワード入力
Confirm input: ※パスワード再入力
:
VPN Server>quit

7. VPN サーバー管理マネージャから設定

Windows端末にて、ダウンロードページから、「SoftEther VPN Server Manager For Windows」をダウンロードして、サーバー管理ツールをインストールする。

サーバー側で必要なポートを開放する。とりあえず443ポートで接続する場合は以下を実行。

firewall-cmd --permanent --add-service=https
firewall-cmd --reload

サーバーアドレスと管理者パスワードを設定して接続して、目的に応じた設定をしする。

迷惑メールにならない対策

CentOS(7.6)サーバーからmailコマンドで、自分に機械的に送っているメール(ログイン時、yum-cron等)が、Gmail(G Suite無償版※)で迷惑メールとしてはねられないようにする。

※初期ベータ時の登録のまま無償版で使っているが、有償にしないと以下のSMTPリレーが使えない。だんだん無償版の扱いが厳しくなってきたが、できる限り無償で頑張ってみる。

https://support.google.com/a/answer/2956491

迷惑メールに入るだけでなく、最悪送信が受け付けられない。

(Googleサーバーからのメッセージ)

XXXXX@XXXXX.com: host aspmx.l.google.com[2404:6800:4008:c04::1b] said:
550-5.7.1 This message does not have authentication information or fails to
pass 550-5.7.1 authentication checks. To best protect our users from spam,
the 550-5.7.1 message has been blocked. Please visit 550-5.7.1

メッセージが受け付けられないということで、以下サイトを見ろとなる。

https://support.google.com/mail/answer/81126#authentication

その対策として、とりあえず、サーバー追加時にやること。

1.SPFレコードにサーバー登録

対象ドメインDNSのTXTレコードを修正(追記)する。

v=spf1 ip4:XXX.XXX.XXX.XXX include:_spf.google.com ~all 

GSuiteのツールで、DNSをチェックできるので、こちらから設定されたことを確認する。

G Suite Toolbox Check MX )

https://toolbox.googleapps.com/apps/checkmx/

上記設定後に、サーバーからのメールを「メッセージのソース」で見ると、SPFが「PASS」となる。

SPF:  PASS(IP: XXX.XXX.XXX.XXX)。詳細 

2.Postfixの設定

CentOS7から、標準がPostfixになったらしい。

2.1 TLS通信設定

以前はSendmailでTLSが有効だったけど、Postfixでは標準ではTLSは無効になっている。以下を参考にして設定を変更した。

https://qiita.com/tak-onda/items/b585841e03e4619ec367

/etc/postfix/main.cfに以下を追加。

smtp_tls_security_level = may
smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_loglevel = 1

ちなみに、CAファイルが無効(あるいはsmtp_tls_CAfileを設定しない場合)でも、送信自体はできた。

 (maillog)
postfix/smtp[11228]: Untrusted TLS connection established to aspmx.l.google.com[64.233.189.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

2.2  DKIMとDMARC設定

とりあえず、TODOということで備忘録