2020年12月

安っ!VPS

月額349円(税込)からの低価格。使った期間だけの従量課金方式。
国内の VPS でこの値段は破格だと思います。いや、使える VPS の中では世界一安いのでは?w

詳細はリンク先を見てもらうとして、この「月額349円(税込だぞ)」のスペックが「CPU 1vCPU SSD 20GB メモリ 1GB」です。
やはり安い。だって、HDD じゃなくて SSD だもん。だって、メモリ 512MB じゃなくて 1GB だもん。さらに、仮想化方式が OpenVZ じゃなくて KVM なんだよねぇ。びっくり。

但し、IPv6 は付きません。あと、任意の逆引き設定が出来ないです。
僕的には、この2点があるため、このサイト用のサーバには使えないのですが、もう一つ別に借りている CloudatCost の VPS の代わりには使えるかなと。CloudatCost の VPS はバカ安なのですが、3〜4ヶ月に1回ぐらいトラブって数日アクセスできなくなるので。w ←笑いごとじゃない 💢

…というわけで、KVM Instance 1 CPU 1 GB - CentOS 8.1 での初期設定を自分用にメモっておきます。


SSH鍵の選択

今使っている鍵を使いたかったので「SSH鍵の作成」ではなく「SSH鍵のインポート」を行いました。
「SSHキー」のエリアに「公開鍵」を貼り付けます。


SSH 接続

インスタンスの IP アドレスは、「インスタンス管理」→「インスタンス」で確認できます。

SSH のログインユーザ名は、
CentOSの場合:centos
Ubuntuの場合:ubuntu
です。

ココに書かれています。↓
インスタンスへのログイン方法

@local ~]$ ssh centos@xxx.xxx.xxx.xxx

んで、root になるには。

~]$ sudo su -

ssh の設定ファイル確認。

~]# vi /etc/ssh/sshd_config

以下のようになっているか確認。

SyslogFacility AUTHPRIV PermitRootLogin no PermitEmptyPasswords no PasswordAuthentication no

編集したら sshd 再起動。

~]# systemctl restart sshd

システムのタイムゾーンを設定する

~]# timedatectl set-timezone Asia/Tokyo

確認。

~]# timedatectl

システムの文字コードを設定する

~]# localectl set-locale LANG=ja_JP.utf8

確認。

~]# localectl

キーボードの割り当てを設定する

~]# localectl set-keymap jp106

確認。

~]# localectl

ホスト名変更

ホスト名を変更して(例:centos8.localdomain)再起動。

~]# hostnamectl set-hostname centos8.localdomain ~]# reboot

パスワード設定

root も SSH ログインユーザの centos もパスワードが設定されていません。

~]# getent shadow root root:!!:18274:0:99999:7::: ~]# getent shadow centos centos:!!:18432:0:99999:7:::

1カラム目がユーザ名で、2カラム目がパスワードです。
パスワードが設定されていない場合、パスワード欄が「!!」となります。

パスワードを設定します。
なお、パスワードの設定をしないと管理画面のコンソールからのログインが出来ません。

~]# passwd root

~]# passwd centos

また、パスワードを設定すれば、su - で root になれるようになります。

~]$ su -

su で root になれるユーザを制限する

wheel グループに所属しているユーザのみが「su」の実行を出来るようにする。
centos は、すでに wheel グループに所属している。

~]# id centos uid=1000(centos) gid=1000(centos) groups=1000(centos),4(adm),10(wheel),190(systemd-journal)

/etc/pam.d/su ファイルを編集する。

~]# vi /etc/pam.d/su

下記、コメントアウト(#)を解除。

#auth required pam_wheel.so use_uid

↓↓↓

auth required pam_wheel.so use_uid

ネットワーク関連を確認

~]# cat /etc/resolv.conf

~]# nmcli d DEVICE TYPE STATE CONNECTION eth0 ethernet 接続済み System eth0 lo loopback 管理無し --

~]# nmcli d show eth0

~]# ls -l /etc/sysconfig/network-scripts/ifcfg-* -rw-r--r--. 1 root root 315 Jan 13 21:52 /etc/sysconfig/network-scripts/ifcfg-ens3 -rw-r--r--. 1 root root 252 Jun 19 04:34 /etc/sysconfig/network-scripts/ifcfg-eth0

~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # Created by cloud-init on instance boot automatically, do not edit. #(インスタンスの起動時にcloud-initによって自動的に作成されます。編集しないでください。) BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 ・・・・・ ・・・・・

IPv6 を無効化

sysctl.conf に下記を追加。

~]# vi /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1

設定を反映。

~]# sysctl -p

/etc/hosts ファイルの「::1」行をコメントアウトする。

~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

NetworkManager を再起動する。

~]# systemctl restart NetworkManager

SELinux の無効化

SELinuxの無効化。

~]# setenforce 0

SELINUX=disabled にする。

~]# vi /etc/sysconfig/selinux

EPEL のリポジトリをインストール

~]# dnf -y install epel-release

EPEL 設定ファイルの「enabled=1」を「enabled=0」に変更。

~]# vi /etc/yum.repos.d/epel.repo

dnf アップデート他

~]# dnf -y update

dnf-automatic インストール。

~]# dnf -y install dnf-automatic

dnf-automatic 設定。「apply_updates」の no → yes にする。

~]# vi /etc/dnf/automatic.conf

dnf-automatic 自動起動設定+起動。

~]# systemctl enable --now dnf-automatic.timer

ベース,開発ツールパッケージ群インストール。

~]# dnf -y group install base "Development tools"

nkf コマンドインストール。

~]# dnf --enablerepo=powertools install nkf

現在使用中のカーネルバージョンを確認する。

~]# uname -r

インストール済みを確認する。

~]# dnf repoquery --installonly

カーネルがアップデートされていると思うので再起動する。

~]# reboot

firewalld インストール

firewalld がインストールされていません。

~]# systemctl status firewalld Unit firewalld.service could not be found.

インストール。

~]# dnf -y install firewalld

自動起動設定+起動。

~]# systemctl enable --now firewalld.service

確認。

~]# firewall-cmd --state running

アクティブゾーンを確認する。

~]# firewall-cmd --get-active-zones public interfaces: eth0

アクティブゾーンの恒久的なファイアウォール設定を確認。

~]# firewall-cmd --list-all --zone=public --permanent public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

スワップ領域の作成

Swap 領域が作成されていなかったので、作成します。

~]# free -m total used free shared buff/cache available Mem: 808 154 241 6 413 517 Swap: 0 0 0

swap ファイル領域を 1GB 確保(ブロックサイズ 1MB で 1024 個)。(swap 1GB の例)

~]# dd if=/dev/zero of=/swapfile bs=1M count=1024

パーミッションを変更。

~]# chmod 600 /swapfile

swap を作成。

~]# mkswap /swapfile

swap を有効化。

~]# swapon /swapfile

swap を確認。

~]# free -m total used free shared buff/cache available Mem: 808 138 55 6 615 543 Swap: 1023 0 1023

OS の再起動時も作成したスワップ(swap)領域が、自動的にマウントされるよう設定をする。

~]# sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab

Web 管理コンソールを利用する

端末で ssh 接続するたびに、

Activate the web console with: systemctl enable --now cockpit.socket

とか言われるので、

~]# systemctl enable --now cockpit.socket

してみました。

ログイン画面は、https://xxx.xxx.xxx.xxx:9090/ にアクセスします。
自己署名証明書の場合は、ブラウザに警告が表示されます。

Cockpit は僕的には使わないと思いますが、CPU, メモリの使用量のグラフはたまに見るかもです。

端末もあります。端末はコンソールとは違って、コピペできるので使おうと思えば普通に使えそうです。

あと、ちょっと気になるのがセキュリティです。ブラウザを使ってパスワードだけでログイン出来ちゃうのが怖かったので、firewalld で 9090 番ポートへは特定 IP からのアクセスのみ許可するようにしました。

まずは、設定されている Cockpit 接続許可を一旦削除して、全ての接続を拒否します。

~]# firewall-cmd --remove-service=cockpit --zone=public --permanent

設定反映。

~]# firewall-cmd --reload

特定 IP 接続許可のルールを追加。「xxx.xxx.xxx.xxx/xx」の箇所は接続元の「IP アドレス/サブネットマスク」です。1つのIPからのみを許可するならば、サブネットマスクは「32」となります。

~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="xxx.xxx.xxx.xxx/xx" port protocol="tcp" port="9090" accept"

設定反映。

~]# firewall-cmd --reload

設定確認。

~]# firewall-cmd --list-all ・・・・・ ・・・・・ rich rules: rule family="ipv4" source address="xxx.xxx.xxx.xxx/xx" port port="9090" protocol="tcp" accept

ちなみに、追加した設定を削除したい場合は、add を remove にします。(他の部分は全く同じ)

これで、「Activate the web console with: systemctl enable --now cockpit.socket」の表示は出なくなりました。
…が、今度は下記が出ます。ゴリ推し?

Web console: https://centos8.localdomain:9090/ or https://xxx.xxx.xxx.xxx:9090/

うん。いきなり root でログイン出来るし、端末も使えるから便利かぁ。Cockpit、使ってみようかな。w


- guitar site WAVE -