CentOS Stream9サーバー設定

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

1.サーバー追加時

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

2.サーバーの基本設定

2.1 OS更新

CentOS8以降は、yumでなくてdnfになっている。dnfにシンボリックされているので、今まで通りyumでもいいけど。

dnf 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 > /tmp/login
echo $SSH_CLIENT >> /tmp/login
cat /tmp/login | mail -s "root login(`hostname`)" メールアドレス 

SMTPサーバーとして、postfixをインストールする。

dnf -y install postfix
systemctl enable postfix
systemctl start postfix

mailコマンドがない場合は、s-nailをインストールする。

dnf -y install s-nail

3.logwatch設定

1)logwatchをインストール

dnf install logwatch 

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

4.dnf更新の通知設定

yum-cronに対応するものとして、dnf-automaticをインストールする。

1)dnf-automaticをインストール

dnf install dnf-automatic

2)/etc/dnf/automatic.confの修正

「emit_via = email」「email_to = メールアドレス」に変更し、email_fromも正しいドメイン名に変更。

3)dnf-automaticの有効化

systemctl enable dnf-automatic.timer
systemctl start dnf-automatic.timer 

5.その他設定 

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

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

5.2 メール関連の設定

DNSにSPFレコードを設定しておく。

5.3 kdumpの無効化

systemctl stop kdump
systemctl disable kdump

5.4 IPアドレス制限

以前のhosts.allowは無くなったので、PAMを有効にして/etc/security/access.confを編集する。

:

# User "root" should be allowed to get access via cron .. tty5 tty6.
+:root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
 ※コメントアウト外す

:

# VPN
+:root:10.10.10.10.1  # rootユーザーを10.10.10.1から許可の例
# All other users should be denied to get access from all sources.
-:ALL:ALL  # これで上記許可以外は接続できなく

※rootでcron実行するために、コメントアウトされていた行を有効にする。

sshdでのPAMの有効化は、/etc/ssh/sshd_configで以下を設定

UsePAM yes

PAM設定ファイルの/etc/pam.d/sshdに以下を設定

account    required pam_access.so

5.5 プライベートネットワーク

ConoHaのVPSの場合、以下の手順でプライベートネットワークの接続設定をする。

5.6 reboot後のメール通知

cronに以下を設定して、リブート後にboot.logの内容をメール通知する。

@reboot (dmesg ; tail -100 /var/log/messages)| mail -s "`hostname` rebooted" メールアドレス

5.7 dnf-makecache.timerの無効化

1時間毎に動いているので、これを無効化する。これが何をしていいるかと、その無効化方法は以下が参考になる。

https://unix.stackexchange.com/questions/579009/why-is-dnf-makecache-timer-needed

対応としては、/etc/dnf/dnf.confに以下を追加。

metadata_timer_sync=0

5.8 rootユーザーへの変更を禁止

rootユーザーへの変更を禁止する場合は、/etc/pam.d/suに以下を設定。

auth            required        pam_wheel.so use_uid root_only

Windowsサーバー設定

VPSでWindowsサーバー追加時に設定ことのメモ

1.リモートデスクトップのポート変更

以下レジストリの値を変更したいポートにする。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber

ファイアウォールに上記ポートについて、指定IP(VPN)からのみ許可する設定を追加して、再起動

2.ファイアウォールの設定

リモートデスクトップ用ポートの許可を追加する。不要な設定は、無効にする。

3. リモートログイン時 のメール通知

3.1 SMTP

1)サーバーマネージャーの「役割と機能の追加」から「SMTPサーバー」を追加

2)サービス「簡易メール転送プロトコル」のスタートアップの種類を「自動」に

3)迷惑メール対策として、追加サーバーのSFPレコードを設定

3.2タスクスケジュラー設定

タスクスケジューラで、[トリガー: ユーザーセッションへの接続時]にメール通知するように設定。以前はタスクスケジューラからメール送信設定できたが、現在は使えないようなので、PowerShellで以下のようなコマンドを組む。

# 使用するSMTPサーバを指定します
$smtp = "127.0.0.1"
# 差出人アドレスを指定します
$from = "admin@XXXXX.com"
# 宛先アドレスを指定します
$to = "yourmail@XXXX.com"
# 件名を指定します
$subject = "Login(xxxxserver)"

# メール送信のためのSmtpClientクラスをインスタンス化
$cli = New-Object Net.Mail.SmtpClient($smtp)

# メール送信のためのMailMessageクラスをインスタンス化
$mail = New-Object Net.Mail.MailMessage($from, $to)
$mail.Subject = $subject
$mail.Body = "Did you login?"
$mail.SubjectEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")
$mail.BodyEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")

# メールを送信します
$cli.Send($mail)

タスクスケジューラの[操作]で、以下のように設定する。

  • 操作:プログラムの開始
  • プログラム/スクリプト:powershell.exe
  • 引数の追加:-Command “コマンドファイルのフルパス”

4.WindowsUpdateの手動化

勝手にUpdateされると困るので、sconfigコマンドから、手動更新に変設して、サーバー再起動する。

5.自動ログオン

サービス化されていない古いアプリサーバーのために、起動時に自動ログインするように設定する。

https://docs.microsoft.com/ja-jp/troubleshoot/windows-server/user-profiles-and-logon/turn-on-automatic-logon

上記では、レジストリにパスワードを平文で保存することになるので、以下のAutoLogonツールを入れるほうがいい。

https://docs.microsoft.com/ja-jp/sysinternals/downloads/autologon

6.アプリケーションエラーの通知

タスクスケジューラで、[トリガー:イベント]で、以下の場合にメール通知するように設定。 メールの送信方法は3と同様。

  • ログ:Application
  • ソース:Application Error
  • イベント ID:1000

クラウド/VPS/レンタルサーバーの【コントロールパネル】セキュリティ対策(2020年11月)


クラウド、VPSのセキュリティ対策について、サーバー自体のセキュリティ対策をちゃんとしても、コントロールパネルが乗っ取られたら元も子もない。

そこで、知っている範囲での各社の状況 (2029年11月11日時点)についてのメモ。

IP制限2段階認証ログイン通知操作ログ
お名前.com××
ConoHa××
エックスサーバー×××
さくらインターネット×VPS:×
クラウド:〇
×
ニフクラ△※二要素認証×

1. お名前.com

会員情報の「ログインセキュリティ」から、2段階認証とログイン通知の設定が可能。

https://help.onamae.com/answer/20321

2.ConoHa

「アカウント設定」から「2段階認証」「ログイン通知メール」が可能。

https://support.conoha.jp/common/guide/account/?btn_id=c-2stepauthentication-sidebar_guide-account

3.エックスサーバー

二段階認証には対応している。

https://www.xserver.ne.jp/manual/man_order_twostepauth.php

4. さくらインターネット

VPSとクラウドともに操作ログが閲覧できる。

(VPS)

https://help.sakura.ad.jp/hc/ja/articles/206245282-%E6%93%8D%E4%BD%9C%E5%B1%A5%E6%AD%B4%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B

(クラウド)

https://manual.sakura.ad.jp/cloud/controlpanel/eventlog/eventlog.html

クラウドは2段階認証にも対応。

https://manual.sakura.ad.jp/cloud/controlpanel/settings/2-factor-auth.html

5. ニフクラ(旧名称:ニフティクラウド)

ログインのIPアドレス制限が、「アカウント管理」からアカウントを選択して、「IP許可設定追加」で可能。

https://pfs.nifcloud.com/help/acc/detail.htm

また、過去6カ月分のコントロールパネルの操作ログが参照できる。

https://pfs.nifcloud.com/help/log/

ログイン時の通知メールの機能はないが、多要素認証の設定が可能。

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