サーバ更新2024

VPSの長期割終了に伴い、サーバの再構築を行う。 今回はCentOS8->CentOS9の更新。

タスク

  • 作業ユーザの作成
  • hostname
  • ssh関連の設定
  • swapfileの追加
  • docker、docker composeのインストール
  • firewall関連の設定
  • smtp, root宛のメールの転送設定
  • webサーバの設定
  • let's encrypt
  • vpn
  • bgp

hostname

echo host1.example.com > /etc/hostnameなどでhostnameを上書き

systemctl restart NetworkManager

を忘れずに実行

ssh関連の設定

PasswordAuthentication no
PermitRootLogin no

を/etc/ssh/sshd_configに書き込んで終わりと思ったらそうじゃない。

/etc/ssh/sshd_config.d/01-permitrootlogin.conf /etc/ssh/sshd_config.d/50-cloud-init.conf に

PermitRootLogin yes
PasswordAuthentication yes

って書いてある!動作確認せずに設定した気になっていると危ない。

swapfileの追加

swapを増やしておく。

 sudo dd if=/dev/zero of=/var/spool/swap/swapfile2 bs=1M count=2048
 sudo chmod 600 /var/spool/swap/swapfile2
 sudo mkswap  /var/spool/swap/swapfile2
 sudo swapon  /var/spool/swap/swapfile2
 free -m  # swapが増えたことを確認する
 # 永続化する場合はfstabに追記する
 sudo vi /etc/fstab

smtp

インストール

sudo yum install postfix

設定ファイル変更

18c118
< #myorigin = $mydomain
---
> myorigin = $mydomain
135c135
< inet_interfaces = localhost
---
> inet_interfaces = all

spfdnsのhostnameを書き換えて以下を実行。/var/log/maillogで送信が問題ないことを確認。

echo -e 'Subject: TitleA\n\nHello!\nWorld' | sendmail -f user_name@from.example.com user_name@to.example.com

/etc/aliasesに

root:  <作業用ユーザ>
<作業用ユーザ>:  <転送したいメールアドレス>

を追記し

sudo newaliases

を実行する。

lets encrypt

以下で、インストールと設定が完了。

sudo yum install epel-release
sudo yum install certbot
certbot certonly --manual -d "*.example.com" -m "mail@example.com" --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook <path/to/script> --manual-cleanup-hook <path/to/script>
/usr/bin/certbot renew --dry-run --manual -m "mail@example.com" --agree-tos --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook <path/to/script> --manual-cleanup-hook <path/to/script> --post-hook 'systemctl restart httpd'

webサーバの設定

とりあえずapacheの設定をしておく(nginxに移行したいがまた今度)

sudo yum install httpd mod_ssl php-fpm

phpのメジャーバージョンが変わっていてpukiwikiが動かない(php7->8)。。。 別途考える。

vpn

libreswanにてデフォルトでikev1動作しなくなったようである。 (ignoring IKEv1 packet as policy is set to silently drop all IKEv1 packetsとなる) ikev2で動かしてみるがうまくいかなかったので、ikev1で動かすことにする。

sudo yum install libreswan xl2tpd

xl2tpd.service内のmodprobe l2tp_pppをコメントアウトすることで対応した。

ppp0に対するfirewalldの設定

/etc/sysctl.confに以下を追記し、sysctl -pで反映

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.rp_filter = 0

にして、ipsec関連の設定ファイルを移植して、

sudo systemctl enable ipsec
sudo systemctl start ipsec

をする。

ikev2で動かしてみたところ、これまでトンネルを張っていた対向(strongswan)では

received TS_UNACCEPTABLE notify, no CHILD_SA built
failed to establish CHILD_SA, keeping IKE_SA

となっている。ipsec verifyの結果としては

000 IKE SAs: total(1), half-open(0), open(0), authenticated(1), anonymous(0)
000 IPsec SAs: total(0), authenticated(0), anonymous(0)

となる。ちゃんとデバッグしないと動作しなさそう。

/etc/ipsec. confに以下を追記してとりあえずikev1で動かす。v2への移行も進めるか。

ikev1-policy = accept

bgp

sudo yum install bird

をして、設定ファイルを移植。

sudo systemctl enbale bird
sudo systemctl start bird

にて完了。設定ファイルの内容は割愛。

ip route

にてbgp経由のルートが表示されることを確認する。

まとめ

  • PHPVPN(libreswan)のバージョン違いによりそのままの設定ファイルで動作しない現象が発生した。対処はまた考えることにする。