CertbotによるSSL証明書の設定

CentOS 8.2 にLet’s encrypt でSSL証明書を設定した時のメモ。

検索すると、古いやり方が出てくる。最新のやり方は、Certbotの本家サイトに行くのがいい。

https://certbot.eff.org/lets-encrypt/centosrhel8-apache

OSとWebサーバーを選んで、後は指示通りにやるだけ。

一応、CentOS 8.2 で、Apache 2.4 でやった時の手順は以下(2020年9月3日時点)。

1.SSLサーバーの設定

mod_sslは既に入れてあり、SSLは有効化されている。

ただし、SSL証明書を取得したいドメインについては、バーチャルホストとして定義することが必要。

デフォルトの/etc/httpd/conf/httpd.confではなく、/etc/httpd/conf.d以下に、バーチャルホストを定義する。ここに定義した、XXXX.com.confに対して、後の手順4で、Certbotが、XXXX.com-le-ssl.confを作成して、XXXX.com.confについても、httpsリダイレクトに修正してくれる。

2.EPELライブラリの有効化

https://fedoraproject.org/wiki/EPEL#Quickstart

これも既にやってあったけど、一応、以下をやる。

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

後、一応、こちらも入れておいた方がいいい。

sudo dnf config-manager --set-enabled PowerTools

3.Certbotのインストール

sudo dnf install certbot python3-certbot-apache

4.証明書のインストール

HTTP用にバーチャルホストが定義してあれば、自動で証明書を取得して、定義ファイルも作ってくれる。

sudo certbot --apache

SSL化したいバーチャルホストを選択すれば、後は自動でやってくれる。ドメイン定義がちゃんとあっていることが前提なので、新サーバーに移行する場合の、新サーバー側で事前のSSL証明書取得についてはできない。

5.自動更新の設定

crontabに直接、定期的に更新するのを設定する。

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

6.確認

https://www.ssllabs.com/ssltest/

ニフクラで、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

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

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ということで備忘録

ConoHaのVPSで、CentOSサーバー設定

ConoHaのVPSで、CentOS(7.6)サーバー追加時に最初にやることのメモ

1.サーバー追加時

「オプションを見る」ー「SSH Key」で「キーを選択」で、事前に登録したパブリックキーを選択して、鍵認証にする。

2.サーバーの基本設定

2.1 OS更新

yum update -y 

2.2  hostname設定

/etc/hostnameを変更

2.3 SSHポート変更

1)/etc/ssh/sshd_configでPort指定を追加

Port ???? ※????:適当なポート 

2) ファイアウォールの設定変更

元のSSHポートを閉じて、変更したポートを開ける。

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

3)sshd再起動

systemctl restart sshd 

2.4 rootログイン時のメール通知

.bash_profileに以下を追加する。

 date | mail -s "root login(`hostname`)" メールアドレス 

3.logwatch設定

1)logwatchをインストール

yum install logwatch 

2)/etc/logwatch/conf/logwatch.confを編集して、「MailTo = メールアドレス」を追加

4.yum updateの通知設定

1)yum-cronをインストール

yum install yum-cron 

2)/etc/yum/yum-cron.conf,yum-cron-hourly.confの修正

「emit_via = email」「email_to = メールアドレス」に変更

3)yum-cronの有効化

systemctl enable yum-cron 

5.その他設定 

5.1 Cron起動時にmessagesにログが残る対策

/etc/systemd/system.confで、「LogLevel=notice」に変更

5.2 メール関連の設定

https://gijutsu.com/2019/02/15/%E8%BF%B7%E6%83%91%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E5%AF%BE%E7%AD%96/

5.3 kdumpの無効化

systemctl stop kdump
systemctl disable kdump