CentOS 8 インストール [06]

インストール [05] までの状態で、インストールした HDD を丸ごと

コピーしました。つまり、クローンを作って、今日からは、

そのクローンに対して構築していきます。つまり、保険ですね。

この先、どんな間違いをしても、インストール [05]  までは

保存されているということです。これからも、要所要所でクローンを

作成して、万一に備えます。

インストール [09]  のクローンを作って入れ替え、インストール [12]  の

クローンを作って入れ替え。まあ、「万一」なら、そこまでの保険を

かけなくてもいいのですが、私の場合、「万一」じゃなくて

「百一」とか、もっと低い確率で迷路に迷い込んで出られなく

なってしまうので、迷子になったとき、振り出しからではなく

少なくとも、何日か前の状態に戻るだけで済むというのは、

何とも心強いのです。

さて次は、ウェブサーバーの構築。このページを参考にします。

冒頭の「1. Apache用ユーザーの追加とパスワードの設定」の

ところで、Apache用ユーザーの追加することで得られる

セキュリティ上の利点の大きさと、次々とユーザーが増えることで

httpd の運用が、どの程度まで煩瑣なものになるのかが、

よくわからなかったので、あちこち読んでたら、一晩かかりました。

SSH や、FTP も危険だけど、ローカルだけで使用するなどの

制限をかけることができますが、ウェブサーバーは、外に繋がなければ

意味がありません。そのぶん、セキュリティについては、できることは

やっておくという基本的な考え方でいないとダメな気がしてきました。

というわけで、ひと晩悩んだけれど、Apache 専用のユーザーを

作成します。

# useradd -s /sbin/nologin dokolife_w
# passwd dokolife_w
ユーザー dokolife_w のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

作成したユーザーの確認です。

# cat /etc/passwd | grep dokolife_w
dokolife_w:x:1001:1001::/home/dokolife_w:/sbin/nologin
# id dokolife_w
uid=1001(dokolife_w) gid=1001(dokolife_w) groups=1001(dokolife_w)

3. Apache httpdパッケージのインストール
(参考にしたページの見出し;以下同じ)

httpd.x86_64:httpdウェブサーバー本体
httpd-devel.x86_64:httpd開発ツール、モジュールなど
httpd-manual.noarch:httpdのマニュアル
httpd-tools.x86_64:httpdに関連するツール群

以上の4つのパッケージをインストールします。

# dnf -y install httpd httpd-tools httpd-devel httpd-manual

↑↑↑ を実行。インストールを確認します。

# dnf list installed | grep httpd
centos-logos-httpd.noarch 80.5-2.el8 @AppStream
httpd.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-devel.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-filesystem.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-manual.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-tools.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream

# which httpd
/usr/sbin/httpd

3-3. httpd起動の確認

# systemctl start httpd

# systemctl status httpd
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor pres>
Active: active (running) since Sat 2019-12-07 20:02:40 JST; 44s ago
Docs: man:httpd.service(8)
Main PID: 3329 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 44.3M
CGroup: /system.slice/httpd.service
tq3329 /usr/sbin/httpd -DFOREGROUND
tq3330 /usr/sbin/httpd -DFOREGROUND
tq3331 /usr/sbin/httpd -DFOREGROUND
tq3332 /usr/sbin/httpd -DFOREGROUND
mq3333 /usr/sbin/httpd -DFOREGROUND

12月 07 20:02:40 localhost.localdomain systemd[1]: Starting The Apache HTTP Ser>
12月 07 20:02:40 localhost.localdomain httpd[3329]: AH00558: httpd: Could not r>
12月 07 20:02:40 localhost.localdomain httpd[3329]: Server configured, listenin>
12月 07 20:02:40 localhost.localdomain systemd[1]: Started The Apache HTTP Serv>
lines 1-19/19 (END)

3-4. httpd自動起動の設定

# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

確認
# systemctl is-enabled httpd
enabled

4. firewallの許可設定

80番ポートを開ける
# firewall-cmd –add-service=http –permanent
success

設定を反映
# firewall-cmd –reload
success

設定の確認
# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client ftp http
ports: 21000-21010/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

6-1. httpd.confの変更

httpd.conf をバックアップ
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.org

# vi httpd.conf

6-1-1. 動作ユーザー・グループの変更
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User dokolife_w
Group dokolife_w

 

6-1-2. サーバー管理者のメールアドレス変更

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin dokolife@nanjamonja.com

6-1-3. サーバーのホスト名変更

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
#
ServerName dokolife.net:80

 

6-3. 不要な設定ファイルの移動

# cd /etc/httpd/conf.d
# ls
README autoindex.conf manual.conf userdir.conf welcome.conf
# mv autoindex.conf autoindex.conf.org
# mv welcome.conf welcome.conf.org

6-4. 設定ファイル 変更点の反映

# systemctl restart httpd

確認
# systemctl status httpd
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
Active: active (running) since Sat 2019-12-07 21:10:20 JST; 15s ago
Docs: man:httpd.service(8)
Main PID: 3978 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 45.0M
CGroup: /system.slice/httpd.service
tq3978 /usr/sbin/httpd -DFOREGROUND
tq3981 /usr/sbin/httpd -DFOREGROUND
tq3982 /usr/sbin/httpd -DFOREGROUND
tq3983 /usr/sbin/httpd -DFOREGROUND
mq3984 /usr/sbin/httpd -DFOREGROUND

ここまでで、ウェブサーバーの構築は、一応完了で

http://192.168.1.19/

に接続すると、

index.html が表示されました。トップページを「Object Moved」に

するのは、何らかの対策で始めたことですが、今となっては、

何のためだったか、少々調べたところでわかりません。

まあ、私のクセなのだろうくらいに思ってください。

続いて、Apache HTTPサーバの基本的なセキュリティ設定を

して行きます。

ディレクトリ内容一覧表示機能を無効にする

httpd.confを編集します。

# Further relax access to the default document root:
<Directory “/var/www/html”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks ← Options Indexes FollowSymLinks

 

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

 

これをしておかないと、うっかり、index.html を置き忘れた

ディレクトリにアクセスされるとファイルの一覧が表示されて

しまいます。

HTTP TRACEメソッドへの対応

httpd.confを編集します。

一番下に

## HTTP TRACE off
TraceEnable off

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

クリックジャッキング攻撃への対応

# vi /etc/httpd/conf.modules.d/00-base.conf

で、00-base.conf を開いて、

LoadModule headers_module modules/mod_headers.so

↑↑↑ という行があることを確認します。

もし、コメントアウトされていたら外します。

httpd.confを編集します。

一番下に

# X-Frame-Options Setting
Header append X-FRAME-OPTIONS "DENY"

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

apacheのバージョン情報を取得できないようにする

httpd.confを編集します。

一番下に

ServerTokens ProductOnly
ServerSignature off

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

今夜は、このくらいですかね。PHPをインストールしたら、

PHP バージョン表示の無効化も必要ですね。

その次は、MariaDB 10のインストールという順番でしょうか。

CentOS 8 インストール [05]

昨夜までで、基本的な設定は完了したので、いよいよ、今夜からは

現サーバーと同じ働きができるように設定していくという段階に

入ります。

最初に、FTP ですね。インストール時のアドオンの選択で

Vsftpd は、インストールできてるはずですから、

# vi /etc/vsftpd/vsftpd.conf

# 12行目:NO になっているか確認 (匿名ログイン禁止)

anonymous_enable=NO
# 83,84行目:コメント解除 ( アスキーモードでの転送を許可 )

ascii_upload_enable=YES
ascii_download_enable=YES
# 101,102行目:コメント解除 ( chroot 有効 )

chroot_local_user=YES
chroot_list_enable=YES
# 104行目:コメント解除 ( chroot リストファイル指定 )

chroot_list_file=/etc/vsftpd/chroot_list
# 110行目:コメント解除 ( ディレクトリごと一括での転送有効 )

ls_recurse_enable=YES
# 115行目:変更 ( IPv4 のみをリスンする場合 )

# IPv4 と IPv6 の両方をリスンする場合は NO で OK

listen=YES
# 124行目:変更 ( もし不要なら IPv6 はリスンしない )

# IPv4 と IPv6 の両方をリスンする場合は YES

listen_ipv6=NO
# 最終行へ追記

# ルートディレクトリ指定 ( 未指定の場合はホームディレクトリがルートディレクトリとなる )

local_root=public_html
# ローカルタイムを使用する

use_localtime=YES
# seccomp filter をオフにする ( ログインに失敗する場合はオフにする )

seccomp_sandbox=NO

続いて、

# vi /etc/vsftpd/chroot_list
# chroot を適用しない (上層への cd を許可する) ユーザーを追加

dokolife

次に

# systemctl enable –now vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

Firewalld を有効にしている場合は、FTP サービスの許可が必要です。

# vi /etc/vsftpd/vsftpd.conf

# PASV ポートを固定 (必要に応じて任意の範囲)

pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21010

vsftpd.conf の最終行に PASV ポートを固定するための

追記を終えたら、

# systemctl restart vsftpd
# firewall-cmd –add-service=ftp –permanent
success
# firewall-cmd –add-port=21000-21010/tcp –permanent
success
# firewall-cmd –reload
success

以上で、FTP 接続できるようになったハズですよね?

ハイ!できました。(喜ばしいことではあるのですが)

なんだか、あっけなかったですね。

local_root=public_html の指定は、どこに行ったの?

という謎はありますが、何事もなく繋がるなら

それに越したことはありません。

CentOS 8 インストール [04]

さあ、今夜も元気に CentOS8機の構築です。

不要なサービスの無効化ですが、

smartd.service と mdmonitor.service の二つだけ、無効にしました。

auditd.service と abrt-vmcore.service については、判断できるだけの

知識が不足してるので、今回は、手をつけずにおきます。

# systemctl disable smartd.service
Removed /etc/systemd/system/multi-user.target.wants/smartd.service.
# systemctl disable mdmonitor.service
Removed /etc/systemd/system/multi-user.target.wants/mdmonitor.service.

今夜の作業が終わったら シャットダウンするので、ここでは、わざわざ

再起動はしません。

次は、重要項目のサーバーの時刻同期の設定。

# vi /etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.centos.pool.ntp.org iburst

↓ ↓ ↓

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
pool ntp.jst.mfeed.ad.jp iburst

/etc/chrony.conf を書き換えて、タイムサーバーを変更します。

# systemctl restart chronyd

↑↑↑ chronydサービスを再起動

設定した内容が正常に反映されたかどうかを確認します。

# chronyc tracking
Reference ID : D2ADA01B (ntp1.jst.mfeed.ad.jp)
Stratum : 3
Ref time (UTC) : Wed Dec 04 12:00:09 2019
System time : 0.000000652 seconds slow of NTP time
Last offset : +0.000134692 seconds
RMS offset : 0.000134692 seconds
Frequency : 18.812 ppm fast
Residual freq : +42.560 ppm
Skew : 1.274 ppm
Root delay : 0.077115275 seconds
Root dispersion : 0.042542141 seconds
Update interval : 1.9 seconds
Leap status : Normal

あれぇ?時間が違います。タイムゾーンを確認してみると

# timedatectl
Local time: 水 2019-12-04 07:03:11 EST
Universal time: 水 2019-12-04 12:03:11 UTC
RTC time: 水 2019-12-04 12:03:11
Time zone: America/New_York (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

タイムゾーンが、EST/米国東部標準時になってます。

# timedatectl set-timezone Asia/Tokyo

タイムゾーンを変更

# systemctl restart chronyd

chronydサービスを再起動

# chronyc tracking
Reference ID : D2ADA01B (ntp1.jst.mfeed.ad.jp)
Stratum : 3
Ref time (UTC) : Wed Dec 04 12:18:38 2019
System time : 0.000049007 seconds slow of NTP time
Last offset : -0.000173467 seconds
RMS offset : 0.001871769 seconds
Frequency : 17.631 ppm fast
Residual freq : -0.031 ppm
Skew : 3.122 ppm
Root delay : 0.073843412 seconds
Root dispersion : 0.042838268 seconds
Update interval : 64.6 seconds
Leap status : Normal

ありゃりゃ!そうか。chronyc tracking では、UTC/協定世界時しか

表示されませんね。タームゾーンが違ってることに気づけたのは

けがの功名でした。

# timedatectl
Local time: 水 2019-12-04 21:05:41 JST
Universal time: 水 2019-12-04 12:05:41 UTC
RTC time: 水 2019-12-04 12:05:42
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: active
RTC in local TZ: no

OKです。

昨夜同様、このページに従って設定してます。

次の SSHサービスのセキュリティ設定については、

CentOS 8 インストール [03] で、メイン機からしか SSH 接続

できないように設定したので、OKかと。ONU のポートも

開かないし。

一般ユーザーの作成とグループ wheel への追加も完了してます。

# vi /etc/pam.d/su

#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the “wheel” group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the “wheel” group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so

↓↓↓ をコメントアウトしました。
auth required pam_wheel.so use_uid

これで、wheelグループ以外のユーザーは、su コマンドを実行することが

できなくなりました。

どうせ、参考と言いながら、ほぼ、丸写しで設定しているので

見出しを引用しますね。


10. locateコマンドを利用できるようにする

mlocateパッケージをインストールします。

# dnf -y install mlocate
CentOS-8 – AppStream 1.8 kB/s | 4.3 kB 00:02
CentOS-8 – Base 1.4 kB/s | 3.9 kB 00:02
CentOS-8 – Extras 652 B/s | 1.5 kB 00:02
Package mlocate-0.26-20.el8.x86_64 is already installed.
依存関係が解決しました。
行うべきことはありません。
完了しました!

updatedbコマンドを実行します。

# updatedb

以上で完了です。

locateコマンドは、Ubuntu機内のパッケージを探した時、便利でした。


11. ロケールの設定

現在時点でのロケール確認します。

# localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp

日本語ロケールのみを表示します。

# localectl list-locales | grep -i jp
ja_JP.eucjp
ja_JP.utf8

日本語ロケールの設定と反映をします。

# localectl set-locale LANG=ja_JP.utf8
# localectl status
System Locale: LANG=ja_JP.utf8
VC Keymap: jp
X11 Layout: jp
# source /etc/locale.conf

ページに書いてあるまま実行していきましたが、localectl status の内容に

変更があったわけでもなく、正直、何をしたのか、わかっていません。

ま、いいか。文字化けしたら、ここを何とかしろってことなんでしょう。

12. タイムゾーンの設定

けがの功名で、設定済みでした。

13. パッケージのアップデート

# dnf check-update

で、更新されるパッケージの一覧を見ると

134行のリストが表示されました。チェックったって、チェックの

ための知識がありません。

# dnf update

アップデートします。

インストール 6 パッケージ
アップグレード 97 パッケージ

だそうです。

これでよろしいですか? [y/N]: y

なんでも、鍵がないから、鍵をインポートしたけど、これで

いいか?という問いに、y と答えたようです。

鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中

とのことで、200 ものトランザクションを実行して

検証してました。

今夜は、このあたりまででしょうかねぇ。

CentOS 8 インストール [03]

昨夜は、FTP サーバーに、接続することができず、「centos7 vsftpd 接続できない」に

大ハマリ の再来襲かと、ジタバタしても、どうにもならず、とりあえず、

先送りすることにして、selinuxを無効化したら、何と!SSH 接続できなく

なってしまいました。躊躇せず、4回目のクリーンインストール。

LAN アダプタのコネクションを有効化してみると…… IP アドレスが

変更になっているではありませんか。どうやら、selinuxの無効化のために

再起動する前に、女房が使ってたパソコンをシャットダウンさせたので

再起動前とは違うアドレスを割り当てられたので、「繋がらない、

繋がらない」となってしまったようです。おそまつさまでした。

早いとこ、IP アドレスの固定化をしなければなりませんね。

CentOS Linux 8のインストール後に設定する12の項目 というページを

参考にしながら、設定をしていきます。操作は主に root で接続した

TeraTerm を使います。おいおい!一般ユーザーで操作すべきだろう

という声があるのは存じてますが、何でもかんでも、sudo をつけるだけ

なので、操作ミスの防止にはならないと思うんですよね。

しかし、一般ユーザーの追加だけは、ここでしておきます。

# useradd dokolife
# passwd dokolife
ユーザー dokolife のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
# gpasswd -a dokolife wheel
ユーザ dokolife をグループ wheel に追加

次は、selinuxの無効化

# getenforce
Enforcing

で、selinux が有効になっていることが確認できたら、

# vi /etc/selinux/config

SELINUX=enforcing → SELINUX=disabled

に変更して保存し、再起動するだけで、selinux は無効になります。

次は、「bash-completion パッケージの導入」ですが、CentOS 8のインストール時に

アプリケーショングループとして「サーバー」を選択しているので、すでに

導入済みとのことなので、省略。

さて、お待ちかね?「ネットワークの設定」

enp3s0 というのは、コネクション名だったのね。デバイス名でもある。

# nmcli connection show

で、確認できます。さて、固定アドレスを何番にするかな。2019 年構築

開始と言うことで、192.168.1.19 にしてみるかな。都合が悪ければ、

いつでも変更できるし。ついでに、CentOS8機の仮称をジュークと命名。

# nmcli connection modify enp3s0 ipv4.method manual connection.autoconnect yes ipv4.addresses 192.168.1.19/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
# nmcli connection up enp3s0

TeraTerm が、アボートするので、192.168.1.19 で繋ぎ直して

次は、firewalldの基本的な設定

# firewall-cmd –get-default-zone
public

「public」ゾーンがデフォルトゾーンに設定されていることが確認できました。

# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

新しいゾーンを作成

# firewall-cmd –new-zone=manage –permanent
success

接続の許可を「manage」ゾーンに与えます。

# firewall-cmd –zone=manage –set-target=ACCEPT –permanent
success

続いてゾーンに接続を許可するサービスを追加(sshとftpの追加)

# firewall-cmd –zone=manage –add-service=ssh –permanent
success
# firewall-cmd –zone=manage –add-service=ftp –permanent
success

ssh とftp に対して接続できる、接続元IPアドレスを追加

# firewall-cmd –zone=manage –add-source=192.168.1.7/32 –permanent
success
# firewall-cmd –reload
success

192.168.1.7 は、設定に使ってるメイン機のアドレス(固定)
[メイン機の仮称は、ナナですね]

このアドレスって、複数設定できないのかなあ。ちょっと調べただけでは、

わからないので、宿題ですね。

publicゾーンからsshサービスの削除

# firewall-cmd –remove-service=ssh –zone=public –permanent
success
# firewall-cmd –reload
success

# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

表示された項目「services」から「ssh」が消えてます。

今夜は、ここまでですね。脳が、ほぼ、バフンウニ化してきてます。

ところで、メイン機は、ほぼ、常時稼働状態で使って来てたので

シャットダウンさせてる状態で、キーボードの Enter キーを押すと

電源が入ることを初めて知りました。Enter キーじゃなくても、

他のキーでも同様だと思われますが、それは、明日確かめることに

なります。

CentOS 8 インストール [02]

さてと、昨夜のうちに再インストールが完了してるので、

元気に、CentOS 8 の設定だ!

と、勇みながら、まず、IP アドレスは何かな?と

# ip -4 a

lo: の 127.0.0.1/0 だけ!enp3s0 が、ないっ!

昨夜と一緒じゃん。2年前、このドコライフがある鯖が、ぶっ飛んだ時の

悪夢が、まざまざとよみがえってきました。

# nmcli d
DEVICE TYPE STATE CONNECTION
enp3c0 ethernet disconnected —

赤字だ~(涙)そういえば、鯖がぶっ飛んだときも、どうやっても

オンボードの LAN アダプタ経由ではネットワークに接続できなかったのです。

あのときは、LVM 論理ボリュームマネージャの情報が亡霊のように

いつまでも消えなくて、検索に検索を重ねて、LVMに関する情報は、

ディスクドライブの先頭からベタに書いてあるという情報を得て、

先頭から 8750 bytes を乱数で埋めました。今回も

# dd if=/dev/random of=/dev/sda count=1024
0+1024 records in
157+1 records out
80549 bytes (81 kB, 79KiB) copied, 8.169667 s, 475 kB/s

そして、再々クリーンインストール。今度は、寝る前にスタート、

朝目が覚めたら完了してるのパターンではなくて、ちゃんと

インストールが終わるのを待ちました。所要時間 10分。

な~んだ、そのくらいの時間でできるなら、この先、いつでも

再インストールできるじゃん。

さっそく、

# ip -4 a

lo: の 127.0.0.1/0 だけ!enp3s0 が、ないっ!

さあ、4回目のクリーンインストール?いえいえ、ここは検索検索。

# nmcli connection up enp3c0

Connection successfuly ……

と、回答が!

# nmcli d
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected enp3s0
lo loopback unmanaged —

緑字ですよ。緑字!

# ip -4 a

で、IP アドレスを調べて、TeraTerm から、ssh接続すると

何の苦労もなく繋がりました。

とまあ、ネットワークに繋がったことは、うれしいのは

うれしいのですが、考えてみると、やっと、ふりだしに

立てただけです。ここから始まる千里の道を無事歩き出せるので

しょうか?

今回の目標は、ドコライフのミラーサイトを作ること。

それができたら、旧鯖は、バックアップとして

凍結し、ドコライフは、CentOS8 機に置いて、

NAS に、ドコライフを自動バックアップする仕組みを

構築する……というものですが、これは、千里どころか万里の

道のりですね。ひゃあ。

CentOS 8 インストール [01]

Ubuntu をインストールしたことで、ちょっと、その気になった

この機会を損失しないように、CentOS 8 のインストールに

とりかかりました。iso ファイルは、6GB 超えとのことなので

DVD には収まらず、USBメモリに焼きました。

最初、ISO to USB で、iso を焼いたのですが、なぜか、うまく

ブートできなかったので、Rufus で焼いたものを使いました。

英語が苦手な私でも、日本語を選んでインストールが始まって

しまえば、画面はすべて日本語表示なので、何とかなりそうな

雰囲気です。ここを参考にしながら、じっくりと進めました。

ソフトウェアの選択では、サーバーを選び、アドオンは、

Windows ファイルサーバー
FTP サーバー
開発ツール
セキュリティツール

の4つを選択しました。

NTPサーバーの追加は、できたと思うのですが、ネットワーク時刻 (N) が、どうしても

ON になりませんでした。IP アドレスは、192.168.1.100 に固定しましたが、昔、

このアドレスで、80 ポートの解放がウマクいかなかったような記憶があるので、

変更した方が無難でしょうね。

就寝前に、インストール開始ボタンを押しておいたので、朝にはインストールが

完了してました。

CentOS8では、デフォルトで OpenSSH がインストールされてるとのことだったので

さっそく、TeraTerm で接続しようとしたところ、「ホストに接続できません」

あれー?直接、# ip -4 a を打っても、lo: だけ。# nmcli device でも、

enp3c0 ethernet disconnected —

赤字だぞ~

USB LANアダプターに替えても同じ。LAN ケーブルを交換しても同じ。

思えば、NTP サーバーに繋がらなかった時点で、すでに問題発生してたかも。

よし!ここは、ジタバタしないで、あっさりと再インストールだ!

ソフトウェアの選択だけ前回と同じサーバーを選び、同じアドオンを

指定して、インストール開始。すでにインストール先に書き込まれものは、

当然、すべて削除。

今さら Ubuntu (δ)

シャットダウンして再起動しました。

SSH 接続で TeraTerm から、

$ sudo /usr/local/bin/DiCE/diced -d -l

で、DiCE(CUI版) を起動します。

root 権限で実行しないと

Exception EInOutError in module <unknown> at xxxxxxxx.
I/O エラー (13).

になります。

続いて、TeraTerm から

$ sudo /usr/local/bin/DiCE/dice

すると、

dice: cannot connect to X server

エラーが出るので、Ubuntu機の端末から、

$ sudo /usr/local/bin/DiCE/dice

で、DiCE(GUI版) を起動します。

このあと、端末を閉じようとすると

となります。実際、端末を閉じたら、DiCE(GUI版) は、強制終了となります。

なので、端末は開きっぱなしで使用します。

あとは、お好みのファイルをダウンロードサイトから入手するなり、

ネットサーフィン(今でも生きてる言葉?)を楽しむなり、

お好きなように。

文字化けも、自動起動も、WindowsからUbuntuにリモートデスクトップ接続も、

な~んにも解決しないで、そのまま?と、あきれる方もいらっしゃるでしょう。

でも、私は、DiCE が Ubuntu で動き、長時間かかるファイルのダウンロードも

電気代を気にすることなくできれば、それでいいのです。

で、DiCE(GUI版)をチェックして、次回予定日を過ぎたイベントがあれば、

メニューの「▯▯▯▯(E)」を開いて、「▯▯▯▯▯(R)」を実行すれば最新の情報に

更新されて、イベントが実行できたかどうかが確認できるので十分なのです。

もし、「それは、生き方としておかしい」だとか、「それで、Ubuntu を

インストールしてみましたぁ。なんて、よくも言えるな」だとか、

ご意見があれば、コメント欄にどうぞ。

※ その後、DiCE(GUI版) は、イベントが実行されると自動的に最新の
  情報に更新されることが確認できました。つまり、スケジュール通りに
  イベントが実行されているかどうかは、DiCE(GUI版) をながめている
  だけで事足りるということのようです。

最後に、大事なことがひとつ。Ubuntu機のバッテリーパックは、取り外して

AC アダプタに繋いだだけの状態で使っています。24時間稼働なので

リチウムイオン電池による火災発生リスクを避けるためです。

常用しているノートパソコンは、使ってないときも、AC アダプタに

繋ぎっぱなしですが、こちらは、メーカーのプログラムにより

60% 以上充電させないようになってるので、まあ、いいかな。

あとは、女房のノートパソコンのバッテリーパックも抜いておこう。

今さら Ubuntu (γ)

さてさて、考えていても先に進まないし、手をこまねいてばかりも

おられないので、検索しまくって、libX11.so.6 が、libx11-6のパッケージに

属していることを突きとめました。

$ sudo apt-get install libx11-6:i386

を実行。続いて

$ sudo apt-get install libxext6:i386

を実行。

$ cd /usr/local/bin

$ ldd ./DiCE/dice

linux-gate.so.1 (0xf7f5b000)
libqtintf.so => /usr/lib/libqtintf.so (0xf7dbe000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf7c74000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7c55000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7c50000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7a74000)
libqt.so.2 => /usr/lib/libqt.so.2 (0xf73dd000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf73b1000)
/lib/ld-linux.so.2 (0xf7f5c000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf739c000)
libSM.so.6 => not found
libICE.so.6 => not found
libjpeg.so.62 => not found
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xf7214000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7112000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf710e000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf7107000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf70e9000)
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf70ce000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf70c4000)

残りは、三個

$ sudo apt install libsm6:i386

$ ldd ./DiCE/dice

linux-gate.so.1 (0xf7fce000)
libqtintf.so => /usr/lib/libqtintf.so (0xf7e31000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf7ce7000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7cc8000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7cc3000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7ae7000)
libqt.so.2 => /usr/lib/libqt.so.2 (0xf7450000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf7424000)
/lib/ld-linux.so.2 (0xf7fcf000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf740f000)
libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xf7406000)
libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xf73ea000)
libjpeg.so.62 => not found
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xf7262000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7160000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf715c000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf7155000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf714c000)
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf7131000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7113000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7109000)

あと、ひとつ!

$ sudo apt-get install libjpeg62:i386

$ ldd ./DiCE/dice

linux-gate.so.1 (0xf7f35000)
libqtintf.so => /usr/lib/libqtintf.so (0xf7d98000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf7c4e000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7c2f000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7c2a000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7a4e000)
libqt.so.2 => /usr/lib/libqt.so.2 (0xf73b7000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf738b000)
/lib/ld-linux.so.2 (0xf7f36000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf7376000)
libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xf736d000)
libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xf7351000)
libjpeg.so.62 => /usr/lib/i386-linux-gnu/libjpeg.so.62 (0xf7329000)
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xf71a3000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf70a1000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf709d000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf7096000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf708d000)
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf7072000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7054000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf704a000)

ついに、完了!

次に、DiCE の設定です。

最初に、IP addressの取得の問題を解決。

:setup

IPアドレスの検出方法は、(2) 外部のスクリプトから検出

スクリプトのURL は、http://www.dyndns.org/cgi-bin/check_ip.cgi

として設定します。

次に、DiCE でIPアドレスを自動登録させたいダイナミックドメインサービスを

:add

で、イベントとして追加します。

:exit

で、一旦、終了して

$ sudo /usr/local/bin/DiCE/diced -d -l

で、「バックグラウンドで実行」「ログを作成する」の起動オプションを

つけて、DiCE (CUI版) を起動します。続けて

$ sudo /usr/local/bin/DiCE/dice

で、DiCE (GUI版) を起動します。

じゃーん!できました。今回も、再起動時の自動起動については先送りです。

※ 端末から $ sudo /usr/local/bin/DiCE/dice で、DiCE (GUI版) を起動すると

実行しっぱなしになって、端末を閉じたら DiCE (GUI版) は強制終了に

なりますねぇ。この問題の解決に取り組むためには、一度シャットダウンさせる

必要があるので、早くとも、明晩以降のことになります。

今さら Ubuntu (β)

さて、インターネット上のファイルをダウンロードするために、

外付けHDD(USB)を繋いだら、自動的に「ボリューム」に

マウントされるということは、確認済み。しかし、さすがに

NTFS を読むことはできません。

そういえば、exFAT も読めないことも確認済みでした。

今さら Ubuntu (3)の中でやり残したことがありました。

$ sudo apt install exfat-fuse exfat-utils

↑↑↑ を実行したら、NTFS も読み込めるようになってました。

ラッキー ♪

3個ほど、ダウンロードを開始したので、次は、

DiCE for Linux のインストールと設定です。

必要なファイルは、↓↓↓ から、すでにダウンロードしています。

http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html

diced000.tar.gz  — CUI版インストールイメージファイル
xdice000.tar.gz  — GUI版差分 (TL7以外では動作確認していませんのでその他の環境では動かないことがあります)

しかし、せっかくですから、もう一度、ダウンロードしてみます。

まず、

sudo chown ユーザー名. /usr/local/bin

で、ダウンロードするディレクトリの所有権を変更して

おかねばなりません。あとは、FireFOX で DiCE for Linux の

ページを開いて上の二つのファイルをダウンロードするだけです。

ダウンロードは、瞬時に完了するはずですから、

$ cd /usr/local/bin

$ sudo tar xzvf diced01914.tar.gz

$ sudo tar xzvf xdice017.tar.gz

で、展開できます。

DiCE は、32ビットアプリなので、64ビット機でも 32 ビットアプリを

動作させるためのパッケージをインストールします。

$ sudo apt-get install lib32stdc++6

ここまでで、DiCE for Linux の CUI版 のインストールは完了です。

Tera Term からだと文字化けしてしまうので、

Ubuntu機 の端末を開いて

端末メニュー -> 文字コードの設定 -> 日本語 (EUC-JP) を選択してから、

$ sudo /usr/local/bin/DiCE/diced
として、
:help
すれば、

起動オプションやコマンド一覧が表示されるので、

イベントを追加して、:start で開始できます。

しかし、GUI版 を動かすためには、必要なライブラリを

入手しなければなりません。

$ sudo chown ユーザー名. /usr/lib

で、所有権を変更しておいてから、ここから、/usr/lib に

libqtintf.so.gz と libqt.so.2.gz をダウンロードします。

Ubuntu機 のファイル (Nautilus) で /usr/lib を開き、

ダウンロードできた libqtintf.so.gz と libqt.so.2.gz を

それぞれ、右クリック  → ここに展開する

で、 libqtintf.so と libqt.so.2 が、 /usr/lib に解凍されます。

libqtintf.so.gz と libqt.so.2.gz はゴミ箱に移動しておきましょう。

ファイル (Nautilus)というファイルマネージャーは、

Windows のエクスプローラ感覚でファイルを操作でき、

エクスプローラでは、できないことも、あれこれできる

そうなので、Ubuntu機 をWindows 7 代わりに使うつもりの方は

マスターしておいて損はないと思われます。

解凍できたら、

$ sudo ldconfig

を実行してライブラリパスを更新しておきます。

さて、DiCE が必要とするライブラリは、 libqtintf.so と libqt.so.2 を

入手する以前は、

linux-gate.so.1 (0xf7fb5000)
libqtintf.so => not found
libX11.so.6 => not found
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f7e000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7f79000)
libc.so.6 => /lib32/libc.so.6 (0xf7da0000)
/lib/ld-linux.so.2 (0xf7fb6000)

でしたが、入手後は、

linux-gate.so.1 (0xf7f3d000)
libqtintf.so => /usr/lib/libqtintf.so (0xf7da1000)
libX11.so.6 => not found
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7d82000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7d7d000)
libc.so.6 => /lib32/libc.so.6 (0xf7ba4000)
libqt.so.2 => /usr/lib/libqt.so.2 (0xf750d000)
/lib/ld-linux.so.2 (0xf7f3e000)
libXext.so.6 => not found
libX11.so.6 => not found
libSM.so.6 => not found
libICE.so.6 => not found
libjpeg.so.62 => not found
libstdc++-libc6.1-1.so.2 => not found
libm.so.6 => /lib32/libm.so.6 (0xf7440000)

となりました。げげ。not found が増えてる!

ところで、DiCE が必要とするライブラリを調べるには

Tera Term のカレントディレクトリを /usr/local/bin にして

$ ldd ./DiCE/dice

で、OKです。

次は、「libstdc++6」を導入しなければならないようなのですが

よくわからないので、ここから、Windows 機で

libstdc++6_5.4.0-6ubuntu1~16.04.12_i386.deb

を USB メモリにダウンロード。

Ubuntu機に、その USB メモリを挿してファイル (Nautilus)で

ダウンロードフォルダにコピー

$ cd /home/ユーザー名/ダウンロード

で、カレントディレクトリを変更して

$ sudo apt install ./libstdc++6_5.4.0-6ubuntu1~16.04.12_i386.deb

としてみましたが、

パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
注意、’./libstdc++6_5.4.0-6ubuntu1~16.04.12_i386.deb’ の代わりに ‘libstdc++6:i386’ を選択します
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
libstdc++6:i386 : 依存: gcc-5-base:i386 (= 5.4.0-6ubuntu1~16.04.12) しかし、イ ンストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

というようなことになりました。

$ sudo ldconfig

を実行して

$ cd /usr/local/bin

$ sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib/libstdc++-libc6.1-1.so.2

$ sudo ldconfig

$ ldd ./DiCE/dice

その結果、とりあえず、

linux-gate.so.1 (0xf7fb7000)
libqtintf.so => /usr/lib/libqtintf.so (0xf7e1a000)
libX11.so.6 => not found
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7dfb000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7df6000)
libc.so.6 => /lib32/libc.so.6 (0xf7c1d000)
libqt.so.2 => /usr/lib/libqt.so.2 (0xf7586000)
/lib/ld-linux.so.2 (0xf7fb8000)
libXext.so.6 => not found
libX11.so.6 => not found
libSM.so.6 => not found
libICE.so.6 => not found
libjpeg.so.62 => not found
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xf73fe000)
libm.so.6 => /lib32/libm.so.6 (0xf7333000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7315000)

 

libstdc++-libc6.1-1.so.2 については、見つかったことになりました。

しかし、前回は、すんなりインストールできていたのに

libXext.so.6 => not found
libX11.so.6 => not found

と、なぜなっちゃったのかが、どうしてもわかりません。

しかも、libX11.so.6 => not found は、二つも!

果たして、「今さら Ubuntu (γ)」に続くことができるのか……

今さら Ubuntu (α)

今さら Ubuntu (1)~(9)により、曲がりなりにも

Ubuntu でやろうとしたことができるようになったので

そのまま、しばらくは使ってみようと思っていました。

ところが、あろうことに、cr447.xyz というマルウェアに

感染してしまったので、Windows なら除去できると

思いますが、Ubuntu では自信がないので、いっそのこと

クリーンインストールすることにしました。

そうすれば、cr447.xyz だけじゃなく、迷い込んで

不要な物をインストールしたり余分な設定をしたりしたことも

クリアできますからね。

インストールディスクは作成済みですから、手っ取り早いの

ですが、インストールの所要時間は30分を超えたと思います。

前回はスルーした Livepatch を今回はセットアップすることに

しました。

英語が苦手なため、シングルサインオンアカウントの登録に

少しばかり手間取りました。

sshで接続・ログインできるようにすることが最優先なので

まずは、パッケージ管理の一つである「aptitude」をインストールします。

$ sudo apt-get install aptitude

次は、ssh のパッケージをインストール。

$ sudo aptitude install ssh

設定ファイルを開きます。

$ sudo vi /etc/ssh/sshd_config

設定ファイルの何行目かに

#PermitRootLogin prohibit-password

という行があるので、その行の上に

PermitRootLogin no

という行を付け加えて、設定ファイルを閉じます。

これで、Windows 機から Tera Term を使って

Ubuntu ノートパソコンを操作できるようになりました。

次に、アクティビティ画面を開き、privacy またはプライバシーと

入力し、 プライバシーをクリックして設定パネルを開きました。

自動画面ロックをオフにして、電源管理でブランクスクリーンを

「しない」に設定しました。常に有線で使うので Wi-Fi も

オフにしました。

以上で、「今さら Ubuntu (1)~(3)」の部分が完了しました。