「Linux」タグアーカイブ

外部のSMTPサーバを使ってメールをコマンドで発行するには

SMTPサーバの設定をやってからメールを配信する仕組みを作る手法については、何どもやっているのですが、意外とSMTPサーバの構築は必要なくてメール配信だけコマンドラインでやりたいってのが無かったので、ここにメモしておきます。

Rocky Linux 8/CentOS 8の環境下で行います。

色々なサイトを見ていると、「mailコマンドが標準で使えるよ/インストールされている」とか「sendmailが入ってるから・・・」とか、どれならコマンド叩いたら・・・と思ってmailコマンド叩くと無いって怒られるw

最近はセキュリティ絡みで、外部と連携する機能は標準でインストールされない様になっているんですかね?

ということで、必要なパッケージをインストールします。

dnf install mailx sendmail

これで準備は完了です。
mailxだけ入れて、mailコマンド叩くと、sendmailが無いって怒られるんですよw
だから入れました。

ということで、コマンド叩いてみます。

mail -s Test -S smtp=smtp://<SMTPサーバのドメイン>:<ポート番号> -S smtp-auth=login -S smtp-auth-user=xxxx -S smtp-auth-password=xxxxxx -r fromAddress@hogehoge.net toAddress@hogehoge.net

設定はそれぞれの環境で異なりますが、概ねこんな感じです。
あとは、自分にテストメール送ってみて、届いていたら完成です。

Rocky Linuxへの移行

本記事は2021年9月1日現在の移行手順を記しています。
必ずしも最新の情報では無いことをご留意ください。
また、CentOSやRocky Linuxがそうであるように、OSSは自己責任です。
本記事の内容に不備があったとしても、何らの責任も保障もありません。
必ずバックアップを行ってから作業を行うことを強くお勧めします。

さて、2020年12月にCentOS 8の保守期間を2021年末で打ち切るという暴挙発言があってから、移行先に苦慮しておりました。
いくつかの選択肢があることはここで示しませんが、その一つとしてRocky Linuxを使用することとしました。

既にRocky Linuxへの移行手順については、いくつものサイトで記載されていますが、個人的なコメントも付け加えながら記録しようと思います。

まず、準備した環境はVMware上で動作する仮想マシンです。
CentOS 8 がインストールされています。
比較的単純な構成となっており、複雑な環境でどうなるかはこれからいくつかの環境を移行する中で生じる課題として、今後、気が向いた時にでも追記していこうかと思います。

では、移行手順を記します。

確認

まず、本家サイトを確認します。

https://rockylinux.org/

https://rockylinux.org/ja/

ドキュメントを確認し、Convert CentOS (and Others) to Rocky Linuxの内容を確認してみます。

ざっくりと最初の方で記載されていることは、ハードウェアとかVPSなどの実装環境とそこで動作しているCentOSやAlma linux,RHEL,OracleLinuxのバージョンが8.4に対応していることが求められています。

あと、root権限が必要になりそうですね。sudoでも可能なようです。

更に読み進むと、migrate2rockyをダウンロードして使用することが記載されています。
migrate2rockyは、下記のコマンドでダウンロードできます。
(後でこちらも記載します。)

# wget https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh

この後の記載では、ブラウザでダウンロードする方法が記載されているのですが、まあコマンドラインで良いでしょう。どの道、コマンドラインで全て操作するのですから。。。

コマンド実行すれば出来上がりっぽい?
ということで、作業開始します。

手順

OSを最新状態にする。

まず、OSを最新の状態にアップデートします。

# dnf update

アップデートを行った後に、再起動を行うことをお勧めします。
※私の環境ではMySQL/MariadDBの設定を少し弄っていたために、MySQL/MariadDBが起動出来無くなっていました。こちらを参考に修正を行い復旧しました。

移行ツールのダウンロード

インターネットに接続されてる環境であれば、先に示したmigrate2rockyを直接ダウンロードすれば良いです。

# wget https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh

本家では、/home/へアップロードする様に記載されていますが、他のサイトではどこでも良さそうですね。
説明が面倒なので、/home/で作業を進めます。

その他にもGitを使う方法やwgetを使う方法なども記載されています。
今回は、面倒な事をする気はないので、上記の方法で進めます。

インストール

これで準備は完了したようなので、インストール作業を進めます。

まず、移行ツールに実行権限を与えます。

chmod +x migrate2rocky.sh

そして実行しますが。。。。長い。。。

./migrate2rocky.sh -r
  yelp-libs-2:3.28.1-3.el8.x86_64                                               
  yelp-tools-3.28.0-3.el8.noarch                                                
  yelp-xsl-3.28.0-2.el8.noarch                                                  
  yum-4.4.2-11.el8.noarch                                                       
  yum-utils-4.0.18-4.el8.noarch                                                 
  zenity-3.28.1-1.el8.x86_64                                                    
  zip-3.0-23.el8.x86_64                                                         
  zlib-1.2.11-17.el8.x86_64                                                     

Complete!
Subscription Manager found on system.

If you're converting from a subscription-managed distribution such as RHEL then
you may no longer need subscription-manager or dnf-plugin-subscription-manager.
While it won't hurt anything to have it on your system you may be able to safely
remove it with:

"dnf remove subscription-manager dnf-plugin-subscription-manager".

Take care that it doesn't remove something that you want to keep.

The subscription-manager dnf plugin may be enabled for the benefit of
Subscription Management. If no longer desired, you can use
"subscription-manager config --rhsm.auto_enable_yum_plugins=0" to block this
behavior.

Done, please reboot your system.
A log of this installation can be found at /var/log/migrate2rocky.log



[root@localhost home]# 

こんな感じで成功したようです。

最後にリブートするように指示されています。
その前に、、、、ちょっとだけ確認してみます。

# more /etc/rocky-release
Rocky Linux release 8.4 (Green Obsidian)

当然ですが、既に、/etc/centos-releaseは存在せず、rocky-releaseに置き換わっていますね。
ということで、リブートします。

# reboot

これで終わりです。

最後に

今回移行を行った環境は比較的シンプルな構成でした。
ダウンロードされたモジュールの総容量は約1.3GB程度と予想されます。
実際に掛かった時間は計測していませんが、体感で1時間程度ではないでしょうか?

アップデートと更新に係る時間がほとんどでしたら、既に最新の状態にされていた環境であれば30分程度で移行が完了するのではないかと思います。

作業自体は、非常にシンプルです。

作業後に少しだけ触ってみましたが、変わった印象も違和感もありませんでした。

samba設定方法

久しぶりの投稿です。
少し解り難い設定項目があったりしていたので、自分なりのメモ程度になろうかと思いますが、sambaの設定について説明します。

環境

もう少しで使われなくなるであろうCentOS 8を対象としていますが、後継のOSでも基本的に同じだと思っています。

CentOS 8.3.2011

メモリとかストレージのサイズとかあまり気にしていません。

インストール

sambaのインストールは至って簡単です。

# dnf install samba

CentOS 6やCentOS 7の初期ではsamba-swatを使えましたが、現在は廃止されていて使うことが出来ません。
GUIでの設定方法は別の方法があるらしいのですが、あまり推奨しない方が良さそうなので、CUIで全て設定します。

この後の流れ

取り敢えず、インターネットなどに公開されておらず、クローズドな環境下で実装検証を行います。
インストールや設定の最中には、セキュリティ機能が邪魔をして何が原因か解らなくなることがありますよね。
今回は、そんな面倒なことを無視して、取り敢えずインストールして機能の確認が出来た後に、セキュリティ機能を復活させてセキュアな環境に戻してあげることとします。

今後の流れを以下に記します。
1)セキュリティ関連機能の停止
2)sambaの設定
3)動作確認
4)セキュリティ機能の復旧
この流れで作業を進めます。

1)セキュリティ関連機能の停止

sambaで実現することは、サーバ内部の一部ストレージを共有フォルダーとして使えるようにすることです。
つまりネットワーク関係のアクセスを変更しますので、firewallが影響します。
また、ファイルの書き込み時には、SELinuxも影響する可能性があります。
それでは、これらの機能を一時的に停止します。

まず、firewalldを停止させます。

# systemctl stop firewalld

これでネットワークのセキュリティが解除されます。
強引ですが、設定だけだとこれが一番楽なんですよね(^^ゞ

次に、SELinuxも一時的に停止します。

# setenforce 0

これで準備はOKです。
これらの設定は、OSを再起動すると復活します。
また、この設定をすることで、セキュリティが低下していますので、必ずセキュアなネットワーク空間で作業を行うことをお勧めします。

2)sambaの設定

sambaの設定は、以下の流れになります。

  • /etc/samba/smb.confの編集
  • デーモンの登録(サービスの登録)

ここで、今回は非常に簡単な設定を行います。
ネットワーク上の端末から誰でもID/パスワードなしでアクセス可能な共有NASの様な状態です。

それでは見て行きましょう。

# cp /etc/samba/smb.conf /etc/samba/smb.conf_org
# vi /etc/samba/smb.conf

最初に設定ファイルをバックアップしています。
特に必要なければ除外してください。
次にviで開きます。
smb.confの先頭あたりにある[global]セクションを最初に編集します。
下記にサンプルを記します。

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        unix charset = UTF-8
        security = user
        map to guest = Bad User

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

        log level = 2
        log file = /var/log/samba/log.%m
        max log size = 1024

今回追加した項目は、以下の項目です。

        unix charset = UTF-8
        security = user
        map to guest = Bad User
        ・
        ・
        ・
        log level = 2
        log file = /var/log/samba/log.%m
        max log size = 1024

unix charset = UTF-8
 unix(Linux含む)で使用するエンコードを指定しています。
 デフォルトで設定されているので、特に設定する必要は無い様です。
 設定内容は以下のコマンドで確認することが可能です。
 実際に指定していないデフォルト設定の内容も全て表示されるので、多くの内容が記されています。
testparm -v
testparmコマンドは、編集内容のチェックを行ってくれる機能でもあります。

security = user
map to guest = Bad User

security = user と map to guest = Bad Userの組み合わせで、ログイン認証が不要になります。

log level = 2
log file = /var/log/samba/%m.log
max log size = 1024

 ログ出力の設定になります。

次に、[Share]セクションを追加します。

[Share]
        comment = Sample Share
        path = /Share/Disk1
        writable = yes
        guest ok = yes
        guest only = yes

path
 共有フォルダーとして使用する領域を指定しています。
 対象はシンボリックリンクでも大丈夫でした。
 対象ディレクトリを/Share/Disk1としていますが、後でも先でも良いので作成します。
 パミッションは777にしておく必要があります。

writable
 書き込み許可

その他は適当に。。。

こんな感じで設定したら、デーモンを立ち上げる前に、記述内容のチェックをします。

# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

この後、Enterを入力すると設定内容が表示されます。
この上記に記した内容が表示されていればOKですが、間違っているとその内容が表示されます。

3)動作確認

ここまででsambaの設定は完了しています。
デーモンを起動します。

# systemctl start smb.service

OS起動時に自動起動設定する場合は以下のコマンドを入力します。

# systemctl enable smb.service

同一ネットワークに接続されているWindows PCなどからアクセスします。

Windowsの場合は、Exploreを開いて、アドレス入力欄に以下を入力します。

\\IPアドレス <==最初の\\は¥を2つです。

無事に接続出来たら、ファイルを追加したり削除して動作を確認してください。

4)セキュリティ機能の復旧

ファイアウォールを復旧します。

# systemctl start firewalld

次に、ポートを開放します。

# firewall-cmd --permanent --add-port=445/tcp

ファイアウォールを再読み込みして、設定を反映します。

# firewall-cmd --reload

この後、SELinuxの設定を行うのですが、一旦ここまでとします。
SELinuxの設定が面倒な場合には、Disableに設定しましょう。
設定方法は一旦割愛します。

以下で対象ディレクトリ以下に対し、SELinuxが有効でもSambaでアクセス出来る設定を行います。

# semanage fcontext -a -t samba_share_t "/Share/Disk1(/.*)?"
# restorecon -R -v /Share/Disk1

と書いたのですが、ダメでした。
auditログから対処します。

# audit2allow -a -l -m mylocal

module mylocal 1.0;

require {
        type httpd_sys_content_t;
        type smbd_t;
        class dir { add_name read write };
        class file { create getattr lock open read setattr write };
}

#============= smbd_t ==============

#!!!! This avc can be allowed using one of the these booleans:
#     samba_export_all_ro, samba_export_all_rw
allow smbd_t httpd_sys_content_t:dir { add_name read write };

#!!!! This avc can be allowed using one of the these booleans:
#     samba_export_all_ro, samba_export_all_rw
allow smbd_t httpd_sys_content_t:file { create getattr lock open read setattr write };
# setsebool -P samba_export_all_ro on
# setsebool -P samba_export_all_rw on
# setenforce 1
#

※赤斜体文字がコマンドになります(#はコマンドプロンプト)

詳細は端折りますが、setseboolで上記2つの設定を行えば動くということですね(^^ゞ

これで動作確認を行って、きちんと見えました。書き込めました。

Apache(Webサーバ)のチューニングとベンチマーク

ここでは、Apache HTTP Serverのチューニングとベンチマークに関してまとめます。

Apacheのベンチマーク

Apacheの性能はサーバの性能にも左右されますが、Apacheの設定内容によっても変わってきます。
最近のサーバはそこそこ速くなっているので、デフォルト設定のままでもそこそこ速く動いてくれるのですが、それでもアクセス集中対策を考慮するにはサーバのApacheのチューニングも必要になります。

さて、チューニングの方法は説明する前に、性能測定の方法について説明します。

Apacheの性能測定には、ab(Apache Bench)コマンドを使用します。

色々なサイトでも紹介されていますが、基本的なコマンド操作は以下の様になります。

# ab -n 100 -c 20 http://hogehoge.net/

-n 数値  : リクエストの総数
-c 数値  : 同時接続数

指定したURLに対し「リクエストの総数」分のリクエストを行います。並列して接続するため、「同時接続数」を指定することが出来ます。

試しにabコマンドを叩いてみます。(URLは適当です。)
※絶対に他人のサイトを指定しないでください。DoS攻撃とみなされる可能性があります。負荷試験の一種なので、対象のサーバに高負荷を与えることになります。

# ab -n 600 -c 200 http://hogehoge.net/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking hogehoge.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Finished 600 requests


Server Software:        Apache/2.2.15
Server Hostname:        hogehoge.net
Server Port:            80

Document Path:          /
Document Length:        307 bytes

Concurrency Level:      200
Time taken for tests:   4.465 seconds
Complete requests:      600
Failed requests:        0
Write errors:           0
Non-2xx responses:      600
Total transferred:      305400 bytes
HTML transferred:       184200 bytes
Requests per second:    134.39 [#/sec] (mean)
Time per request:       1488.242 [ms] (mean)
Time per request:       7.441 [ms] (mean, across all concurrent requests)
Transfer rate:          66.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1   11  13.9      1      35
Processing:    58  916 895.7    692    4364
Waiting:       58  916 895.7    692    4364
Total:         75  927 900.7    695    4396

Percentage of the requests served within a certain time (ms)
  50%    695
  66%    752
  75%    777
  80%    819
  90%   1609
  95%   4161
  98%   4193
  99%   4357
 100%   4396 (longest request)

ここで注目したいのは、以下の2点です。
Failed requests: 0
Requests per second: 134.39 [#/sec] (mean)

「Failed requests」でリクエストがフェールになった回数をカウントしています。Failが発生しない様に調整する必要があります。

では、調整の仕方を見ていきましょう。

Apacheのチューニング

Apache 2.2系と2.4系ではチューニングの設定が少し異なります。パラメタの名称が一部変更になっているためです。
以下にそれぞれのパラメタ設定例を示します。
ただし、この設定内容は環境により異なりますので、ご自身のサーバ環境によって値を調整してみてください。

Apache2.2系のチューニングパラメタ

Apache 2.2系のチューニング方法を以下に紹介します。今更感はあるのですが、最も効果的な結果が得られたのがこの環境だったので敢えて事例紹介します。

対象ファイル:/etc/httpd/conf.d/httpd.conf

viなどで開いて編集してください。

こちらがデフォルト状態の設定状態です。

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    5
ServerLimit       10
MaxClients        10
MaxRequestsPerChild  4000
</IfModule>

こちらが設定変更後の値です。

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       10
MinSpareServers    20
MaxSpareServers    50
ServerLimit       50
MaxClients        50
MaxRequestsPerChild  1000
</IfModule>
StartServers1起動時に生成される子サーバの数
MinSpareServers1アイドル状態で待機している
子サーバの最小数
MaxSpareServers5アイドル状態で待機している
子サーバの最大数
ServerLimit10MaxClientsに指定できる上限値
MaxClients10同時接続可能なクライアントの数
MaxRequestsPerChild4000子サーバが処理できる
リクエストの総数

デフォルトの状態では、StartServersが「1」になっていたので、最初の接続に掛かる時間が遅くなる傾向にありそうです。
また、MaxClientsが「10」しかないため同時に処理できるリクエストの数が少なく、こちらも処理が遅くなる傾向にあったようです。
変更後の値に設定し、以下のコマンドでWebサーバを再起動します。


【CentOS 6の場合】
# service httpd graceful
もしくは
# service httpd restart

【CentOS 7の場合】
# systemctl restart httpd

Webサーバの再起動が完了したら、コマンドを実行して動作を確認してみましょう。

# ab -n 600  -c 200 http://hogehoge.net/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking tech.godpress.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Finished 600 requests


Server Software:        Apache/2.2.15
Server Hostname:       hogehoge.net
Server Port:            80

Document Path:          /
Document Length:        317 bytes

Concurrency Level:      200
Time taken for tests:   0.998 seconds
Complete requests:      600
Failed requests:        0
Write errors:           0
Non-2xx responses:      614
Total transferred:      333402 bytes
HTML transferred:       194638 bytes
Requests per second:    601.08 [#/sec] (mean)
Time per request:       332.736 [ms] (mean)
Time per request:       1.664 [ms] (mean, across all concurrent requests)
Transfer rate:          326.17 [Kbytes/sec] received

主要な内容については以下の通りです。

Failed requests: 0
Requests per second: 601.08 [#/sec]

「Requests per second」の値が134.39→601.08に変化しており、1秒間に処理で来ているリクエストの数が大幅にアップ(約4.5倍)しました。

と、ここで問題です。
MaxClientsを適当にしていしましたが、子サーバ(プロセス)が使用するメモリを考慮して計算しないと、実装メモリよりも多くの子サーバが起動してしまうことになってしまいます。
そうなると、スワップ領域まで達し、最終的にもメモリ不足に陥ることになります。
まず、httpdプロセスがどれ位のメモリを使用しているか?そして、PHPを使用しているならば、PHPの利用するメモリも考慮する必要があります。
実際にサーバ上で動作する際に必要となるメモリ量も気に掛かります。

面倒ですよね。
色々な方が作られている様ですが、MaxClientsを自動計算してくれる仕組みがあります。
その方法について、次に説明を行います。

MaxClientsの自動計算

MaxClientsを自動計算する方法について記載します。
Apache Web Service(Webサーバ)は、並列処理を実現するために複数子サーバを起動して、同時に複数のクライアントから要求されるリクエストに対応します。
その最大値をMaxClientsで指定します。

理論的には、httpd(子サーバ)が利用するメモリとPHPが利用するメモリで1つのクライアントから要求される処理を行うとして、システムのメモリを割ることで値が得られる感じです。
この時、システムでそれ以外に使用するメモリも考慮する必要があり、意外と面倒な計算と情報収集を行うこととなります。

それを自動化してくれる仕組みが以下のサイトにあるスクリプトになります。

https://github.com/richardforth/apache2buddy

apache2buddyを利用してMaxClientsを計算させるには、以下のコマンドを実行し、表示される情報を利用します。

コマンドは以下に記していますが、上記のURLで示されたサイトに記載がありますので(英文ですが)、そちらを参考にされることをお勧めします。(本記事が古くなると使えなくなりますが、上記サイトはメンテナンスされていますので)

# curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl
<<あまり見られたくない情報があるので、割愛します。>>
pache2buddy.pl report for server:  (xx.xx.xx.xx):

Settings considered for this report:
[ !! ] *** LOW UPTIME ***.
[ @@ ] The following recommendations may be misleading - apache has been restarted within the last 24 hours.

        Your server's physical RAM:            1024 MB
        Remaining Memory after other services considered: 1016 MB
        Apache's MaxClients directive:  15  <--------- Current Setting
        Apache MPM Model:        prefork
        Largest Apache process (by memory):27 MB
[ !! ]  Your MaxClients setting is too low.
        Your recommended MaxClients setting (based on available memory) is between 33 and 37. <------- Acceptable Range (10% of MAX)
        Max potential memory usage:407 MB
        Percentage of TOTAL RAM allocated to Apache:39.82  %
        Percentage of REMAINING RAM allocated to Apache:40.12  %
--------------------------------------------------------------------------------
A log file entry has been made in: /var/log/apache2buddy.log for future reference.

重要な箇所は以下の一文です。

Your recommended MaxClients setting (based on available memory) is between 33 and 37. <——- Acceptable Range (10% of MAX)

httpdを再起動した直後などは正確な数値が得られない場合がありますので、本来は24時間程度運用した状態で数値を計算することが望ましいです。

上記の例では、MaxClientsの値として33~37が望ましい値として提示されています。

正直、実験を行ったサーバでは、長時間のヒートランを行っていなかったのでこの値が示されましたが、本来であればもっと少ない値が得られるのではないかと思います。

これを元に、先程示したhttpd.confに記載されている以下の値を調整します。

StartServers
MinSpareServers
MaxSpareServers
ServerLimit
MaxClients
MaxRequestsPerChild

最後に、Webサーバの再起動を行えば設定が反映され安定した動作になると思います。こまめにチェックするというよりも、ある程度時間を空けてチェックすると良いと思います。

apache2buddy以外にも自動計算や手動計算の手法が幾つか紹介されています。
自分に合った方法を見つけることが重要です。
今回の手法は、Linux上での手法となります。Windows上での計算は難しいかな?

CentOS 7 へMariaDB 10.1(最新)をインストール

CentOS 7 + MariaDB 最新版をインストール

2018年3月時点における環境は以下の通り。

CentOS 7.4
MariaDB 5.5

この状況ですと、MariaDBの最新版がインストールされていない状態になっています。
MariaDBには、「Galera Cluster」が提供されておりますが、10.1以降ではデフォルトで組み込まれる様になりました。
つまり、10.0までのバージョンでは個別インストールが必要となります。

また、MariaDBとMySQLのバージョン関係を見てみましょう。


MariaDBバージョン MySQQLバージョン
MariaDB5.5.x MysQl5.5
別途Galera Clusterをインストール。
MariaDB10.0.x Mysql5.6
別途Galera Clusterをインストール。
MariaDB10.1.x Mysql5.7を取り入れ、MariaDB独自機能あり。
Galera Clusterは組み込み済み。

正直、現時点でMySQL 5.5はちょっと古い。5.6もしくは5.7をインストールしたい。
デフォルトのCentOS 7ではMariaDB5.5に対応しており、MariaDB10.xをインストールするには別途独自のインストール設定を行わなければならない。

ジレンマはあるが、後々のことを考えると選択肢は新しいバージョンを適用したい。

MariaDB 10.1.xをインストールする!

旧パッケージの削除

まず、既にインストールされているMariaDB関連のパッケージを確認→削除する。

# yum list installed  | grep -i mariadb
mariadb-libs.x86_64              1:5.5.56-2.el7                      @base

確認すると、mariadb-libsがデフォルトでインストールされているので、これを削除する。

# yum remove mariadb-libs

リポジトリの準備

MariaDBの本家からインストールを行えるようにリポジトリを追加する。

以下のサイトでも紹介されています。

https://mariadb.com/kb/ja/yum/

まずリポジトリの定義を行います。
/etc/yum.repos.d/にMariaDB.repoを作成します。
内容は以下の通りです。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

MariaDBをインストール

これでMariaDBをyumでインストールできる。

# yum install MariaDB-server MariaDB-client

確認してみます。

# yum list installed | grep -i mariadb
MariaDB-client.x86_64            10.1.31-1.el7.centos                @mariadb
MariaDB-common.x86_64            10.1.31-1.el7.centos                @mariadb
MariaDB-server.x86_64            10.1.31-1.el7.centos                @mariadb
galera.x86_64                    25.3.22-1.rhel7.el7.centos          @mariadb

これでインストール自体は完了です。

MariaDBの初期設定

MariaDBの初期設定を行います。
インストール直後の設定はほとんど何もされていない状態にあるようです。
そこで、インストール設定を行います。
まず、デフォルトの設定ファイルをバックアップしておきます。
#本家では推奨されているわけではないのですが、気持ち的にオリジナルを無くしてしまうのは気持ち悪いw

# cd /etc/my.cnf.d/
# cp -p server.cnf server.cnf_org

バックアップ出来たので、初期設定を行います。

# cp -p /usr/share/mysql/my-small.cnf /etc/my.cnf.d/server.cnf
cp: `/etc/my.cnf.d/server.cnf' を上書きしますか? y

文字コードの設定が行われていない状態なので、設定をします。
以下の項目を追記します。

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

取りあえず、大まかな設定は済みました。
この後は、MariaDBを起動しMariaDBのセキュア設定を行う。

MariaDBの起動

MariaDBを起動する。

# systemctl start mariadb.service

注意!!

2018-06-15時点において、上記の設定方法ではMariaDBが正常に起動できません!
2019-03-31時点において、問題は無くなっていました。
以下、不要となった部分に取り消し線を入れておきます。

多分、MariaDBのインストーラーがバグっている様に思えます。

# systemctl start mariadb
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

こんな感じのエラーが表示されます。更に要求されたコマンドを実行してみます。

# systemctl status mariadb
● mariadb.service - MariaDB 10.1.33 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: failed (Result: exit-code) since 木 2018-06-14 19:58:09 JST; 22s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 7780 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
  Process: 7729 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 7727 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 7780 (code=exited, status=1/FAILURE)

 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1600607
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] Plugin 'FEEDBACK' is disabled.
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863013713664 [Note] InnoDB: Dumping buffer pool(s) not yet started
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
 6月 14 19:58:09 localhost.localdomain mysqld[7780]: 2018-06-14 19:58:09 139863650711808 [Note] Server socket created on IP: '::'.
 6月 14 19:58:09 localhost.localdomain systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
 6月 14 19:58:09 localhost.localdomain systemd[1]: Failed to start MariaDB 10.1.33 database server.
 6月 14 19:58:09 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
 6月 14 19:58:09 localhost.localdomain systemd[1]: mariadb.service failed.

対処方法は以下の通りです。

# yum remove mysql mysql-server
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.1.33-1.el7.centos を 削除
---> パッケージ MariaDB-server.x86_64 0:10.1.33-1.el7.centos を 削除
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================================================
 Package                                             アーキテクチャー                            バージョン                                                   リポジトリー                                   容量
==================================================================================================================================================================================================================
削除中:
 MariaDB-client                                      x86_64                                      10.1.33-1.el7.centos                                         @mariadb                                      172 M
 MariaDB-server                                      x86_64                                      10.1.33-1.el7.centos                                         @mariadb                                      450 M

トランザクションの要約
==================================================================================================================================================================================================================
削除  2 パッケージ

インストール容量: 622 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
警告: /etc/my.cnf.d/server.cnf は /etc/my.cnf.d/server.cnf.rpmsave として保存されました。
  削除中                  : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 
  検証中                  : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
  検証中                  : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 

削除しました:
  MariaDB-client.x86_64 0:10.1.33-1.el7.centos                                                            MariaDB-server.x86_64 0:10.1.33-1.el7.centos                                                           

完了しました!
# cd /var/lib/mysql
# rm -R *
# yum install mysql mysql-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.1.33-1.el7.centos を インストール
---> パッケージ MariaDB-server.x86_64 0:10.1.33-1.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================================================
 Package                                              アーキテクチャー                             バージョン                                                 リポジトリー                                   容量
==================================================================================================================================================================================================================
インストール中:
 MariaDB-client                                       x86_64                                       10.1.33-1.el7.centos                                       mariadb                                        39 M
 MariaDB-server                                       x86_64                                       10.1.33-1.el7.centos                                       mariadb                                       104 M

トランザクションの要約
==================================================================================================================================================================================================================
インストール  2 パッケージ

総ダウンロード容量: 143 M
インストール容量: 622 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): MariaDB-10.1.33-centos73-x86_64-client.rpm                                                                                                                                          |  39 MB  00:00:28     
(2/2): MariaDB-10.1.33-centos73-x86_64-server.rpm                                                                                                                                          | 104 MB  00:00:44     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                              3.2 MB/s | 143 MB  00:00:44     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : MariaDB-client-10.1.33-1.el7.centos.x86_64                                                                                                                                        1/2 
  インストール中          : MariaDB-server-10.1.33-1.el7.centos.x86_64                                                                                                                                        2/2 
2018-06-14 20:39:46 140526705314048 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10479 ...
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2018-06-14 20:39:46 140526705314048 [Warning] InnoDB: New log files created, LSN=45781
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Doublewrite buffer not found: creating new
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: Doublewrite buffer created
2018-06-14 20:39:46 140526705314048 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:46 140526705314048 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Foreign key constraint system tables created
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Creating tablespace and datafile system tables.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Tablespace and datafile system tables created.
2018-06-14 20:39:47 140526705314048 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:47 140526705314048 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 0
2018-06-14 20:39:47 140525919270656 [Note] InnoDB: Dumping buffer pool(s) not yet started
2018-06-14 20:39:50 140323583248640 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10510 ...
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Highest supported file format is Barracuda.
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:50 140323583248640 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:50 140323583248640 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1616697
2018-06-14 20:39:50 140322805901056 [Note] InnoDB: Dumping buffer pool(s) not yet started
2018-06-14 20:39:53 139656371382528 [Note] /usr/sbin/mysqld (mysqld 10.1.33-MariaDB) starting as process 10540 ...
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Compressed tables use zlib 1.2.7
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using Linux native AIO
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Using SSE crc32 instructions
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Completed initialization of buffer pool
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Highest supported file format is Barracuda.
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: 128 rollback segment(s) are active.
2018-06-14 20:39:53 139656371382528 [Note] InnoDB: Waiting for purge to start
2018-06-14 20:39:53 139656371382528 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1616707
2018-06-14 20:39:53 139655584409344 [Note] InnoDB: Dumping buffer pool(s) not yet started

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
Get Involved
検証中 : MariaDB-server-10.1.33-1.el7.centos.x86_64 1/2 検証中 : MariaDB-client-10.1.33-1.el7.centos.x86_64 2/2 インストール: MariaDB-client.x86_64 0:10.1.33-1.el7.centos MariaDB-server.x86_64 0:10.1.33-1.el7.centos 完了しました! # systemctl start mariadb

まとめると、こんな感じ。

# yum remove myslq
# cd /var/lib/mysql
# rm -R *
# yum install mysql mysql-server
# systemctl start mariadb

なんか最初のインストールでゴミが出来てしまうのと、インストールに必要なプラグインが抜け落ちてる感じがします。
それを無理矢理、MySQLのパッケージを削除→ゴミも削除→再度インストール。。。という流れでしょうか?

最後に、MariaDBを再起動時にも起動するように設定するには、以下のコマンドを実行します。

# systemctl enable mariadb

セキュリティ設定

セキュリティ設定を行います。

# mysql_secure_installation
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):[リターン]

Set root password? [Y/n] y
New password:****
Re-enter new password:****

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

※パスワードは適当に入力してください。

これでセキュリティ設定は完了です。

こんな感じで使えるようになります。

PTP(Precision Time Protocol)を使用した時刻同期

PTP(Precision Time Protocol)を使用してみたくて、試しにやってみた。

PTPを実装するには、本来、PTPに対応したハードウェアである必要があるらしい。

普通に使っているだけならNTPで十分なのですが、諸所の事由から2台にマシンで精度の高い時刻同期を行わせたいことになり、已む無く実装検証を試みることにしました。

さて、上手く行くのか?
試した環境は、これまた諸所の事由によりホストOSとゲストOS・・・つまり、1台のマシンで実装検証(^^ゞ
#意味あるんかいな?

 

Apache DocumentRoot以外のディレクトリをシンボリックリンクで繋げたら、Forbidden 403 エラーの対策

Linux上のApacheでDocumentRoot以外の場所を参照できるようシンボリックリンクで接続したら、Forbiddenと表示されました。

Forbidden
You don’t have permission to access /user_dir/hoge.html on this server.

パーミッションや所有者をApacheに変更してみたり、色々試した結果SELinuxを無効にすることで正常に動作することを確認しました。

# setenforce 0
# getenforce
Permissive
#

Permissiveになっていれば、SELinuxはモニタリング状態でありアクセス制御は掛かっていない状態になっています。

SELinux事態を無効(モニタリング状態)にしておくのは、あまり良いことではありません。

出来ればアクセス制御は正常に行われている状態にすべきです。

アクセスできない原因がSELinuxのアクセス制御に影響されることが確定されたら、以下の操作を行うことでこの問題を解決することが出来ます。

さて、一般にパーミッションの確認などをする際には、ls -laなど個人差はありますがlsコマンドを使います。
SELinuxコンテキストも同じように確認することが出来ます。
コマンドは以下になります。

# ls -Z [対象ファイル/ディレクトリ]

通常のファイルはこんな感じです。

-rw-r--r--. root root unconfined_u:object_r:user_home_t:s0 hogehoge.txt

さてSELinuxコンテキストを変更するには、まず最初に対象となるディレクトリに対して設定を行います。

# semanage fcontext -a -t httpd_sys_content_t "/user_dir(/.*)?"

続いて、対象ディレクトリ内のすべてのファイルとフォルダーに対して設定を反映します。

# restorecon -R -v /user_dir

対象ディレクトリ以下に多量のファイルがあると、時間が掛かる場合があります。
SELinuxを有効にします。
SELinuxの有効化は以下のコマンドを実行します。

# setenforce 1
# getenforce
Enforcing
#

最後にブラウザで動作確認を行ってください。

これでもForbiddenが表示される場合は、上記の操作に問題があるか?本当にパーミッションが間違っていないか?確認してください。

ついでに確認方法を記載します。

上記でも記載したとおり以下のコマンドで確認します。

# ls -Z [対象ファイル/ディレクトリ]
-rw-r--r--. root    root    unconfined_u:object_r:httpd_sys_content_t:s0 hogehoge.txt

設定が変更されているのが解ると思います。

 

 

 

service iptables save がCentOS 7で出来ない( ゚Д゚)

CentOS 7を使い始めて、iptablesの設定をしようとゴチャゴチャ・・・

# service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

出来ない!systemctl使えって言ってるよ!!

調べてみたら、なんかこんな感じで使える様になるらしいw

[root@localhost ~]# yum install iptables-services
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ iptables-services.x86_64 0:1.4.21-16.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                        バージョン            リポジトリー
                                                                           容量
================================================================================
インストール中:
 iptables-services        x86_64        1.4.21-16.el7         base         50 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 50 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
iptables-services-1.4.21-16.el7.x86_64.rpm                 |  50 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : iptables-services-1.4.21-16.el7.x86_64          1/1
  検証中                  : iptables-services-1.4.21-16.el7.x86_64          1/1

インストール:
  iptables-services.x86_64 0:1.4.21-16.el7

完了しました!
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@localhost ~]#

無事完了!
結局、コマンドをそのまま使える様に、以下をインストールするだけということですね。

yum install iptables-services

それもあるのですが、centOS 7からfirewalldに移行していますので、なるべくそちらへ移行することが望ましいです。

Azure環境のCentOS 7でOpenVASを使えるようにするための設定

前回までで、取りあえずOpenVASのインストールを行いました。

ここで、Auzre環境を設定しないと接続出来ないことを思い出しました。

以前に提供されていたネットワークの設定で「エンドポイント」を指定するのと同じく、ファイアウォールのポートを解放してあげないと、接続出来ないんですね(^^ゞ

「Virtual Machine」から、今回の仮想マシンを選択し、「パブリックIPアドレス/DNS名ラベル」→「設定」へ進みます。

 

更に、「構成」→「DNS名」を入力します。

これで、ドメイン名の設定が完了します。

ここから、ポートを解放します。

同様に、仮想マシンを選択して、「リソースグループ」→「ネットワークセキュリティグループ」(画面のマークを探してください)を選択します。

「受信セキュリティ規則」を選択すると、以下の画面が表示されます。

「追加」を押して、「受信セキュリティ規則」に必要な項目を追加します。

今回は、HTTP(80)とOpenVASが使用するポート番号(デフォルトで9392)を開放します。

IPアドレスによる制限をする場合等、適宜必要に応じて設定してください。

設定が完了すると以下の様に設定した項目が追加されます。

これで、ポートが開放されましたので、ドメイン名を指定してブラウザで開いてみます。

https://ドメイン名/

開かない場合は、httpdが起動していない可能性があります。
前回の設定を確認してみてください。

更に、OpenVASの画面を開いてみます。

https://ドメイン名:9392
httpではなくhttpsであることに注意してください。
本来ならば、以下の画面が表示されるはず・・・なのですが、残念ながらセキュリティ警告画面が表示されると思います。

ブラウザにより異なりますので詳細は記しませんが、表示された画面の「詳細設定」などのリンクをクリックして、そこに掛かれている記述を確認しながら無理やりアクセスを行ってください。

場合によっては、セキュリティ例外に登録する必要があります。

すると、ログイン画面が表示されます。

設定したログインIDとパスワードを入力して設定の再開です。

次回はOpenVASの設定方法について更に続けます。

 

OpenVASをAzureのCentOS 7へインストールしてみる!

さてと、今回はAzureのCentOS 7へOpenVASをインストールしてみることにした。

AzureのCentOS 7と言っても、何が変わる訳でもないのだが、rootユーザが使えないだけw

自前でサーバ立てたら、rootユーザ使えるんだけど、今回はお試し気分がテンコ盛り状態なのでAzureで作ることにした。

AzureでCentOSの環境を作る方法については、他のサイトを参考にしてください。(「名前」とかに日本語入れるとデプロイ出来ないっぽいので注意かな?)

ちなみに、Azureで作った環境は、1コア メモリ3.5GBのスタンダードなものです。HDDは30GB程度かな?非常にプアなマシンですw

1.OSの更新

取りあえず、ログインして最初にすることは、環境を新しくしておくこと。

現時点(2016年5月初旬)で作業を行いました。

$ sudo -y yum update
(省略)

$ more /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
$

現在のバージョンは/etc/redhat-releaseを確認することで得られます。

その他、適当に/etc/bashrcや~/.bashrcを書き換えて、自分なりの環境を作っておきます。

2.Apacheのインストール

次に、なんとなくApacheが入っていない様なので、Apacheをインストールしておきます。

こちらもyumでインストールします。

$ sudo yum -y install httpd
(省略)

 (まだ動いていない状態でステータスの確認)
$ service httpd status
Redirecting to /bin/systemctl status  httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)
(ここで、サービスを起動する)
$ sudo service httpd start
Redirecting to /bin/systemctl start  httpd.service

(動いているかどうかをステータスで確認)
$ service httpd status
Redirecting to /bin/systemctl status  httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-05-10 10:46:56 UTC; 13s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 10140 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           tq10140 /usr/sbin/httpd -DFOREGROUND
           tq10141 /usr/sbin/httpd -DFOREGROUND
           tq10142 /usr/sbin/httpd -DFOREGROUND
           tq10143 /usr/sbin/httpd -DFOREGROUND
           tq10144 /usr/sbin/httpd -DFOREGROUND
           mq10145 /usr/sbin/httpd -DFOREGROUND

最後に、OS再起動時に自動起動する様に設定する。

$ sudo chkconfig httpd on

以上でApacheのインストールは完了です。
詳細なApacheの設定は省略します。

3.OpenVASのインストール

yumを使ってOpenVASをインストールします。

まずは、リポジトリを登録します。

$ sudo rpm -ivh https://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/atomic-release-1.0-20.el7.art.noarch.rpm
Retrieving https://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/atomic-release-1.0-20.el7.art.noarch.rpm
warning: /var/tmp/rpm-tmp.IgujPQ: Header V3 RSA/SHA1 Signature, key ID 4520afa9: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:atomic-release-1.0-20.el7.art    ################################# [100%]

次にいよいよOpenVASをyumを使ってインストールします。

$ sudo yum -y install openvas

途中で問い合わせがあるかも知れませんが、基本的に「y」でOKです。

Complete!

と表示されればOKです。

4.OpenVASの設定

OpenVASの設定を行います。

$ sudo openvas-setup
Openvas Setup, Version: 1.0


Step 1: Update NVT, CERT, and SCAP data
Please note this step could take some time.
Once completed, this will be updated automatically every 24 hours

Select download method
* wget (NVT download only)
* curl (NVT download only)
* rsync

  Note: If rsync requires a proxy, you should define that before this step.
Downloader [Default: rsync]

最初に、rsyc使うかどうか聞かれるので、Enter押して次へ。

ここでしばらく更新を待ちます。10分くらいかな?

その後、いきなりこんなメッセージが表示されます。

Step 2: Configure GSAD
The Greenbone Security Assistant is a Web Based front end
for managing scans. By default it is configured to only allow
connections from localhost.

Allow connections from any IP? [Default: yes]

気にせず「Enter」ですね(^^ゞ

Redirecting to /bin/systemctl restart  gsad.service

Step 3: Choose the GSAD admin users password.
The admin user is used to configure accounts,
Update NVT's manually, and manage roles.

Enter administrator username [Default: admin] : xyz
Enter Administrator Password:
Verify Administrator Password:

ユーザネームを聞かれます。
adminのままで良いのですが、Azure環境で使用するため、安全のためにデフォルト設定から適当なユーザ名に変更しておきます。
パスワードを入れて次へ。

Redirecting to /bin/systemctl start  redis.service

Setup complete, you can now access GSAD at:
  https://<IP>:9392

Created symlink from /etc/systemd/system/multi-user.target.wants/openvas-scanner.service to /usr/lib/systemd/system/openvas-scanner.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openvas-manager.service to /usr/lib/systemd/system/openvas-manager.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/gsad.service to /usr/lib/systemd/system/gsad.service.
$

なんかよく解らないうちにインストールは完了した模様。。。。

一旦、OpenVASのインストールは一旦ここまでにします。

Web画面から設定を行うことになるのですが、その前にAzure環境の設定を行う必要があります。

次回は、その設定方法について記載します。