Linux-admin-quick-guide

提供:Dev Guides
移動先:案内検索

Linux管理-CentOSの概要

ビジネスクラスのLinuxディストリビューションの中でもユニークなCentOSは、Linuxが設立されたオープンソースの性質に忠実です。 最初のLinuxカーネルは、ヘルシンキ大学(Linus Torvalds)の大学生によって開発され、Richard Stallmanによって設立および推進されたGNUユーティリティと組み合わされました。 CentOSには、今日のビジネスの世界を動かすことができる実証済みのオープンソースライセンスがあります。

CentOSは、すぐに世界で最も多産なサーバープラットフォームの1つになりました。 Linuxの管理者は、雇用を求めるとき、「CentOS Linux Experience Preferred」という言葉に出くわすはずです。 新興企業から_Fortune 10_技術巨人まで、CentOSは世界中のサーバーオペレーティングシステムの上位階層に位置付けられています。

CentOSを他のLinuxディストリビューションから際立たせているのは、以下の素晴らしい組み合わせです-

  • オープンソースライセンス
  • Linuxプロフェッショナルの専用ユーザーベース
  • 優れたハードウェアサポート
  • 堅実な安定性と信頼性
  • セキュリティと更新に焦点を当てる
  • 企業環境で必要なソフトウェアパッケージング標準への厳密な準拠
  • {ブランク}

レッスンを開始する前に、読者は次のようなLinuxおよび管理の基礎に関する基本的な知識があることを前提としています-

  • rootユーザーとは何ですか?
  • ルートユーザーの力
  • セキュリティグループとユーザーの基本概念
  • Linuxターミナルエミュレーターの使用経験
  • 基本的なネットワーキングの概念
  • インタプリタ型プログラミング言語(Perl、Python、Ruby)の基本的な理解
  • HTTP、LDAP、FTP、IMAP、SMTPなどのネットワークプロトコル
  • コンピューターのオペレーティングシステムを構成するコア:ファイルシステム、ドライバー、およびカーン

基本的なCentOS Linuxコマンド

CentOS Linux管理者のツールを学ぶ前に、Linux管理コマンドラインの背後にある哲学に注意することが重要です。

Linuxは、「小さなタスクと正確なツールをつなぎ合わせて大きなタスクを簡素化する」というUnixの哲学に基づいて設計されました。 Linuxの根本には、多くの場合、特定の用途向けの大規模な単一目的アプリケーションはありません。 代わりに、何百もの基本的なユーティリティがあり、これらを組み合わせることで、大きなタスクを効率的に達成するための優れたパワーを提供します。

Linux哲学の例

たとえば、管理者がシステム上の現在のすべてのユーザーのリストを必要とする場合、次のチェーンコマンドを使用してすべてのシステムユーザーのリストを取得できます。 コマンドを実行すると、ユーザーはシステム上にアルファベット順にリストされます。

[root@centosLocal centos]# cut/etc/passwrd -d":" -f1 | sort
abrt
adm
avahi
bin
centos
chrony
colord
daemon
dbus

次のコマンドを使用すると、このリストをテキストファイルに簡単にエクスポートできます。

[root@localhost/]# cut/etc/passwd -d ":" -f1 > system_users.txt
[root@localhost/]# cat ./system_users.txt | sort | wc –l
40
[root@localhost/]#

後日、ユーザーリストとエクスポートを比較することもできます。

[root@centosLocal centos]#  cut/etc/passwd -d ":" -f1 > system_users002.txt &&
   cat system_users002.txt | sort | wc -l
41
[root@centosLocal centos]# diff ./system_users.txt ./system_users002.txt
evilBackdoor [root@centosLocal centos]#

大きなツールを実行するための小さなツールのこのアプローチでは、定期的に間隔を空けて結果を自動的に電子メールで送信するよりも、これらのコマンドを実行するスクリプトを作成する方が簡単です。

すべてのLinux管理者が熟練している必要がある基本的なコマンドは-

  • リンク:/linux_admin/linux_admin_using_vi_vim_text_editor [vim]
  • リンク:/linux_admin/linux_admin_grep_command [grep]
  • リンク:/linux_admin/linux_admin_more_and_less_command [more and less]
  • リンク:/linux_admin/linux_admin_tail_command [tail]
  • リンク:/linux_admin/linux_admin_head_command [head]
  • リンク:/linux_admin/linux_admin_wc_command [wc]
  • リンク:/linux_admin/linux_admin_sort_command [sort]
  • リンク:/linux_admin/linux_admin_uniq_command [uniq]
  • リンク:/linux_admin/linux_admin_tee_command [tee]
  • リンク:/linux_admin/linux_admin_cat_command [cat]
  • リンク:/linux_admin/linux_admin_cut_command [cut]
  • リンク:/linux_admin/linux_admin_sed_command [sed]
  • リンク:/linux_admin/linux_admin_tr_command [tr]
  • リンク:/linux_admin/linux_admin_paste_command [paste]

Linuxの世界では、管理者は毎日 filtering コマンドを使用してログを解析し、コマンド出力をフィルター処理し、対話型シェルスクリプトでアクションを実行します。 前述のように、これらのコマンドの能力は、 piping と呼ばれるプロセスを介して相互に変更する能力にあります。

次のコマンドは、CentOSメインユーザー辞書の文字aで始まる単語の数を示しています。

[root@centosLocal ~]# egrep '^a.*$'/usr/share/dict/words | wc -l
25192
[root@centosLocal ~]#

Linux Admin-ファイル/フォルダー管理

CentOS Linuxのディレクトリとファイルの両方に適用される許可を導入するために、次のコマンド出力を見てみましょう。

[centos@centosLocal etc]$ ls -ld/etc/yum*
drwxr-xr-x. 6 root root 100 Dec  5 06:59/etc/yum
-rw-r--r--. 1 root root 970 Nov 15 08:30/etc/yum.conf
drwxr-xr-x. 2 root root 187 Nov 15 08:30/etc/yum.repos.d

-表示される3つの主要なオブジェクトタイプは

  • _ "-" _ -プレーンファイルのダッシュ
  • _ "d" _ -ディレクトリの場合
  • _ "l" _ -シンボリックリンクの場合

私たちは、各ディレクトリとファイルの出力の3つのブロックに焦点を当てます-

  • drwxr-xr-x:ルート:ルート
  • -rw-r—​r--:ルート:ルート
  • drwxr-xr-x:ルート:ルート

今、これらの行をよりよく理解するために、これを分解しましょう-

d Means the object type is a directory
rwx Indicates directory permissions applied to the owner
r-x Indicates directory permissions applied to the group
r-x Indicates directory permissions applied to the world
root The first instance, indicates the owner of the directory
root The second instance, indicates the group to which group permissions are applied

owner _、 group_、および_world_の違いを理解することが重要です。 これを理解しないと、インターネットへのサービスをホストするサーバーに大きな影響を及ぼす可能性があります。

実際の例を示す前に、_directories_と_files_に適用されるアクセス許可を理解しましょう。

次の表をご覧になり、指示に従ってください。

Octal Symbolic Perm. Directory
1 x Execute Enter the directory and access files
2 w Write Delete or modify the files in a directory
4 r Read List the files within the directory

注意-ディレクトリの読み取りのためにファイルにアクセスできる必要がある場合、_read_および_execute_パーミッションを適用するのが一般的です。 そうしないと、ユーザーはファイルの操作が困難になります。 _write_を無効のままにすると、ファイルの名前変更、削除、コピー、またはアクセス許可の変更ができなくなります。

ディレクトリとファイルへのアクセス許可の適用

アクセス許可を適用する場合、理解する必要がある2つの概念があります-

  • シンボリック許可
  • オクタル許可

本質的に、それぞれは同じですが、ファイル許可を参照し、割り当てる方法が異なります。 クイックガイドについては、次の表を調べて参照してください-

Read Write Execute
Octal 4 2 1
Symbolic r w x
*octal* メソッドを使用してアクセス許可を割り当てるときは、760などの3バイトの数値を使用します。 数字760は次のように変換されます。所有者:rwx。グループ:rw;その他(または世界)の許可なし。

別のシナリオ:733は次のように変換されます:Owner:rwx;グループ:wx;その他:wx。

Octalメソッドを使用したアクセス許可には1つの欠点があります。 既存の許可セットは変更できません。 オブジェクトの権限セット全体を再割り当てすることのみが可能です。

今、あなたは不思議に思うかもしれません、常に許可を再割り当てすることの何が悪いのでしょうか? 実稼働Webサーバー上の_/var/www/_などの大きなディレクトリ構造を想像してください。 Otherのすべてのディレクトリで_w_または_write bit_を再帰的に削除します。 したがって、セキュリティ対策のために必要な場合にのみ、積極的に追加することを強制します。 権限セット全体を再割り当てすると、すべてのサブディレクトリに割り当てられた他のすべてのカスタム権限が削除されます。

したがって、システムの管理者とユーザーの両方に問題が発生します。 ある時点で、個人(または個人)は、すべてのディレクトリとオブジェクトのパーミッションセット全体を再割り当てすることにより、消去されたすべてのカスタムパーミッションを再割り当てする必要があります。

この場合、我々はシンボリックメソッドを使用してアクセス許可を変更したいでしょう-

chmod -R o-w/var/www/

上記のコマンドは「許可を上書き」しませんが、現在の許可セットを変更します。 そのため、ベストプラクティスの使用に慣れる

  • 許可を割り当てるためだけの8進数
  • 許可セットを変更するシンボリック

CentOS管理者は、_Octal_パーミッションと_Symbolic_パーミッションの両方に習熟していることが重要です。パーミッションは、データとオペレーティングシステム全体の整合性にとって重要です。 アクセス許可が正しくない場合、最終結果は機密データとなり、オペレーティングシステム全体が危険にさらされます。

それがカバーされているので、パーミッションとオブジェクトの所有者/メンバーを変更するためのいくつかのコマンドを見てみましょう-

  • chmod
  • チャウン
  • chgrp
  • 仮面

chmod:ファイルモード許可ビットの変更

Command Action
-c Like verbose, but will only report the changes made
-v Verbose, outputsthe diagnostics for every request made
-R Recursively applies the operation on files and directories

chmodにより、_octal_または_symbolic_許可セットを使用してディレクトリとファイルの許可を変更できます。 これを使用して、割り当てを変更し、ディレクトリをアップロードします。

chown:ファイルの所有者とグループの変更

Command Action
-c Like verbose, but will only report the changes made
-v Verbose, outputsthe diagnostics for every request made
-R Recursively applies the operation on files and directories

_chown_は、所有するユーザーとオブジェクトのグループの両方を変更できます。 ただし、両方を同時に変更する必要がない限り、_chgrp_の使用は通常グループに使用されます。

chgrp:ファイルまたはディレクトリのグループ所有権の変更

Command Action
-c Like verbose, but will only report the changes
-v Verbose, outputs the diagnostics for every request made
-R Recursively, applies the operations on file and directories

chgrpは、グループ所有者を指定された所有者に変更します。

実世界の練習

所有グループが_students_グループになるように、_/var/www/students/_内のすべてのサブディレクトリの割り当てを変更しましょう。 次に、_students_のルートを教授グループに割り当てます。 後で、博士を作ります _students_ディレクトリの所有者であるTerry Thomasは、学校のすべてのコンピューターサイエンスアカデミアを担当する任務を負っています。

ご覧のとおり、作成されたディレクトリはかなり未加工のままです。

[root@centosLocal ~]# ls -ld/var/www/students/
drwxr-xr-x. 4 root root 40 Jan  9 22:03/var/www/students/

[root@centosLocal ~]# ls -l/var/www/students/
total 0
drwxr-xr-x. 2 root root 6 Jan  9 22:03 assignments
drwxr-xr-x. 2 root root 6 Jan  9 22:03 uploads

[root@centosLocal ~]#

管理者として、私たちは_root_資格情報をだれにも公開したくありません。 しかし同時に、ユーザーが仕事を行えるようにする必要があります。 だから博士を許可しましょう Terry Thomasは、ファイル構造をさらに制御し、学生ができることを制限します。

[root@centosLocal ~]# chown -R drterryt:professors/var/www/students/
[root@centosLocal ~]# ls -ld/var/www/students/
drwxr-xr-x. 4 drterryt professors 40 Jan  9 22:03/var/www/students/

[root@centosLocal ~]# ls -ls/var/www/students/
total 0
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 assignments
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 uploads

[root@centosLocal ~]#

現在、各ディレクトリとサブディレクトリの所有者は_drterryt_で、所有グループは_professors_です。 _assignments_ディレクトリは学生が割り当てられた課題を提出するためのものであるため、_students_グループから_files_をリストおよび変更する機能を削除しましょう。

[root@centosLocal ~]# chgrp students/var/www/students/assignments/&& chmod
736/var/www/students/assignments/

[root@centosLocal assignments]# ls -ld/var/www/students/assignments/
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14/var/www/students/assignments/

[root@centosLocal assignments]#

学生は課題を_assignments_ディレクトリにコピーできます。 ただし、ディレクトリの内容を一覧表示したり、現在のファイルをコピーしたり、_assignments_ディレクトリ内のファイルを変更したりすることはできません。 したがって、学生は完了した課題を提出することができます。 CentOSファイルシステムは、割り当てが有効になったときの日付スタンプを提供します。

_assignments_ディレクトリの所有者として-

[drterryt@centosLocal assignments]$ whoami
drterryt

[drterryt@centosLocal assignments]$ ls -ld/var/www/students/assignment
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14/var/www/students/assignments/

[drterryt@centosLocal assignments]$ ls -l/var/www/students/assignments/
total 4
-rw-r--r--. 1 adama  students  0 Jan  9 23:14 myassign.txt
-rw-r--r--. 1 tammyr students 16 Jan  9 23:18 terryt.txt

[drterryt@centosLocal assignments]$

ディレクトリの所有者は、ファイルをリストしたり、ファイルを変更および削除したりできます。

umaskコマンド:ファイルおよびディレクトリのアクセス許可のデフォルトモードを作成時に提供する

_umask_は、ファイルとディレクトリの作成時にデフォルトのモードを提供する重要なコマンドです。

_umask_パーミッションは、単項否定論理を使用します。

Permission Operation
0 Read, write, execute
1 Read and write
2 Read and execute
3 Read only
4 Read and execute
5 Write only
6 Execute only
7 No permissions
[adama@centosLocal umask_tests]$ ls -l ./
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt

[adama@centosLocal umask_tests]$ whoami
adama

[adama@centosLocal umask_tests]$ umask
0022

[adama@centosLocal umask_tests]$

では、現在のユーザーの_umask_を変更して、新しいファイルとディレクトリを作成しましょう。

[adama@centosLocal umask_tests]$ umask 077

[adama@centosLocal umask_tests]$ touch mynewfile.txt

[adama@centosLocal umask_tests]$ mkdir myNewDir

[adama@centosLocal umask_tests]$ ls -l
total 0
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt
drwx------. 2 adama students 6 Jan 10 00:35 myNewDir
-rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt

ご覧のとおり、新しく作成されたファイルは以前よりも少し制限が厳しくなります。

ユーザーの_umask_はどちらかで変更する必要があります-

  • /etc/profile * 〜/bashrc
[root@centosLocal centos]# su adama
[adama@centosLocal centos]$ umask
0022
[adama@centosLocal centos]$

通常、CentOSのデフォルトの_umask_は問題ありません。 デフォルトの_0022_で問題が発生するのは、通常、異なるグループに属する異なる部門がプロジェクトで協力する必要がある場合です。

CentOSオペレーティングシステムの操作と設計のバランスを取るために、ここでシステム管理者の役割が入ります。

Linux Admin-ユーザー管理

_user_管理を議論するとき、理解する3つの重要な用語があります-

  • ユーザー
  • グループ
  • 許可

ファイルとフォルダーに適用される詳細なアクセス許可については既に説明しました。 この章では、ユーザーとグループについて説明します。

CentOSユーザー

CentOSでは、2種類のアカウントがあります-

  • システムアカウント-デーモンまたはその他のソフトウェアに使用されます。
  • インタラクティブアカウント-通常、システムリソースにアクセスするためにユーザーに割り当てられます。

2つのユーザータイプの主な違いは-

  • *システムアカウント*は、ファイルとディレクトリにアクセスするためにデーモンによって使用されます。 これらは通常、シェルまたは物理的なコンソールログインを介した対話型ログインを許可されません。
  • *インタラクティブアカウント*は、シェルまたは物理コンソールログインからコンピューティングリソースにアクセスするためにエンドユーザーによって使用されます。

このユーザーの基本的な理解を踏まえて、会計部門のボブ・ジョーンズの新しいユーザーを作成しましょう。 adduser コマンドを使用して、新しいユーザーを追加します。

以下は、いくつかの adduser 共通スイッチです-

Switch Action
-c Adds comment to the user account
-m Creates user home directory in default location, if nonexistent
-g Default group to assign the user
-n Does not create a private group for the user, usually a group with username
-M Does not create a home directory
-s Default shell other than/bin/bash
-u Specifies UID (otherwise assigned by the system)
-G Additional groups to assign the user to

新しいユーザーを作成するときは、次のように_-c、-m、-g、-n_スイッチを使用します-

[root@localhost Downloads]# useradd -c "Bob Jones  Accounting Dept Manager"
-m -g accounting -n bjones

次に、新しいユーザーが作成されたかどうかを確認しましょう-

[root@localhost Downloads]# id bjones
(bjones) gid = 1001(accounting) groups = 1001(accounting)

[root@localhost Downloads]# grep bjones/etc/passwd
bjones:x:1001:1001:Bob Jones  Accounting Dept Manager:/home/bjones:/bin/bash

[root@localhost Downloads]#

今、私たちはpasswdコマンドを使用して新しいアカウントを有効にする必要があります-

[root@localhost Downloads]# passwd bjones
Changing password for user bjones.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

[root@localhost Downloads]#

ユーザーアカウントが有効になっていないため、ユーザーはシステムにログインできません。

ユーザーアカウントを無効にする

システムでアカウントを無効にする方法はいくつかあります。 これらは、/etc/passwdファイルを手動で編集することから始まります。 または、passwd_コマンドと* '- l _ *スイッチを使用します。 どちらの方法にも大きな欠点が1つあります。ユーザーが_ssh_アクセス権を持ち、認証にRSAキーを使用する場合、この方法を使用してログインできます。

次に、_chage_コマンドを使用して、パスワードの有効期限を前の日付に変更します。 また、無効にした理由をアカウントに書き留めておくこともできます。

[root@localhost Downloads]# chage -E 2005-10-01 bjones

[root@localhost Downloads]# usermod  -c "Disabled Account while Bob out of the country
for five months" bjones

[root@localhost Downloads]# grep bjones/etc/passwd
bjones:x:1001:1001:Disabled Account while Bob out of the country for four
months:/home/bjones:/bin/bash

[root@localhost Downloads]#

グループを管理する

Linuxでグループを管理すると、管理者がコンテナー内のユーザーを結合して、すべてのグループメンバーに適用できる権限セットを適用するのが便利になります。 たとえば、経理部門のすべてのユーザーが同じファイルにアクセスする必要がある場合があります。 したがって、会計ユーザーを追加して、会計グループを作成します。

ほとんどの場合、特別な権限を必要とするものはすべてグループで行う必要があります。 このアプローチは、通常、1人のユーザーだけに特別な許可を適用するよりも時間を節約します。 たとえば、Sallyはレポートを担当しており、Sallyのみがレポートのために特定のファイルにアクセスする必要があります。 しかし、サリーがいつか病気になり、ボブが報告した場合はどうなりますか? または、レポートの必要性が高まりますか? グループが作成されると、管理者は一度だけそれをする必要があります。 ユーザーの追加は、ニーズの変化または拡大に応じて適用されます。

以下は、グループの管理に使用されるいくつかの一般的なコマンドです-

  • chgrp

  • groupadd

  • グループ

  • usermod

    *chgrp* -ファイルまたはディレクトリのグループ所有権を変更します。

会計グループの人々がファイルを保存し、ファイル用のディレクトリを作成するためのディレクトリを作成しましょう。

[root@localhost Downloads]# mkdir/home/accounting

[root@localhost Downloads]# ls -ld/home/accounting
drwxr-xr-x. 2 root root 6 Jan 13 10:18/home/accounting

[root@localhost Downloads]#

次に、_group_ownership_を_accounting_グループに与えましょう。

[root@localhost Downloads]# chgrp -v  accounting/home/accounting/
changed group of ‘/home/accounting/’ from root to accounting

[root@localhost Downloads]# ls -ld/home/accounting/
drwxr-xr-x. 2 root accounting 6 Jan 13 10:18/home/accounting/

[root@localhost Downloads]#

これで、アカウンティンググループの全員が_/home/accounting_に対する_read_および_execute_権限を持ちます。 書き込み権限も必要になります。

[root@localhost Downloads]# chmod g+w/home/accounting/

[root@localhost Downloads]# ls -ld/home/accounting/
drwxrwxr-x. 2 root accounting 6 Jan 13 10:18/home/accounting/

[root@localhost Downloads]#

_accounting group_は機密文書を処理する可能性があるため、_other_または_world_にいくつかの制限付きアクセス許可を適用する必要があります。

[root@localhost Downloads]# chmod o-rx/home/accounting/

[root@localhost Downloads]# ls -ld/home/accounting/
drwxrwx---. 2 root accounting 6 Jan 13 10:18/home/accounting/

[root@localhost Downloads]#
*groupadd* -新しいグループを作成するために使用されます。
Switch Action
-g Specifies a GID for the group
-K Overrides specs for GID in/etc/login.defs
-o Allows overriding non-unique group id disallowance
-p Group password, allowing the users to activate themselves

secretという新しいグループを作成しましょう。 グループにパスワードを追加し、ユーザーが既知のパスワードで自分自身を追加できるようにします。

[root@localhost]# groupadd secret

[root@localhost]# gpasswd secret
Changing the password for group secret
New Password:
Re-enter new password:

[root@localhost]# exit
exit

[centos@localhost ~]$ newgrp secret
Password:

[centos@localhost ~]$ groups
secret wheel rdc

[centos@localhost ~]$

実際には、グループのパスワードはあまり使用されません。 セカンダリグループは適切であり、他のユーザー間でパスワードを共有することはセキュリティ上の優れた慣行ではありません。

*groups* コマンドは、ユーザーが属するグループを表示するために使用されます。 現在のユーザーにいくつかの変更を加えた後、これを使用します。
*usermod* は、アカウント属性を更新するために使用されます。

一般的な_usermod_スイッチは次のとおりです。

Switch Action
-a Appends, adds user to supplementary groups, only with the -G option
-c Comment, updatesthe user comment value
-d Home directory, updates the user’s home directory
-G Groups, adds or removesthe secondary user groups
-g Group, default primary group of the user
[root@localhost]# groups centos
centos : accounting secret

[root@localhost]#

[root@localhost]# usermod -a -G wheel centos

[root@localhost]# groups centos
centos : accounting wheel secret

[root@localhost]#

Linux Admin-クォータ管理

CentOSディスククォータは両方とも有効にできます。ディスク容量を超える前に、システム管理者に警告し、ユーザーへのディスクストレージアクセスを拒否します。 ディスクがいっぱいになると、ディスクの内容に応じて、システム全体が回復するまで悲鳴を上げることがあります。

CentOS Linuxでクォータ管理を有効にするのは、基本的に4つのステップのプロセスです-

  • *ステップ1 *-/etc/fstabでグループとユーザーのクォータ管理を有効にします。
  • *ステップ2 *-ファイルシステムを再マウントします。
  • *ステップ3 *-クォータデータベースを作成し、ディスク使用量テーブルを生成します。
  • *ステップ4 *-クォータポリシーを割り当てます。

===/etc/fstabでクォータ管理を有効にします

まず、/etc/fstab filenをバックアップします-

[root@centosLocal centos]# cp -r/etc/fstab ./

現在、現在の作業ディレクトリに_known working_/etc/fstabのコピーがあります。

#
#/etc/fstab
# Created by anaconda on Sat Dec 17 02:44:51 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root       /        xfs     defaults                      0 0
UUID = 4b9a40bc-9480-4    /boot     xfs     defaults                      0 0

/dev/mapper/cl-home       /home     xfs     defaults,usrquota,grpquota    0 0

/dev/mapper/cl-swap        swap      swap    defaults                      0 0

ユーザーまたはグループにクォータが適用されるボリュームまたはラベルの_/etc/fstab_のオプションセクションで、次の変更を行いました。

  • usrquota
  • grpquota

ご覧のとおり、 _ xfs_ ファイルシステムを使用しています。 xfsを使用する場合、追加の手動手順が必要です。 /home は/と同じディスク上にあります。 さらに調査すると、カーネルレベルのマウントオプションである_noquota_に/が設定されていることがわかります。 カーネルブートオプションを再構成する必要があります。

root@localhost rdc]# mount | grep '/'
/dev/mapper/cl-root on/type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

XFSファイルシステムのカーネルブートオプションの再構成

このステップは、2つの条件下でのみ必要です-

  • クォータを有効にしているディスク/パーティションがxfsファイルシステムを使用している場合
  • カーネルがブート時にnoquotaパラメーターを/etc/fstabに渡すとき
  • ステップ1 *-/etc/default/grubのバックアップを作成します。
cp/etc/default/grub ~/
  • ステップ2 *-_/etc/default/grub_を変更します。

これがデフォルトのファイルです。

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g'/etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

私たちは次の行を変更したい-

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

to

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv
=cl/swap rhgb quiet rootflags=usrquota,grpquota"

-これらの変更を逐語的にコピーすることが重要です。 grub.cfgを再構成した後、構成でエラーが発生した場合、システムの起動に失敗します。 非実動システムでチュートリアルのこの部分を試してください。

  • ステップ3 *-作業中のgrub.cfgをバックアップします
cp/boot/grub2/grub.cfg/boot/grub2/grub.cfg.bak

新しい_grub.cfg_を作成します

[root@localhost rdc]# grub2-mkconfig -o/boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image:/boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image:/boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image:/boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd
Found initrd image:/boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img
done

[root@localhost rdc]#

リブート

[root@localhost rdc]#reboot

すべての変更が正確だった場合、_xfs_ファイルシステムにクォータを追加できるようにする必要はありません。

[rdc@localhost ~]$ mount | grep '/'
/dev/mapper/cl-root on/type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

[rdc@localhost ~]$

_usrquota_および_grpquota_パラメーターをgrub経由で渡しました。

ここで、/etc/fstab_を再度編集して、同じ物理ディスク/homeon_から/を含めます。

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

それでは、クォータデータベースを有効にしましょう。

[root@localhost rdc]# quotacheck -acfvugM

クォータが有効になっていることを確認してください。

[root@localhost rdc]# quotaon -ap
group quota on/(/dev/mapper/cl-root) is on
user quota on/(/dev/mapper/cl-root) is on
group quota on/home (/dev/mapper/cl-home) is on
user quota on/home (/dev/mapper/cl-home) is on
[root@localhost rdc]#

ファイルシステムを再マウントする

パーティションまたはディスクがアクティブに起動されたパーティションから分離されている場合、再起動せずに再マウントできます。 ルートディレクトリ/で起動されたディスク/パーティションにクォータが設定されている場合、オペレーティングシステムの再起動が必要になる場合があります。 再マウントを強制して変更を適用すると、ファイルシステムを再マウントする必要が異なる場合があります。

[rdc@localhost ~]$ df
Filesystem              1K-blocks     Used      Available      Use%     Mounted on
/dev/mapper/cl-root     22447404      4081860   18365544       19%        /
devtmpfs                903448        0         903448         0%         /dev
tmpfs                   919308        100       919208         1%         /dev/shm
tmpfs                   919308        9180      910128         1%         /run
tmpfs                   919308        0         919308         0%         /sys/fs/cgroup
/dev/sda2               1268736       176612    1092124        14%        /boot
/dev/mapper/cl-var      4872192       158024    4714168        4%         /var
/dev/mapper/cl-home     18475008      37284     18437724       1%         /home
tmpfs                   183864        8         183856         1%         /run/user/1000

[rdc@localhost ~]$

ご覧のとおり、LVMボリュームが使用されています。 したがって、再起動するのは簡単です。 これにより、/home_が再マウントされ、/etc/fstab_構成の変更がアクティブな構成にロードされます。

クォータデータベースファイルを作成する

CentOSは/homeのディスククォータを操作できるようになりました。 フルクォータのサポートを有効にするには、 quotacheck コマンドを実行する必要があります。

quotacheckは2つのファイルを作成します-

  • aquota.user
  • aquota.group

これらは、クォータが有効なディスク/パーティションのクォータ情報を保存するために使用されます。

一般的なquotacheckスイッチは次のとおりです。

Switch Action
-u Checks for user quotas
-g Checks for group quotas
-c Quotas should be enabled for each file system with enables quotas
-v Displays verbose output

ユーザーごとにクォータ制限を追加する

このために、edquotaコマンドを使用し、その後にユーザー名を続けます-

[root@localhost rdc]# edquota centos

Disk quotas for user centos (uid 1000):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/mapper/cl-root              12          0          0         13        0        0
/dev/mapper/cl-home            4084          0          0        140        0        0

各列を見てみましょう。

  • ファイルシステム-適用されるユーザーのファイルシステムのクォータです
  • blocks -ユーザーが各ファイルシステムで現在使用しているブロック数
  • soft -ソフト制限のブロックを設定します。 ソフト制限により、ユーザーは所定の期間のクォータを保持できます
  • hard -ハード制限のブロックを設定します。 ハード制限は、総許容クォータです
  • inodes -ユーザーが現在使用しているiノードの数
  • soft -ソフトiノードの制限
  • hard -ハードiノードの制限

ユーザーとして現在のクォータを確認するには-

[centos@localhost ~]$ quota
Disk quotas for user centos (uid 1000):
Filesystem             blocks     quota      limit grace    files   quota   limit   grace
/dev/mapper/cl-home    6052604    56123456   61234568       475     0       0       [centos@localhost ~]$

以下は、ハードクォータの制限を超えたときにユーザーに表示されるエラーです。

[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/

cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded

[centos@localhost Downloads]$

ご覧のとおり、このユーザーのディスククォータ内にあります。 ソフト制限警告を設定しましょう。 これにより、ユーザーはクォータ制限が切れる前に事前に通知されます。 経験から、エンドユーザーが仕事を始めると、実際に仕事を始めるためにファイルを消去するのに45分を費やす必要があると、エンドユーザーから苦情が寄せられます。

管理者は、 repquota コマンドでクォータの使用状況を確認できます。

[root@localhost Downloads]# repquota /home
                    Block limits                            File limits
User            used     soft     hard     grace       used     soft     hard     grace
----------------------------------------------------------------------------------------
root      --       0         0        0                   3        0        0
centos    -+ 6189824  56123456 61234568                 541      520      540      6days

[root@localhost Downloads]#

ご覧のとおり、ユーザーcentosはハードブロッククォータを超えているため、_/home_のディスクスペースを使用できなくなりました。

-+は、ファイルシステムでハードクォータを超えたことを示します。

クォータを計画するときは、少し計算する必要があります。 管理者が知っておく必要があるのは:システム上に何人のユーザーがいるのか? ユーザー/グループ間でどのくらいの空き領域を割り当てる必要がありますか? ファイルシステム上のブロックを構成するバイト数は?

空きディスク領域に関連するブロックの観点からクォータを定義します。最悪のシナリオであるファイルシステムに空き領域の「安全な」バッファを残すことをお勧めします。すべてのクォータを同時に超過します。 これは特に、システムがログを書き込むために使用するパーティションで発生します。

Systemdサービスの開始と停止

*_systemd_* は、Linuxでサービスを実行する新しい方法です。 _systemd_には、_sysvinit_が優先されます。 _systemd_はLinuxの起動時間を短縮し、Linuxサービスを管理する標準的な方法になりました。 _systemd_は安定していますが、まだ進化しています。

initシステムとしての_systemd_は、Linuxカーネルの起動後にステータスの変更が必要なサービスとデーモンの両方を管理するために使用されます。 ステータスの変更により、サービス状態の開始、停止、リロード、および調整が適用されます。

まず、サーバーで現在実行されているsystemdのバージョンを確認しましょう。

[centos@localhost ~]$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

CentOSバージョン7では、この執筆時点で完全に更新されたsystemdバージョン219が現在の安定バージョンです。

_systemd-analyze_を使用して、最後のサーバーの起動時間を分析することもできます

[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$

システムの起動時間が遅い場合は、_systemd-analyze blame_コマンドを使用できます。

[centos@localhost ~]$ systemd-analyze blame
   40.882s kdump.service
   5.775s NetworkManager-wait-online.service
   4.701s plymouth-quit-wait.service
   3.586s postfix.service
   3.121s systemd-udev-settle.service
   2.649s tuned.service
   1.848s libvirtd.service
   1.437s network.service
   875ms packagekit.service
   855ms gdm.service
   514ms firewalld.service
   438ms rsyslog.service
   436ms udisks2.service
   398ms sshd.service
   360ms boot.mount
   336ms polkit.service
   321ms accounts-daemon.service

_systemd_を使用する場合、_units_の概念を理解することが重要です。 *ユニット*は、_systemd_が解釈方法を知っているリソースです。 ユニットは次のように12種類に分類されます-

  • 。サービス
  • 。ソケット
  • 。デバイス
  • 。マウント
  • .automount
  • 。スワップ
  • 。ターゲット
  • 。パス
  • 。タイマー
  • .snapshot
  • 。スライス
  • 。範囲

ほとんどの場合、ユニットサービスとして.serviceを使用します。 他のタイプについてさらに調査することをお勧めします。 systemd_サービスの開始と停止には.service_ユニットのみが適用されるため。

各_unit_は、次のいずれかにあるファイルで定義されます-

  • /lib/systemd/system -ベースユニットファイル
  • /etc/systemd/system -実行時に変更されたユニットファイル

systemctlを使用してサービスを管理する

_systemd_を使用するには、_systemctl_コマンドに精通する必要があります。 以下は、_systemctl_の最も一般的なコマンドラインスイッチです。

Switch Action
-t Comma separated value of unit types such as service or socket
-a Shows all loaded units
--state Shows all units in a defined state, either: load, sub, active, inactive, etc..
-H Executes operation remotely. Specify Host name or host and user separated by @.

基本的なsystemctlの使用法

systemctl [operation]
example: systemctl --state [servicename.service]

ボックスで実行されているすべてのサービスを簡単に確認します。

[root@localhost rdc]# systemctl -t service
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook
abrt-oops.service          loaded   active   running    ABRT kernel log watcher
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool
accounts-daemon.service    loaded   active   running    Accounts Service
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store)
atd.service                loaded   active   running    Job spooling tools
auditd.service             loaded   active   running    Security Auditing Service
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack
blk-availability.service   loaded   active   exited     Availability of block devices
bluetooth.service          loaded   active   running    Bluetooth service
chronyd.service            loaded   active   running    NTP client/server

サービスを停止する

最初に、bluetoothサービスを停止します。

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

ご覧のとおり、bluetoothサービスは非アクティブになっています。

Bluetoothサービスを再度開始するには。

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

-.service_が暗示されているため、bluetooth.serviceを指定しませんでした。 処理しているサービスに_unit type_を追加することを考えるのは良い習慣です。 したがって、ここからは、。service_拡張子を使用して、サービスユニットの操作に取り組んでいることを明確にします。

サービスで実行できる主なアクションは次のとおりです-

Start Starts the service
Stop Stops a service
Reload Reloads the active configuration of a service w/o stopping it (like kill -HUP in system v init)
Restart Starts, then stops a service
Enable Starts a service at boot time
Disable Stops a service from automatically starting at run time

上記のアクションは、主に次のシナリオで使用されます-

Start To bring a service up that has been put in the stopped state.
Stop To temporarily shut down a service (for example when a service must be stopped to access files locked by the service, as when upgrading the service)
Reload When a configuration file has been edited and we want to apply the new changes while not stopping the service.
Restart In the same scenario as reload, but the service does not support reload.
Enable When we want a disabled service to run at boot time.
Disable Used primarily when there is a need to stop a service, but it starts on boot.

サービスのステータスを確認するには-

[root@localhost]# systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart =/etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking...
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ]
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

_networking_サービスの現在のステータスを表示します。 私たちはネットワーキングに関連するすべてのサービスを見たい場合は、使用することができます-

[root@localhost]# systemctl --all -t service | grep -i network
network.service                       loaded    active    exited    LSB: Bring up/
NetworkManager-wait-online.service    loaded    active    exited    Network Manager
NetworkManager.service                loaded    active    running   Network Manager
ntpd.service                          loaded    inactive  dead      Network Time
rhel-import-state.service             loaded    active    exited    Import network

[root@localhost]#

サービスを管理する sysinit メソッドに精通している人にとっては、_systemd_に移行することが重要です。 _systemd_は、Linuxでデーモンサービスを開始および停止する新しい方法です。

Linux Admin-systemctlを使用したリソース管理

*_systemctl_* はsystemdを制御するために使用されるユーティリティです。 systemctlは、CentOS管理者にsystemdで多数の操作を実行する機能を提供します。
  • システム化されたユニットを構成する
  • systemd untisのステータスを取得します
  • サービスの開始と停止
  • ランタイムなどのsystemdサービスを有効/無効にします。

_systemctl_のコマンド構文は非常に基本的ですが、スイッチとオプションが絡む可能性があります。 CentOS Linuxの管理に必要な_systemctl_の最も重要な機能を紹介します。

Basic systemctl syntax:
systemctl [OPTIONS] COMMAND [NAME]

以下は、_systemctl_で使用される一般的なコマンドです-

  • 開始
  • stop
  • 再起動
  • リロードする
  • 状態
  • アクティブです
  • リスト単位
  • 有効にする
  • 無効にする
  • cat
  • show

systemctlで_start stop reload restart enable disable_について既に説明しました。 それでは、残りの一般的に使用されるコマンドを見ていきましょう。

状態

その最も単純な形式では、statusコマンドを使用して、全体としてシステムの状態を確認することができます-

[root@localhost rdc]# systemctl status
 ● localhost.localdomain
  State: running
  Jobs: 0 queued
  Failed: 0 units
  Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago
CGroup:/
       ├─1/usr/lib/systemd/systemd --switched-root --system --deserialize 21
       ├─user.slice
       │ └─user-1002.slice
       │   └─session-1.scope
       │     ├─2869 gdm-session-worker [pam/gdm-password]
       │     ├─2881/usr/bin/gnome-keyring-daemon --daemonize --login
       │     ├─2888 gnome-session --session gnome-classic
       │     ├─2895 dbus-launch --sh-syntax --exit-with-session

上記の出力は要約されています。 実際には、_systemctl status_は約100行のツリー化されたプロセスステータスを出力します。

ファイアウォールサービスのステータスを確認したいとしましょう-

[root@localhost rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago
 Docs: man:firewalld(1)
Main PID: 825 (firewalld)
CGroup:/system.slice/firewalld.service
       └─825/usr/bin/python -Es/usr/sbin/firewalld --nofork --nopid

ご覧のとおり、ファイアウォールサービスは現在アクティブであり、4時間以上使用されています。

リスト単位

list-unitsコマンドを使用すると、特定のタイプのすべてのユニットをリストできます。 _systemd_によって管理されているソケットを確認しましょう-

[root@localhost]# systemctl list-units --type=socket
UNIT                         LOAD     ACTIVE     SUB     DESCRIPTION
avahi-daemon.socket          loaded   active  running    Avahi mDNS/DNS-SD Stack Activation Socket
cups.socket                  loaded   active  running    CUPS Printing Service Sockets
dbus.socket                  loaded   active  running    D-Bus System Message Bus Socket
dm-event.socket              loaded   active  listening  Device-mapper event daemon FIFOs
iscsid.socket                loaded   active  listening  Open-iSCSI iscsid Socket
iscsiuio.socket              loaded   active  listening  Open-iSCSI iscsiuio Socket
lvm2-lvmetad.socket          loaded   active  running    LVM2 metadata daemon socket
lvm2-lvmpolld.socket         loaded   active  listening  LVM2 poll daemon socket
rpcbind.socket               loaded   active  listening  RPCbind Server Activation Socket
systemd-initctl.socket       loaded   active  listening /dev/initctl Compatibility Named Pipe
systemd-journald.socket      loaded   active  running    Journal Socket
systemd-shutdownd.socket     loaded   active  listening  Delayed Shutdown Socket
systemd-udevd-control.socket loaded   active  running    udev Control Socket
systemd-udevd-kernel.socket  loaded   active  running    udev Kernel Socket
virtlockd.socket             loaded   active  listening  Virtual machine lock manager socket
virtlogd.socket              loaded   active  listening  Virtual machine log manager socket

それでは、現在実行中のサービスを確認しましょう-

[root@localhost rdc]# systemctl list-units --type=service
UNIT                      LOAD     ACTIVE     SUB     DESCRIPTION
abrt-ccpp.service         loaded   active   exited    Install ABRT coredump hook
abrt-oops.service         loaded   active   running   ABRT kernel log watcher
abrt-xorg.service         loaded   active   running   ABRT Xorg log watcher
abrtd.service             loaded   active   running   ABRT Automated Bug Reporting Tool
accounts-daemon.service   loaded   active   running   Accounts Service
alsa-state.service        loaded   active   running   Manage Sound Card State (restore and store)
atd.service               loaded   active   running   Job spooling tools
auditd.service            loaded   active   running   Security Auditing Service

アクティブです

_is-active_コマンドは、ユニットのステータス情報を返すように設計されたsystemctlコマンドの例です。

[root@localhost rdc]# systemctl is-active ksm.service
active

cat

_cat_は、めったに使用されないコマンドの1つです。 シェルでcatを使用してユニットファイルへのパスを入力する代わりに、_systemctl cat_を使用します。

[root@localhost]# systemctl cat firewalld
#/usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before = NetworkManager.service
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)

[Service]
EnvironmentFile = -/etc/sysconfig/firewalld
ExecStart =/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS
ExecReload =/bin/kill -HUP $MAINPID
# supress to log debug and error output also to/var/log/messages
StandardOutput = null
StandardError = null

Type = dbus
BusName = org.fedoraproject.FirewallD1

[Install]
WantedBy = basic.target
Alias = dbus-org.fedoraproject.FirewallD1.service

[root@localhost]#

_systemd_と_systemctl_の両方をさらに詳しく調べたので、それらを使用して_cgroups_または_control groups_のリソースを管理しましょう。

Linux Admin-crgoupsによるリソース管理

_cgroups_またはコントロールグループはLinuxカーネルの機能であり、管理者はサービスおよびグループ化のためにシステムリソースを割り当てたり制限したりできます。

実行中のアクティブな_control groups_をリストするには、次の_ps_コマンドを使用できます-

[root@localhost]# ps xawf -eo pid,user,cgroup,args
8362 root     -                            \_ [kworker/1:2]
1 root        -                          /usr/lib/systemd/systemd --switched-
   root --system --    deserialize 21
507 root     7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-journald
527 root     7:cpuacct,cpu:/system.slice /usr/sbin/lvmetad -f
540 root     7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-udevd
715 root     7:cpuacct,cpu:/system.slice /sbin/auditd -n
731 root     7:cpuacct,cpu:/system.slice   \_/sbin/audispd
734 root     7:cpuacct,cpu:/system.slice       \_/usr/sbin/sedispatch
737 polkitd  7:cpuacct,cpu:/system.slice /usr/lib/polkit-1/polkitd --no-debug
738 rtkit    6:memory:/system.slice/rtki /usr/libexec/rtkit-daemon
740 dbus     7:cpuacct,cpu:/system.slice /bin/dbus-daemon --system --
   address=systemd: --nofork --nopidfile --systemd-activation

CentOS 6.Xの時点でのリソース管理は、_systemd init_実装で再定義されました。 サービスのリソース管理を考えるとき、主に注目すべきは_cgroups_です。 cgroups は、機能性とシンプルさの両方で_systemd_で進歩しました。

リソース管理におけるcgroupの目標は、1つのサービスがシステム全体をダウンさせることはできないことです。 または、単一のサービスプロセス(おそらく不十分に記述されたPHPスクリプト)が、リソースを消費しすぎてサーバー機能を損なうことはありません。

_cgroups_は、以下のリソースのユニットのリソース制御を許可します-

  • CPU -CPUを集中的に使用するタスクを、他のそれほど集中的ではないタスクとして制限しない
  • メモリ-サービスが消費できるメモリ量を制限する
  • ディスク-ディスクI/Oを制限する
    • CPU時間:**

より低いCPU優先度を必要とするタスクは、カスタム構成のCPUスライスを持つことができます。

たとえば、次の2つのサービスを見てみましょう。

ポライトCPUサービス1

[root@localhost]# systemctl cat polite.service
#/etc/systemd/system/polite.service
[Unit]
Description = Polite service limits CPU Slice and Memory
After=remote-fs.target nss-lookup.target

[Service]
MemoryLimit = 1M
ExecStart =/usr/bin/sha1sum/dev/zero
ExecStop =/bin/kill -WINCH ${MAINPID}
WantedBy=multi-user.target

#/etc/systemd/system/polite.service.d/50-CPUShares.conf
[Service]
CPUShares = 1024
[root@localhost]#

邪悪なCPUサービス2

[root@localhost]# systemctl cat evil.service
#/etc/systemd/system/evil.service
[Unit]
Description = I Eat You CPU
After=remote-fs.target nss-lookup.target

[Service]
ExecStart =/usr/bin/md5sum/dev/zero
ExecStop =/bin/kill -WINCH ${MAINPID}
WantedBy=multi-user.target

#/etc/systemd/system/evil.service.d/50-CPUShares.conf
[Service]
CPUShares = 1024
[root@localhost]#

より低いCPU優先度を使用してポライトサービスを設定しましょう-

systemctl set-property polite.service CPUShares = 20
/system.slice/polite.service
1   70.5   124.0K        -        -

/system.slice/evil.service
1   99.5   304.0K        -        -

ご覧のように、通常のシステムアイドル時間の間、両方の不正プロセスはまだCPUサイクルを使用しています。 ただし、タイムスライスが少なく設定されているのは、CPU時間の使用量が少ないことです。 これを念頭に置いて、より短いタイムスライスを使用すると、重要なタスクがシステムリソースにアクセスしやすくなることがわかります。

各リソースのサービスを設定するには、_set-property_メソッドは次のパラメータを定義します-

systemctl set-property name parameter=value
CPU Slices CPUShares
Memory Limit MemoryLimit
Soft Memory Limit MemorySoftLimit
Block IO Weight BlockIOWeight
Block Device Limit (specified in/volume/path) ) BlockIODeviceWeight
Read IO BlockIOReadBandwidth
Disk Write IO BlockIOReadBandwidth

ほとんどの場合、サービスは_CPU use Memory limits_、および_Read/Write IO_によって制限されます。

それぞれを変更した後、systemdをリロードしてサービスを再起動する必要があります-

systemctl set-property foo.service CPUShares = 250
systemctl daemon-reload
systemctl restart foo.service

CentOS LinuxでCGroupsを構成する

CentOS Linuxでカスタムcgroupを作成するには、最初にサービスをインストールして構成する必要があります。

  • ステップ1 *-libcgroupをインストールします(まだインストールされていない場合)。
[root@localhost]# yum install libcgroup
Package libcgroup-0.41-11.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost]#

ご覧のとおり、デフォルトでCentOS 7には_everything_インストーラーでlibcgroupがインストールされています。 最小インストーラーを使用するには、_libcgroup_ユーティリティーと依存関係をインストールする必要があります。

  • ステップ2 *-cgconfigサービスを開始して有効にします。
[root@localhost]# systemctl enable cgconfig
Created symlink from/etc/systemd/system/sysinit.target.wants/cgconfig.service
to/usr/lib/systemd/system/cgconfig.service.
[root@localhost]# systemctl start cgconfig
[root@localhost]# systemctl status cgconfig
● cgconfig.service - Control Group configuration service
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor
preset: disabled)
Active: active (exited) since Mon 2017-01-23 02:51:42 EST; 1min 21s ago
Main PID: 4692 (code=exited, status = 0/SUCCESS)
Memory: 0B
CGroup:/system.slice/cgconfig.service

Jan 23 02:51:42 localhost.localdomain systemd[1]: Starting Control Group
configuration service...
Jan 23 02:51:42 localhost.localdomain systemd[1]: Started Control Group
configuration service.
[root@localhost]#

Linux Admin-プロセス管理

以下は、Process Managementで使用される一般的なコマンドです。bg、fg、nohup、ps、pstree、top、kill、killall、free、uptime、nice。

プロセスを操作する

クイックノート:LinuxでのPIDの処理

Linuxでは、実行中のすべてのプロセスにPIDまたはプロセスID番号が付与されます。 この_PID_は、CentOSが特定のプロセスを識別する方法です。 前述したように、_systemd_は、CentOSで最初に開始され、PIDが1のプロセスです。

*Pgrep* は、特定のプロセス名のLinux PIDを取得するために使用されます。
[root@CentOS]# pgrep systemd
1
[root@CentOS]#

ご覧のとおり、_pgrep_コマンドはsystemdの現在のPIDを返します。

CentOSの基本的なCentOSプロセスとジョブ管理

Linuxでプロセスを操作する場合、コマンドラインで基本的なフォアグラウンド処理とバックグラウンド処理がどのように実行されるかを知ることが重要です。

  • fg -プロセスをフォアグラウンドにします
  • bg -プロセスをバックグラウンドに移動します
  • jobs -シェルに接続されている現在のプロセスのリスト
  • ctrl + z -現在のプロセスをスリープさせるためのCtrl + zキーの組み合わせ
  • -バックグラウンドでプロセスを開始します

シェルコマンド_sleep_の使用を開始しましょう。 sleep は、指定された時間だけスリープします:sleep

[root@CentOS ~]$ jobs

[root@CentOS ~]$ sleep 10 &
[1] 12454

[root@CentOS ~]$ sleep 20 &
[2] 12479

[root@CentOS ~]$ jobs
[1]-  Running                 sleep 10 &
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

今、最初の仕事を手前に持って行きましょう-

[root@CentOS ~]$ fg 1
sleep 10

フォローしている場合、フォアグラウンドジョブがシェルでスタックしていることに気付くでしょう。 次に、プロセスをスリープ状態にしてから、バックグラウンドで再度有効にします。

  • Ctrl + Zを押す
  • bg 1と入力して、最初のジョブをバックグラウンドに送信して開始します。
[root@CentOS ~]$ fg 1
sleep 20
^Z
[1]+  Stopped                 sleep 20

[root@CentOS ~]$ bg 1
[1]+ sleep 20 &

[root@CentOS ~]$

ノープ

シェルまたはターミナルから作業する場合、デフォルトでは、シェルが閉じられるか、ユーザーがログアウトすると、シェルに接続されているすべてのプロセスとジョブが終了することに注意してください。 _nohup_を使用している場合、ユーザーがログアウトするか、プロセスが接続されているシェルを閉じると、プロセスは引き続き実行されます。

[root@CentOS]# nohup ping www.google.com &
[1] 27299
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping
27299

[root@CentOS]# kill -KILL `pgrep ping`
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out
PING www.google.com (216.58.193.68) 56(84) bytes of data.
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

psコマンド

*ps* コマンドは、特定のプロセスのスナップショットを調査するために管理者によって一般的に使用されます。 _ps_は一般に_grep_とともに使用され、分析する特定のプロセスを除外します。
[root@CentOS ~]$ ps axw | grep python
762   ?        Ssl    0:01/usr/bin/python -Es/usr/sbin/firewalld --nofork -nopid
1296  ?        Ssl    0:00/usr/bin/python -Es/usr/sbin/tuned -l -P
15550 pts/0    S+     0:00 grep --color=auto python

上記のコマンドでは、_python_インタープリターを使用するすべてのプロセスが表示されます。 また、文字列_python_を探すgrepコマンドも結果に含まれていました。

以下は、_ps_で使用される最も一般的なコマンドラインスイッチです。

Switch Action
a Excludes constraints of only the reporting processes for the current user
x Shows processes not attached to a tty or shell
w Formats wide output display of the output
e Shows environment after the command
-e Selects all processes
-o User-defined formatted output
-u Shows all processes by a specific user
-C Shows all processes by name or process id
--sort Sorts the processes by definition

_nobody_ユーザーが使用中のすべてのプロセスを表示するには-

[root@CentOS ~]$ ps -u nobody
PID TTY          TIME CMD
1853 ?        00:00:00 dnsmasq

[root@CentOS ~]$

_firewalld_プロセスに関するすべての情報を表示するには-

[root@CentOS ~]$ ps -wl -C firewalld
F   S   UID   PID   PPID   C   PRI   NI   ADDR   SZ   WCHAN   TTY   TIME      CMD
0   S     0   762      1   0    80   0     -   81786  poll_s   ?   00:00:01 firewalld

[root@CentOS ~]$

どのプロセスが最もメモリを消費しているかを見てみましょう-

[root@CentOS ~]$ ps aux  --sort=-pmem | head -10
USER       PID   %CPU   %MEM   VSZ     RSS   TTY   STAT   START   TIME   COMMAND
cnetos     6130   0.7   5.7   1344512 108364  ?      Sl   02:16   0:29 /usr/bin/gnome-shell
cnetos     6449   0.0   3.4   1375872 64440   ?      Sl   02:16   0:00 /usr/libexec/evolution-calendar-factory
root       5404   0.6   2.1   190256  39920 tty1     Ssl+ 02:15   0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth/run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1
cnetos     6296   0.0   1.7   1081944 32136   ?      Sl   02:16   0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify
cnetos     6350   0.0   1.5   560728  29844   ?      Sl   02:16   0:01 /usr/bin/prlsga
cnetos     6158   0.0   1.4   1026956 28004   ?      Sl   02:16   0:00 /usr/libexec/gnome-shell-calendar-server
cnetos     6169   0.0   1.4   1120028 27576   ?      Sl   02:16   0:00 /usr/libexec/evolution-source-registry
root       762    0.0   1.4   327144  26724   ?      Ssl  02:09   0:01 /usr/bin/python -Es/usr/sbin/firewalld --nofork --nopid
cnetos     6026   0.0  1.4 1090832 26376      ?      Sl   02:16   0:00 /usr/libexec/gnome-settings-daemon

[root@CentOS ~]$

ユーザーの中心と形式ごとにすべてのプロセスを確認し、カスタム出力を表示します-

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm
   PID    USER     COMMAND
   5802  centos   gnome-keyring-d
   5812  cnetos   gnome-session
   5819  cnetos   dbus-launch
   5820  cnetos   dbus-daemon
   5888  cnetos   gvfsd
   5893  cnetos   gvfsd-fuse
   5980  cnetos   ssh-agent
   5996  cnetos   at-spi-bus-laun

pstreeコマンド

*pstree* は_ps_に似ていますが、あまり使用されません。 きれいなツリー形式でプロセスを表示します。
[centos@CentOS ~]$ pstree
  systemd─┬─ModemManager───2*[{ModemManager}]
          ├─NetworkManager─┬─dhclient
          │                └─2*[{NetworkManager}]
          ├─2*[abrt-watch-log]
          ├─abrtd
          ├─accounts-daemon───2*[{accounts-daemon}]
          ├─alsactl
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
          │                 └─3*[{at-spi-bus-laun}]
          ├─at-spi2-registr───2*[{at-spi2-registr}]
          ├─atd
          ├─auditd─┬─audispd─┬─sedispatch
          │        │         └─{audispd}
          │        └─{auditd}
          ├─avahi-daemon───avahi-daemon
          ├─caribou───2*[{caribou}]
          ├─cgrulesengd
          ├─chronyd
          ├─colord───2*[{colord}]
          ├─crond
          ├─cupsd

_pstree_からの合計出力は100行を超えることがあります。 通常、_ps_はより有用な情報を提供します。

topコマンド

*top* は、Linuxのパフォーマンスの問題をトラブルシューティングするときに最も頻繁に使用されるコマンドの1つです。 Linuxでのリアルタイムの統計とプロセスの監視に役立ちます。 以下は、コマンドラインから起動した場合の_top_のデフォルト出力です。
Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem

PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

topの実行中に使用される一般的な_hot keys_(_hot keys_は、シェルでtopが実行されているときにキーを押すことによりアクセスされます)。

Command Action
b Enables/disables bold highlighting on top menu
z Cycles the color scheme
l Cycles the load average heading
m Cycles the memory average heading
t Task information heading
h Help menu
Shift+F Customizes sorting and display fields

以下は、_top_の一般的なコマンドラインスイッチです。

Command Action
-o Sorts by column (can prepend with - or + to sort ascending or descending)
-u Shows only processes from a specified user
-d Updates the delay time of top
-O Returns a list of columns which top can apply sorting

_Shift + F_を使用して表示される上部の並べ替えオプション画面。 この画面では、_top_表示および並べ替えオプションをカスタマイズできます。

Fields Management for window 1:Def, whose current sort field is %MEM
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!

* PID     = Process Id             TGID    = Thread Group Id
* USER    = Effective User Name    ENVIRON = Environment vars
* PR      = Priority               vMj     = Major Faults delta
* NI      = Nice Value             vMn     = Minor Faults delta
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode
* %CPU    = CPU Usage              nsPID   = PID namespace Inode
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode
* COMMAND = Command Name/Line
PPID    = Parent Process pid
UID     = Effective User Id

top、ユーザー_rdc_のプロセスを表示し、メモリ使用量でソート-

 PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

有効なトップフィールドの表示(凝縮)-

[centos@CentOS ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID

killコマンド

*kill* コマンドは、PIDを介してコマンドシェルからプロセスを強制終了するために使用されます。 プロセスを_killing_する場合、送信するシグナルを指定する必要があります。 シグナルは、プロセスを終了する方法をカーネルに知らせます。 最も一般的に使用される信号は-
  • SIGTERM は、カーネルがプロセスに停止する必要があることを知らせるために暗示されています。 _SIGTERM_は、プロセスが正常に終了し、安全な終了操作を実行する機会を提供します。
  • SIGHUP ほとんどのデーモンは、_SIGHUP_を送信すると再起動します。 これは、構成ファイルに変更が加えられたときにプロセスでよく使用されます。
  • SIGKILL は、_SIGTERM_がプロセスのシャットダウンを要求するのと同等であるためです。 カーネルには、要求に準拠しないプロセスを終了するオプションが必要です。 プロセスがハングすると、_SIGKILL_オプションを使用してプロセスを明示的にシャットダウンします。

kill_で送信できるすべてのシグナルのリストについては、- l_オプションを使用できます-

[root@CentOS]# kill -l
1) SIGHUP           2) SIGINT         3) SIGQUIT        4) SIGILL         5) SIGTRAP
6) SIGABRT          7) SIGBUS         8) SIGFPE         9) SIGKILL       10) SIGUSR1
11) SIGSEGV        12) SIGUSR2       13) SIGPIPE       14) SIGALRM       15) SIGTERM
16) SIGSTKFLT      17) SIGCHLD       18) SIGCONT       19) SIGSTOP       20) SIGTSTP
21) SIGTTIN        22) SIGTTOU       23) SIGURG        24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM      27) SIGPROF       28) SIGWINCH      29) SIGIO         30) SIGPWR
31) SIGSYS         34) SIGRTMIN      35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4     39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9     44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10   55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6     59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1     64) SIGRTMAX

[root@CentOS rdc]#

_SIGHUP_を使用してシステムを再起動します。

[root@CentOS]# pgrep systemd
1
464
500
643
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1
464
500
643
15196
15197
15198

[root@CentOS]#
*pkill* を使用すると、管理者はプロセス名で_kill_シグナルを送信できます。
[root@CentOS]# pgrep ping
19450
[root@CentOS]# pkill -9 ping
[root@CentOS]# pgrep ping
[root@CentOS]#
*killall* はすべてのプロセスを強制終了します。 _killall_をrootとして使用すると、すべてのユーザーのすべてのプロセスが強制終了されるため、注意してください。
[root@CentOS]# killall chrome

無料のコマンド

*free* は、システムのメモリをすばやく確認するためによく使用される非常に単純なコマンドです。 使用済みの物理メモリとスワップメモリ​​の合計量が表示されます。
[root@CentOS]# free
             total       used      free      shared      buff/cache      available
Mem:        1879668     526284    699796     10304        653588          1141412
Swap:       3145724          0    3145724

[root@CentOS]#

素敵なコマンド

*nice* を使用すると、管理者はCPU使用率に関してプロセスのスケジューリング優先順位を設定できます。 良い点は、基本的にカーネルがプロセスまたはジョブのCPUタイムスライスをスケジュールする方法です。 デフォルトでは、プロセスにはCPUリソースへの平等なアクセス権が与えられていると想定されます。

まず、topを使用して、現在実行中のプロセスの良さを確認します。

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

_NI_で表される_NICE_列に注目します。 nicenessの範囲は、-20から正の19までの範囲です。 -20は最高の優先度を表します。

nohup nice --20 ping www.google.com &

renice

_renice_を使用すると、すでに実行されているプロセスの現在の優先順位を変更できます。

renice 17 -p 30727

上記のコマンドは、ping processコマンドの優先度を下げます。

Linux Admin-ファイアウォールのセットアップ

_firewalld_は、CentOS上のiptablesのデフォルトのフロントエンドコントローラーです。 _firewalld_フロントエンドには、生のiptablesよりも2つの主な利点があります-

  • チェーンとルールを抽象化するゾーンを簡単に構成して実装します。 *ルールセットは動的です。つまり、設定が変更および/または変更されても、ステートフル接続は中断されません。

_firewalld_はiptablesのラッパーであり、代わりではないことに注意してください。 カスタムのiptablesコマンドは_firewalld_で使用できますが、ファイアウォールの機能を壊さないようにfirewalldを使用することをお勧めします。

まず、_firewalld_が開始され、有効になっていることを確認しましょう。

[root@CentOS rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
 Docs: man:firewalld(1)
Main PID: 712 (firewalld)
  Memory: 34.7M
 CGroup:/system.slice/firewalld.service
       └─712/usr/bin/python -Es/usr/sbin/firewalld --nofork --nopid

firewalldはアクティブ(起動時に開始)であり、現在実行中です。 非アクティブまたは開始されていない場合は、使用できます-

systemctl start firewalld && systemctl enable firewalld

firewalldサービスが設定されたので、それが動作していることを確認しましょう。

[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#

firewalldサービスが完全に機能していることがわかります。

Firewalldは、_zones_の概念で動作します。 ゾーンは、ネットワークマネージャーを介してネットワークインターフェイスに適用されます。 これについては、_ネットワークの構成_で説明します。 ただし、現在のところ、デフォルトでは、デフォルトゾーンを変更すると、デフォルト状態の「デフォルトゾーン」に残っているネットワークアダプタが変更されます。

_firewalld_ですぐに使用できる各ゾーンを簡単に見てみましょう。

Sr.No. Zone & Description
1
  • drop*

低信頼レベル。 すべての着信接続とパケットはドロップされ、ステートフルネスを介して発信接続のみが可能です

2

block

着信接続には、要求が禁止されていることを開始者に知らせるicmpメッセージが返信されます

3

public

すべてのネットワークが制限されています。 ただし、選択した着信接続は明示的に許可できます

4

external

NAT用にfirewalldを構成します。 内部ネットワークはプライベートのままですが、到達可能です

5

dmz

特定の着信接続のみが許可されます。 DMZ分離のシステムに使用

6

work

デフォルトでは、システムが安全な作業環境にあると想定して、ネットワーク上のより多くのコンピューターを信頼します

7

hone

デフォルトでは、より多くのサービスがフィルタリングされていません。 システムがNFS、SAMBA、SSDPなどのサービスが使用されるホームネットワーク上にあると仮定します

8

trusted

ネットワーク上のすべてのマシンは信頼されています。 ほとんどの着信接続は自由に許可されます。 これは、インターネットに公開されるインターフェース用ではありません

使用する最も一般的なゾーンは、public、drop、work、およびhomeです。

各共通ゾーンが使用されるいくつかのシナリオは次のとおりです-

  • public -管理者が使用する最も一般的なゾーンです。 これにより、カスタム設定を適用し、LANでの操作に関するRFC仕様を順守することができます。
  • ドロップ-ドロップを使用するタイミングの良い例は、セキュリティ会議、パブリックWiFi、またはインターネットに直接接続されたインターフェイスです。 dropは、ICMPプローブを含むすべての未承諾リクエストが悪質であると想定します。 したがって、州外の要求は応答を受け取りません。 ドロップの欠点は、厳密なRFC準拠を必要とする特定の状況でアプリケーションの機能を損なう可能性があることです。
  • work -半セキュアな企業LAN上にいます。 すべてのトラフィックが中程度に安全であると想定できる場合。 これは、それがWiFiではなく、IDS、IPS、および物理セキュリティまたは802.1xが適切に実装されていることを意味します。 また、LANを使用している人々に精通している必要があります。
  • home -自宅のLANにいます。 すべてのシステムとLAN上のユーザーに対して個人的に責任を負います。 LAN上のすべてのマシンを知っていて、どれも侵害されていません。 多くの場合、信頼できる個人間でメディアを共有するための新しいサービスが提供され、セキュリティのために余分な時間をかける必要はありません。

ゾーンとネットワークインターフェイスは、1対多のレベルで機能します。 1つのネットワークインターフェイスには、一度に1つのゾーンしか適用できません。 一方、ゾーンは多くのインターフェイスに同時に適用できます。

利用可能なゾーンと、現在適用されているゾーンを見てみましょう。

[root@CentOS]# firewall-cmd --get-zones
 work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#

firewalldにカスタマイズされたルールを追加する準備はできましたか?

最初に、外部からポートスキャナーに対して、ボックスがどのように見えるかを見てみましょう。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#

ポート80への着信要求を許可しましょう。

最初に、デフォルトとして適用されているゾーンを確認します。

[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#

次に、ポート80を許可するルールを現在のデフォルトゾーンに設定します。

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#

ここで、ポート80接続を許可した後、ボックスをチェックしましょう。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT   STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#

現在、80までの未承諾トラフィックが許可されています。

デフォルトゾーンを_drop_に入れて、ポートスキャンがどうなるかを見てみましょう。

[root@CentOS]# firewall-cmd --set-default-zone=drop
success

[root@CentOS]# firewall-cmd --get-default-zone
drop

[root@CentOs]#

次に、より安全なゾーンでネットワークインターフェースを使用してホストをスキャンします。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#

現在、すべてが外部からフィルタリングされています。

以下に示すように、_drop_にある場合、ホストはICMP ping要求にも応答しません。

bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2

デフォルトのゾーンを_public_に再度設定してみましょう。

[root@CentOs]# firewall-cmd --set-default-zone=public
success

[root@CentOS]# firewall-cmd --get-default-zone
public

[root@CentOS]#

_public_の現在のフィルタリングルールセットを確認しましょう。

[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

[root@CentOS rdc]#

設定されているように、ポート80のフィルタールールは実行コンフィギュレーションのコンテキスト内にのみあります。 つまり、システムが再起動されるか、firewalldサービスが再起動されると、ルールは破棄されます。

すぐに_httpd_デーモンを設定するので、変更を永続的にしましょう-

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

これで、パブリックゾーンのポート80ルールは、再起動およびサービスの再起動後も保持されます。

以下は、_firewall-cmd_で適用される一般的なfirewalldコマンドです。

Command Action
firewall-cmd --get-zones Lists all zones that can be applied to an interface
firewall-cmd —status Returns the currents status of the firewalld service
firewall-cmd --get-default-zone Gets the current default zone
firewall-cmd --set-default-zone=<zone> Sets the default zone into the current context
firewall-cmd --get-active-zone Gets the current zones in context as applied to an interface
firewall-cmd --zone=<zone> --list-all Lists the configuration of supplied zone
firewall-cmd --zone=<zone> --addport=<port/transport protocol> Applies a port rule to the zone filter
--permanent Makes changes to the zone persistent. Flag is used inline with modification commands

これらは、_firewalld_の管理と設定の基本概念です。

CentOSでホストベースのファイアウォールサービスを構成することは、より高度なネットワークシナリオでは複雑なタスクになる可能性があります。 CentOSでの_firewalld_およびiptablesの高度な使用法と設定は、チュートリアル全体を使用できます。 ただし、日常的なタスクの大部分を完了するのに十分なはずの基本事項を示しました。

CentOS LinuxでPHPを構成する

PHPは、今日使用されている最も多機能なWeb言語の1つです。 CentOSに_LAMP_ Stackをインストールすることは、すべてのシステム管理者が実行する必要があるものであり、ほとんどの場合、後で実行する必要があります。

従来のLAMPスタックは、(L)inux(A)pache(M)ySQL(P)HPで構成されています。

CentOSの_LAMP Stack_には3つの主要なコンポーネントがあります-

  • Webサーバー
  • Web開発プラットフォーム/言語
  • データベースサーバー

注意-_LAMP Stack_という用語には、PostgreSQL、MariaDB、Perl、Python、Ruby、NGINX Webserverなどのテクノロジーも含まれます。

このチュートリアルでは、CentOS GNU Linuxの従来の_LAMP Stack_(Apache Webサーバー、MySQLデータベースサーバー、およびPHP)を使用します。

実際にMariaDBを使用します。 MySQL構成ファイル、データベース、およびテーブルはMariaDBに対して透過的です。 MariaDBは、MySQLではなく標準のCentOSリポジトリに含まれるようになりました。 これは、OracleがMySQLの開発を引き継いだため、ライセンスとオープンソースのコンプライアンスの制限によるものです。

最初に行う必要があるのは、Apacheのインストールです。

[root@CentOS]# yum install httpd
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
extras/7/x86_64/primary_d
| 121 kB  00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* extras: linux.mirrors.es.net
* updates: mirror.eboundhost.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package:
httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency:/etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Installed:
httpd.x86_64 0:2.4.6-45.el7.centos

Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos
mailcap.noarch 0:2.1.41-2.el7

Complete!
[root@CentOS]#

_httpd_サービスを設定しましょう。

[root@CentOS]# systemctl start httpd && systemctl enable httpd

次に、firewalldを介してWebサーバーにアクセスできるようにします。

bash-3.2# nmap -sS -p 1-1024 -T 5  -sV 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00054s latency).
Not shown: 1022 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.6 ((CentOS))

Service detection performed. Please report any incorrect results at
https://nmap.org/submit/.
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#

nmapサービスプローブで確認できるように、Apache WebサーバーはCentOSホストでリクエストをリッスンして応答しています。

MySQLデータベースサーバーをインストールする

[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

MariaDBの以下のリポジトリパッケージをインストールしています-

mariadb-server.x86_64

メインのMariaDBサーバーデーモンパッケージ。

mariadb-devel.x86_64

ファイルは、MySQL/MariaDB互換性を持つソースからコンパイルする必要があります。

mariadb.x86_64

コマンドラインからMariaDBサーバーを管理するためのMariaDBクライアントユーティリティ。

mariadb-libs.x86_64

MySQL/MariaDBサポートでコンパイルされた他のアプリケーションに必要なMariaDBの共通ライブラリ。

それでは、MariaDBサービスを開始して有効にしましょう。

[root@CentOS]# systemctl start mariadb
[root@CentOS]# systemctl enable  mariadb

-Apacheとは異なり、ホストベースのファイアウォール(firewalld)を介したMariaDBへの接続は有効にしません。 データベースサーバーを使用する場合、リモートソケットアクセスが特に必要でない限り、ローカルソケット接続のみを許可することがセキュリティのベストプラクティスと見なされます。

MariaDBサーバーが接続を受け入れていることを確認しましょう。

[root@CentOS#] netstat -lnt
Active Internet connections (only servers)
Proto     Recv-Q     Send-Q     Local Address        Foreign Address      State
tcp            0          0     0.0.0.0:3306         0.0.0.0:*            LISTEN
tcp            0          0     0.0.0.0:111          0.0.0.0:*            LISTEN
tcp            0          0     192.168.122.1:53     0.0.0.0:*            LISTEN
tcp            0          0     0.0.0.0:22           0.0.0.0:*            LISTEN
tcp            0          0     127.0.0.1:631        0.0.0.0:*            LISTEN
tcp            0          0     127.0.0.1:25         0.0.0.0:*            LISTEN

[root@CentOS rdc]#

ご覧のとおり、MariaDBはポート3306 tcpでリッスンしています。 ホストベースのファイアウォール(firewalld)は、ポート3306への着信接続をブロックします。

PHPのインストールと構成

[root@CentOS#]  yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64
&& php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64

一般的な互換性のために、次のphpパッケージをインストールすることをお勧めします-

  • php-common.x86_64
  • php-mysql.x86_64
  • php-mysqlnd.x86_64
  • php-pdo.x86_64
  • php-soap.x86_64
  • php-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php-
mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64

これは、/var/www/html/のApache webrootにあるシンプルなphpファイルです。

[root@CentOS]# cat/var/www/html/index.php
<html>
   <head>
      <title>PHP Test Page</title>
   </head>

   <body>
      PHP Install
      <?php
         echo "We are now running PHP on GNU Centos Linux!<br/>"
      ?>
   </body>
</html>

[root@CentOS]#

ページの所有グループを、httpデーモンが実行されているシステムユーザーに変更しましょう。

[root@CentOS]# chgrp httpd/var/www/html/index.php && chmod g+rx/var/www/html/index.php
---

ncatを介して手動で要求された場合。

bash-3.2# ncat 10.211.55.1 80
   GET/index.php
   HTTP/1.1 200 OK
   Date: Sat, 28 Jan 2017 12:06:02 GMT
   Server: Apache/2.4.6 (CentOS) PHP/5.4.16
   X-Powered-By: PHP/5.4.16
   Content-Length: 137
   Connection: close
   Content-Type: text/html; charset=UTF-8

<html>
   <head>
      <title>PHP Test Page</title>
   </head>

   <body>
      PHP Install
      We are now running PHP on GNU Centos Linux!<br/>
   </body>
</html>

bash-3.2#

PHPとLAMPは非常に人気のあるWebプログラミングテクノロジーです。 LAMPのインストールと構成は、CentOS管理者としてのニーズのリストに必ず掲載されます。 使いやすいCentOSパッケージは、ソースコードからApache、MySQL、およびPHPをコンパイルするのに多大な労力を費やしました。

CentOS LinuxでPythonをセットアップする

Pythonは、Linux(およびその他のオペレーティングシステム)でのスクリプトアプリケーションのコーディングの世界にプロ意識をもたらした、広く使用されているインタープリター言語です。 Perlがかつて業界標準であった場合、Pythonは多くの点でPerlを上回りました。

PythonとPerlの長所は次のとおりです-

  • 洗練の急速な進展
  • 言語に標準的なライブラリ
  • コードの可読性は言語定義で考慮されます
  • GUIサポートからWeb開発まで、あらゆるものに対応する多くのプロフェッショナルフレームワーク

PythonはPerlができることなら何でもできますが、多くの場合、より良い方法でできます。 PerlはまだLinux管理者のツールボックスの中でその位置を占めていますが、スキルセットとしてPythonを学ぶことは素晴らしい選択です。

Pythonの最大の欠点は、その長所に関連している場合があります。 歴史的に、Pythonはもともとプログラミングを教えるために設計されました。 時には、「読みやすい」および「正しいことをする」という中核的な基盤が、単純なコードを書くときに不要な複雑さを引き起こす可能性があります。 また、その標準ライブラリはバージョン2.Xから3.Xへの移行で問題を引き起こしました。

Pythonスクリプトは、実際にはCentOSのコアで、オペレーティングシステムの機能に不可欠な機能に使用されます。 このため、開発Python環境をCentOSのコアPython環境から分離することが重要です。

手始めに、現在Pythonの2つのバージョンがあります: Python 2.X および Python 3.X

バージョン2.Xは減価償却費で間近に迫っています(数年前から)が、どちらの段階もまだ稼働中です。 Pythonの2つのアクティブバージョンの理由は、基本的にバージョン2.Xの欠点を修正することでした。 これには、バージョン3.Xの一部のコア機能を、一部のバージョン2.Xスクリプトをサポートできない方法でやり直す必要がありました。

基本的に、この移行を克服する最善の方法は、3.X向けに開発し、レガシースクリプト用の最新の2.Xバージョンに追いつくことです。 現在、CentOS 7.Xはバージョン2.Xの半最新版に依存しています。

この記事の執筆時点では、Pythonの最新バージョンは 3.4.6 および 2.7.13 です。

これを混同したり、Pythonの結論を引き出したりしないでください。 Python環境のセットアップは本当に簡単です。 Pythonフレームワークとライブラリを使用すると、このタスクを実際に簡単に実行できます。

Python環境をセットアップする前に、健全な環境が必要です。 まず、CentOSのインストールが完全に更新されていることを確認し、いくつかのビルドユーティリティをインストールします。

  • ステップ1 *-CentOSを更新します。
[root@CentOS]# yum -y update
  • ステップ2 *-ビルドユーティリティをインストールします。
[root@CentOS]# yum -y groupinstall "development tools"
  • ステップ3 *-必要なパッケージをインストールします。
[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel

次に、現在のPython 2.Xおよび3.Xをソースからインストールする必要があります。

  • 圧縮アーカイブをダウンロードする
  • ファイルを抽出する
  • ソースコードをコンパイルする

_/usr/src/_にPythonインストールごとにビルドディレクトリを作成することから始めましょう

[root@CentOS]# mkdir -p/usr/src/pythonSource

では、それぞれのソースtarballをダウンロードしましょう-

[root@CentOS]# wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
[root@CentOS]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz

次に、アーカイブからそれぞれを抽出する必要があります。

  • ステップ1 *-xz-libsをインストールし、tarballを抽出します。
[root@CentOS]# yum install xz-libs
[root@CentOS python3]# xz -d ./*.xz
[root@CentOS python3]# ls
Python-2.7.13.tar  Python-3.6.0.tar
[root@CentOS python3]#
  • ステップ2 *-各tarballからインストーラーを展開します。
[root@CentOS]# tar -xvf ./Python-2.7.13.tar
[root@CentOS]# tar -xvf ./Python-3.6.0.tar
  • ステップ3 *-各ディレクトリを入力し、configureスクリプトを実行します。
[root@CentOS]# ./configure --prefix=/usr/local
root@CentOS]# make altinstall

- altinstall を使用し、インストールしないようにしてください。 これにより、CentOSとPythonの開発バージョンが分離されます。 そうしないと、CentOSの機能が破損する可能性があります。

コンパイルプロセスが開始されます。 コーヒー1杯を手に取り、完了するまで15分間休憩します。 Pythonに必要なすべての依存関係をインストールしたため、コンパイルプロセスはエラーなしで完了します。

Pythonの最新の2.Xバージョンがインストールされていることを確認しましょう。

[root@CentOS Python-2.7.13]#/usr/local/bin/python2.7 -V
Python 2.7.13
[root@CentOS Python-2.7.13]#

-Python 2.Xの開発環境を指すシェバン行の前に付ける必要があります。

[root@CentOS Python-2.7.13]# cat ver.py
#!/usr/local/bin/python2.7
import sys
print(sys.version)
[root@CentOS Python-2.7.13]# ./ver.py
2.7.13 (default, Jan 29 2017, 02:24:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

そのように、バージョン2.Xと3.Xには別々のPythonインストールがあります。 ここから、それぞれと pipvirtualenv などのユーティリティを使用して、Python環境の管理とパッケージのインストールの負担をさらに軽減できます。

CentOS LinuxでRubyを構成する

Rubyは、Web開発とLinux管理の両方に最適な言語です。 Rubyは、前述のすべての言語(PHP、Python、Perl)で見られる多くの利点を提供します。

Rubyをインストールするには、管理者がRuby環境を簡単にインストールして管理できるようにする_rbenv_を使用してブートストラップするのが最適です。

Rubyをインストールするもう1つの方法は、Rubyの標準CentOSパッケージです。 _rbenv_メソッドをすべての利点とともに使用することをお勧めします。 CentOSパッケージは、Rubyに詳しくない人にとっては簡単です。

まず、rbenvインストーラーに必要な依存関係を取得しましょう。

  • git-core
  • zlib
  • zlib-devel
  • gcc-c ++
  • パッチ
  • 読み込まれた行
  • readline-devel
  • libyaml-devel
  • libffi-devel
  • openssl-devel
  • make
  • bzzip2
  • autoconf
  • オートメイク
  • libtool
  • バイソン
  • curl
  • sqlite-devel

これらのパッケージのほとんどは、CentOSのインストール時に選択したオプションと役割に応じて、すでにインストールされている場合があります。 依存関係を必要とするパッケージをインストールする際の頭痛の種が減るので、不明な点をすべてインストールすることをお勧めします。

[root@CentOS]# yum -y install git-core zlib zlib-devel gcc-c++ patch readline
readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf
automake libtool bison curl sqlite-devel

方法1:動的Ruby開発環境のrbenv

今_Ruby_を使用するユーザーとして-

[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git
[rdc@CentOS ~]$  https://github.com/rbenv/ruby-build.git

ruby-buildは_rbenv_にインストール機能を提供します-

注意-_install.sh_を実行する前に、rootまたは管理ユーザーに切り替える必要があります

[rdc@CentOS ruby-build]$ cd ~/ruby-build
[rdc@CentOS ruby-build]# ./install.sh

シェルをrbenvに設定し、正しいオプションをインストールしたことを確認しましょう。

[rdc@CentOS ~]$ source ~/rbenv/rbenv.d/exec/gem-rehash.bash

[rdc@CentOS ruby-build]$ ~/rbenv/bin/rbenv
rbenv 1.1.0-2-g4f8925a
Usage: rbenv <command> [<args>]

いくつかの便利なrbenvコマンドは-

Commands Action
local Sets or shows the local application-specific Ruby version
global Sets or shows the global Ruby version
shell Sets or shows the shell-specific Ruby version
install Installs a Ruby version using ruby-build
uninstall Uninstalls a specific Ruby version
rehash Rehashes rbenv shims (run this after installing executables)
version Shows the current Ruby version and its origin
versions Lists all Ruby versions available to rbenv
which Displays the full path to an executable
whence Lists all Ruby versions that contain the given executable

今Rubyをインストールしましょう-

[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1

コンパイルが完了した後-

[rdc@CentOS ~]$ ./ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
[rdc@CentOS ~]$

現在、Ruby 2.Xブランチの更新された動作バージョンを備えた動作するRuby環境があります。

方法2:CentOSパッケージからRubyをインストールする

これが最も簡単な方法です。 ただし、CentOSからパッケージ化されたバージョンとgemによって制限される場合があります。 深刻な開発作業のために、_rbenv_メソッドを使用してRubyをインストールすることを強くお勧めします。

Ruby、必要な開発パッケージ、およびいくつかの一般的なgemをインストールします。

[root@CentOS rdc]# yum install -y ruby.x86_64 ruby-devel.x86_64 ruby-
libs.x86_64 ruby-gem-json.x86_64 rubygem-rake.noarch

残念ながら、Rubyのやや古いバージョンが残っています。

[root@CentOS rdc]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@CentOS rdc]#

Linux Admin-CentOS Linux用のPerlのセットアップ

*Perl* は長い間存在しています。 もともとは、テキストファイルの解析に使用されるレポート言語として設計されました。 人気が高まるにつれて、PerlはモジュールサポートまたはCPAN、ソケット、スレッド、および強力なスクリプト言語に必要なその他の機能を追加しました。

PHPの最大の利点は、PHP、Python、またはRubyに対するPerlの最大の利点です。 Perlのこの哲学は、常に物事が正しい方法で行われることを意味するわけではありません。 ただし、Linuxの管理タスクでは、Perlはスクリプト言語の重要な選択肢と見なされます。

PythonやRubyに対するPerlの利点は次のとおりです-

  • 強力なテキスト処理
  • Perlを使用すると、スクリプトをすばやく作成できます(通常、Perlスクリプトは、PythonまたはRubyの同等のものよりも数十行短くなります)
  • Perlは何でもできます(ほぼ)

Perlのいくつかの欠点は次のとおりです-

  • 構文はわかりにくい場合があります
  • Perlのコーディングスタイルはユニークで、コラボレーションが行き詰まる可能性があります
  • Perlは実際にはオブジェクト指向ではありません
  • 通常、Perlを使用する場合の標準化とベストプラクティスについてはあまり考慮されていません。

Perl、Python、またはPHPのいずれを使用するかを決定するとき。次の質問をする必要があります-

  • このアプリケーションにバージョン管理が必要になることはありますか?
  • 他の人はコードを変更する必要がありますか?
  • 他の人はこのアプリケーションを使用する必要がありますか? *このアプリケーションを別のマシンまたはCPUアーキテクチャで使用することはありますか?

上記のすべてに対する答えが「いいえ」の場合、Perlが適切な選択であり、最終結果の観点から物事をスピードアップする可能性があります。

これで、CentOSサーバーを最新バージョンのPerlを使用するように構成しましょう。

Perlをインストールする前に、Perlのサポートを理解する必要があります。 公式には、Perlは最後の2つの安定バージョンとしてのみサポートされています。 そのため、開発環境をCentOSバージョンから分離しておく必要があります。

分離の理由は、誰かがPerlのツールをCentOSコミュニティにリリースした場合、CentOSに同梱されているPerlで動作するように修正される可能性が高いからです。 ただし、開発目的で最新バージョンをインストールする必要もあります。 Pythonと同様、CentOSは、最先端ではなく信頼性に重​​点を置いたPerlを出荷しています。

CentOS 7でのPerlの現在のバージョンを確認しましょう。

[root@CentOS]# perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

現在、Perl 5.16.3を実行しています。 このドキュメントの執筆時点での最新バージョンは、_perl-5.24.0_です。

コードで最新のPerlモジュールを使用できるように、バージョンをアップグレードすることは間違いありません。 幸いなことに、Perl環境を維持し、CentOSバージョンのPerlを分離した状態に保つための優れたツールがあります。* perlbrew *と呼ばれます。

Perl Brewをインストールしましょう。

[root@CentOS]# curl -L https://install.perlbrew.pl | bash
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100   170  100   170    0     0    396      0 --:--:-- --:--:-- --:--:--   397
100  1247  100  1247    0     0   1929      0 --:--:-- --:--:-- --:--:--  1929

Perl Brewがインストールされたので、Perlの最新バージョン用の環境を作りましょう。

最初に、perlbrewインストールをブートストラップするために、現在インストールされているバージョンのPerlが必要になります。 したがって、CentOSリポジトリからいくつかの必要なPerlモジュールを取得しましょう。

-利用可能な場合は、CentOS Perlのインストールで、CPANに対してCPANを常に使用する必要があります。

*ステップ1 *-CentOS Perl Make
Makerモジュールをインストールします。
[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch
  • ステップ2 *-perlの最新バージョンをインストールします。
[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc
[root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1

Perlのインストール用に選択したオプションは次のとおりです-

  • n -テストなし
  • j4 -インストールルーチン用に4つのスレッドを並行して実行します(クアッドコアCPUを使用しています)
  • threads -Perlのスレッドサポートを有効にする

インストールが正常に実行されたら、最新のPerl環境に切り替えましょう。

[root@CentOS]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

A sub-shell is launched with perl-5.24.1 as the activated perl. Run 'exit' to finish it.

[root@CentOS]# perl -v

This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linuxthread-multi

(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the GNU General
Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on this system
using "man perl" or "perldoc perl".  If you have access to the Internet, point your
browser at http://www.perl.org/, the Perl Home Page.

[root@CentOS]#

perlbrew環境のコンテキスト内で実行されているperlバージョンを印刷する単純なperlスクリプト-

[root@CentOS]# cat ./ver.pl
#!/usr/bin/perl
print $^V . "\n";
[root@CentOS]# perl ./ver.pl
v5.24.1
[root@CentOS]#

perlをインストールしたら、perl brewのcpanmでcpanモジュールをロードできます-

[root@CentOS]# perl-brew install-cpanm

では、_cpanm_インストーラーを使用して、perl brewの現在のPerlバージョン5.24.1でLWPモジュールを作成しましょう。

  • ステップ1 *-現在のPerlバージョンのコンテキストに切り替えます。
[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

アクティブ化されたperlとしてperl-5.24.1でサブシェルが起動されます。 「終了」を実行して終了します。

[root@CentOS ~]#
  • ステップ2 *-LWPユーザーエージェントPerlモジュールをインストールします。
[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent
  • ステップ3 *-新しいCPANモジュールを使用してPerl環境をテストしましょう。
[root@CentOS ~]# cat ./get_header.pl
#!/usr/bin/perl
use LWP;
my $browser = LWP::UserAgent->new();
my $response = $browser->get("http://www.slcc.edu/");
unless(!$response->is_success) {
   print $response->header("Server");
}

[root@CentOS ~]# perl ./get_header.pl
Microsoft-IIS/8.5 [root@CentOS ~]#

そこにあります! Perl Brewを使用すると、perl環境を簡単に分離でき、Perlを使用する場合のベストプラクティスと見なすことができます。

Open LDAPのインストールと構成

*Lightweight Directory Access Protocol* と呼ばれるLDAPは、ディレクトリから認識されるエンタープライズ内のX.500サービスコンテナーにアクセスするために使用されるプロトコルです。 Windows Server Administrationに精通している人は、LDAPが本質的にActive Directoryに非常に似ていると考えることができます。 これは、WindowsワークステーションをOpenLDAP CentOSエンタープライズに絡めるという広く使用されている概念です。 もう1つのスペクトルでは、CentOS Linuxワークステーションはリソースを共有し、Windowsドメインの基本機能に参加できます。

LDAPをCentOSにDirectory Server Agent、Directory System Agent、またはDSA(これらの頭字語はすべて同一)として展開することは、NDSでディレクトリツリー構造を使用する古いNovell Netwareインストールに似ています。

LDAPの簡単な歴史

LDAPは基本的に、エンタープライズリソースを使用してX.500ディレクトリにアクセスする効率的な方法として作成されました。 X.500とLDAPは両方とも同じ特性を共有しているため、LDAPクライアントはいくつかのヘルパーでX.500ディレクトリにアクセスできます。 LDAPには、 slapd という独自のディレクトリサーバーもあります。 _LDAP_と_DAP_の主な違いは、軽量バージョンはTCP上で動作するように設計されていることです。

_DAP_は完全なOSIモデルを使用します。 今日のネットワークにおけるインターネット、TCP/IP、およびイーサネットの出現により、特定のレガシーコンピューティングモデル以外のDAPとネイティブX.500エンタープライズディレクトリの両方を使用したディレクトリサービスの移植に遭遇することはほとんどありません。

CentOS Linuxのopenldapで使用される主なコンポーネントは次のとおりです-

openldap LDAP support libraries
openldap-server LDAP server
openldap-clients LDAP client utlities
openldap-devel Development libraries for OpenLDAP
compay-openldap OpenLDAP shared libraries
slapd Directory server daemon of OpenLDAP
slurpd Used for LDAP replication across an enterprise domain

-エンタープライズに名前を付けるときは、 。local TLDを使用することをお勧めします。 .net_または.com_を使用すると、オンラインドメインインフラストラクチャと内部ドメインインフラストラクチャを分離するときに問題が発生する可能性があります。 外部操作と内部操作の両方に_acme.com_を使用している企業の追加作業を想像してください。 したがって、_acme.com_または_acme.net_と呼ばれるインターネットリソースを用意するのが賢明です。 次に、ローカルネットワーキングエンタープライズリソースは_acme.local_として示されます。 これにはDNSレコードの構成が必要になりますが、単純さ、雄弁さ、セキュリティが犠牲になります。

CentOSにOpen LDAPをインストールする

_YUM_からopenldap、openldap-servers、openldap-clients、migrationstoolsをインストールします。

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00

 Dependencies Resolved

===============================================================================
===============================================================================
Package                                Arch
Version                             Repository                        Size
===============================================================================
===============================================================================
Installing:
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M

Transaction Summary
===============================================================================
===============================================================================
Install  2 Packages

Total download size: 2.3 M
Installed size: 5.3 M
Downloading packages:

Installed:
openldap-clients.x86_64 0:2.4.40-13.el7
openldap-servers.x86_64 0:2.4.40-13.el7
Complete!
[root@localhost]#

さて、_slapd_サービスを開始して有効にしましょう-

[root@centos]# systemctl start slapd
[root@centos]# systemctl enable  slapd

この時点で、openldap_構造が/etc/openldap_にあることを確認しましょう。

root@localhost]# ls/etc/openldap/
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

次に、slapdサービスが実行されていることを確認します。

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd

[root@centos]#

次に、_Open LDAP_インストールを設定しましょう。

システム_ldap_ユーザーが作成されていることを確認してください。

[root@localhost]# id ldap
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

LDAP資格情報を生成します。

[root@localhost]# slappasswd
New password:
Re-enter new password:
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

slappasswdからの出力を保存する必要があります

Open LDAPを構成する

  • ステップ1 *-ドメインのLDAPを構成し、管理ユーザーを追加します。

最初に、openLDAP環境をセットアップします。 以下は、_ldapmodify_コマンドで使用するテンプレートです。

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=vmnet,dc=local
dn: olcDatabase = {2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
dn: olcDatabase = {2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: <output from slap

ldapmodifyコマンドを使用して、/etc/openldap/slapd.d/cn = config/olcDatabase = \ {1} monitor.ldifを変更します。

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:///-f/home/rdc/Documents/db.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase = {2}hdb,cn=config"
modifying entry "olcDatabase = {2}hdb,cn=config"
modifying entry "olcDatabase = {2}hdb,cn=config"

[root@localhost cn=config]#

変更されたLDAP構成を確認しましょう。

root@linux1 ~]# vi/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory:/var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k =
entryCSN: 20170215204423.726622Z#000000#000#000000
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

ご覧のとおり、LDAPエンタープライズの変更は成功しました。

次に、OpenLDAPの自己署名SSL証明書を作成します。 これにより、エンタープライズサーバーとクライアント間の通信が保護されます。

  • ステップ2 *-OpenLDAPの自己署名証明書を作成します。

_openssl_を使用して、自己署名SSL証明書を作成します。 OpenLDAPとの通信を保護する手順については、次の章「opensslでLDAP SSL証明書を作成する」に進んでください。 その後、SSL証明書が設定されると、OpenLDAPエンタープライズ設定が完了します。

  • ステップ3 *-証明書で安全な通信を使用するようにOpenLDAPを設定します。

次の情報を使用して_vim_で_certs.ldif_ファイルを作成します-

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile:/etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile:/etc/openldap/certs/youGeneratedKeyFile.pem

次に、再度_ldapmodify_コマンドを使用して、変更をOpenLDAP構成にマージします。

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:///-f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

最後に、OpenLADP構成をテストしましょう。

[root@centos]# slaptest -u
config file testing succeeded
[root@centos]#
  • ステップ4 *-slapdデータベースをセットアップします。
cp/usr/share/openldap-servers/DB_CONFIG.example/var/lib/ldap/DB_CONFIG &&
chown ldap:ldap/var/lib/ldap/*

OpenLDAPスキーマを更新します。

cosineおよびnis LDAPスキーマを追加します。

ldapadd -Y EXTERNAL -H ldapi:///-f/etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:///-f/etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:///-f/etc/openldap/schema/inetorgperson.ldif

最後に、エンタープライズスキーマを作成し、現在のOpenLDAP設定に追加します。

以下は、vmnet._local_と呼ばれるドメインと_ldapadm_と呼ばれるLDAP管理者に対するものです。

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: Group

最後に、これを現在のOpenLDAPスキーマにインポートします。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#
  • ステップ5 *-OpenLDAPエンタープライズユーザーを設定します。

_vim_またはお好みのテキストエディターを開き、次の形式をコピーします。 これは、「vmnet.local」LDAPドメインの「entacct」という名前のユーザーのセットアップです。

dn: uid=entacct,ou=People,dc=vmnet,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: entacct
uid: entacct
uidNumber: 9999
gidNumber: 100
homeDirectory:/home/enyacct
loginShell:/bin/bash
gecos: Enterprise User Account 001
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

保存された上記のファイルをOpenLdapスキーマにインポートします。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local"

[root@centos]#

ユーザーがLDAP Enterpriseにアクセスする前に、次のようにパスワードを割り当てる必要があります-

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct
,ou=People,dc=vmnet,dc=local"
*-s* は、ユーザーのパスワードを指定します
*-x* は、更新されたパスワードが適用されるユーザー名です
*-D* は、LDAPスキーマに対して認証するための「識別名」です。

最後に、エンタープライズアカウントにログインする前に、_OpenLDAP_エントリを確認しましょう。

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL
 #
 # entacct, People, vmnet.local
dn: uid=entacct,ou=People,dc=vmnet,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: entacct
uid: entacct
uidNumber: 9999
gidNumber: 100
homeDirectory:/home/enyacct
loginShell:/bin/bash
gecos: Enterprise User Account 001
userPassword:: e2NyeXB0fXg=
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

/etc/passwd_や/etc/groups_などをOpenLDAP認証に変換するには、移行ツールを使用する必要があります。 これらは_migrationtools_パッケージに含まれています。 次に、_/usr/share/migrationtools_にインストールします。

[root@centos openldap-servers]# ls -l/usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl
  • ステップ6 *-最後に、リクエストを処理できるように、slapdサービスへのアクセスを許可する必要があります。
firewall-cmd --permanent --add-service=ldap
firewall-cmd --reload

LDAPクライアントアクセスを構成する

LDAPクライアントアクセスを設定するには、クライアントにopenldap、open-ldapクライアント、およびnss_ldapのパッケージが必要です。

クライアントシステムのLDAP認証の構成は少し簡単です。

  • ステップ1 *-依存パッケージのインストール-
# yum install -y openldap-clients nss-pam-ldapd
  • ステップ2 *-_authconfig_を使用してLDAP認証を設定します。
authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update
  • ステップ3 *-nslcdサービスを再起動します。
systemctl restart  nslcd

Linux Admin-SSL証明書を作成する

TLSとSSLの背景

TLSはソケットレイヤーセキュリティの新しい標準であり、SSLを進めています。 TLSは、SSLを進化させる他のセキュリティおよびプロトコルラッパー機能により、より優れた暗号化標準を提供します。 多くの場合、TLSとSSLという用語は同じ意味で使用されます。 ただし、プロのCentOS管理者として、それぞれの違いと履歴に注意することが重要です。

_SSL_はバージョン3.0になります。 SSLは、Netscapeの下で業界標準として開発および推進されました。 NetscapeがAOL(90年代にアメリカオンラインとも呼ばれたISPとして人気)に買収された後、AOLはSSLのセキュリティ改善に必要な変更を実際に促進しませんでした。

バージョン3.1では、_SSL_テクノロジーがオープンシステム標準に移行し、_TLS_に変更されました。 _SSL_の著作権はまだAOLが所有しているため、新しい用語が作成されました: TLS-Transport Layer Security 。 したがって、_TLS_は実際には_SSL_とは異なることを認識することが重要です。 特に、古い_SSL_テクノロジーにはセキュリティの問題があり、一部は今日では廃止されていると考えられているためです。

注意-このチュートリアルでは、3.1以降のテクノロジについて話すときに_TLS_という用語を使用します。 次に、SSLテクノロジー3.0以前に固有のコメントを作成するときに_SSL_を使用します。

SSL vs TLSバージョン管理

次の表は、TLSとSSLのバージョン管理が互いにどのように関連するかを示しています。 _SSL_バージョン3.2に関して、数人が話すと聞きました。 しかし、彼らはおそらくブログを読むことから用語を得たでしょう。 プロの管理者として、常に標準の用語を使用したいと考えています。 したがって、_SSL_は過去の技術への参照である必要があります。 簡単なことで、CentOSの求職者を熟練したCSメジャーのように見せることができます。

TLS SSL
- 3.0
1.0 3.1
1.1 3.2
1.2 3.3

_TLS_は、今日のインターネットのユーザーにとって重要な2つの主要な機能を実行します。1つは、「認証」として知られる、パーティーの所有者を確認します。 2つ目は、このネイティブ機能を持たない上位レベルのプロトコル(ftp、http、電子メールプロトコルなど)のトランスポート層で*エンドツーエンド暗号化*を提供します。

1つ目は、_パーティが誰であるかを検証する_ことであり、エンドツーエンド暗号化としてセキュリティにとって重要です。 消費者が支払いを受けることを許可されていないWebサイトへの暗号化された接続を持っている場合、財務データは依然としてリスクにさらされています。 これは、すべてのフィッシングサイトが持つことのできないものです。適切に署名されたTLS証明書は、Webサイトオペレーターが信頼できるCAからのものであることを確認します

適切に署名された証明書を持っていないことを回避する方法は2つしかありません:自己署名証明書に対するWebブラウザの信頼をユーザーに許可するか、ユーザーが技術に詳しくなく、信頼できる証明書の重要性を知らないことを望みます機関(またはCA)。

このチュートリアルでは、「自己署名証明書」と呼ばれるものを使用します。 つまり、このWebサイトにアクセスするすべてのWebブラウザーでこの証明書にトラステッドステータスを明示的に与えることなく、ユーザーがサイトにアクセスすることを妨げるエラーが表示されます。 次に、自己署名証明書を使用してサイトにアクセスする前に、ユーザーにいくつかのアクションを実行させます。 セキュリティのために、これは良いことです。

opensslのインストールと構成

_openssl_は、TLSのオープンソース実装の標準です。 _openssl_は、Linux、BSDディストリビューション、OS Xなどのシステムで使用され、Windowsもサポートします。

opensslは、トランスポート層セキュリティを提供し、開発者向けの_Authentication_および_end-to-end encryption_の詳細なプログラミングを抽象化するため、重要です。 これが、TLSを使用するほぼすべてのオープンソースアプリケーションでopensslが使用される理由です。 また、Linuxのすべての最新バージョンにデフォルトでインストールされます。

デフォルトでは、_openssl_は少なくともバージョン5以降のCentOSにインストールする必要があります。 念のため、YUM経由で_openssl_をインストールしてみましょう。 YUMはパッケージが既にインストールされているかどうかを知らせるのに十分なインテリジェントであるため、インストールを実行します。 互換性の理由でCentOSの古いバージョンを実行している場合、_yum -y install_を実行すると、opensslが半最新のハートブリード脆弱性に対して確実に更新されます。

インストーラーを実行すると、実際に_openssl_の更新があることがわかりました。

[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved

===============================================================================
===============================================================================
 Package                               Arch
 Version                            Repository                        Size
===============================================================================
===============================================================================
Updating:
openssl                               x86_64
1:1.0.1e-60.el7_3.1                 updates                           713 k
Updating for dependencies:

OpenLDAPの自己署名証明書を作成する

これは、以前の_OpenLDAP_インストール用に自己署名を作成する方法です。

自己署名OpenLDAP証明書を作成します。

openssl req -new -x509 -nodes -out/etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365

[root@centos]# openssl req -new -x509 -nodes -out/etc/openldap/certs/vmnet.pem
-keyout/etc/openldap/certs/vmnet.pem -days 365
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:bob@bobber.net
[root@centos]#

これで、OpenLDAP証明書は_/etc/openldap/certs/_に配置されます。

[root@centos]# ls/etc/openldap/certs/*.pem
/etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem
[root@centos]#

ご覧のとおり、証明書とキーの両方が_/etc/openldap/certs/_ディレクトリにインストールされています。 最後に、それぞれが現在rootユーザーによって所有されているため、それぞれのパーミッションを変更する必要があります。

[root@centos]# chown -R  ldap:ldap/etc/openldap/certs/*.pem
[root@centos]# ls -ld/etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00/etc/openldap/certs/vmnetcert.pem
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00/etc/openldap/certs/vmnetkey.pem
[root@centos]#

Apache Webサーバーの自己署名証明書を作成する

このチュートリアルでは、Apacheがすでにインストールされていると仮定します。 別のチュートリアル(CentOSファイアウォールの構成)でApacheをインストールしました。今後のチュートリアルでは、Apacheの高度なインストールに進みます。 そのため、Apacheをまだインストールしていない場合は、フォローしてください。

次の手順を使用してApache HTTPdをインストールできたら-

  • ステップ1 *-Apache httpdサーバーのmod_sslをインストールします。

最初にmod_sslでApacheを設定する必要があります。 YUMパッケージマネージャーを使用すると、これは非常に簡単です-

[root@centos]# yum -y install mod_ssl

次に、Apacheデーモンをリロードして、Apacheが新しい構成を使用するようにします。

[root@centos]# systemctl reload httpd

この時点で、ApacheはローカルホストでTLS接続をサポートするように構成されています。

  • ステップ2 *-自己署名SSL証明書を作成します。

最初に、プライベートTLSキーディレクトリを設定しましょう。

[root@centos]# mkdir/etc/ssl/private
[root@centos]# chmod 700/etc/ssl/private/

-ルートのみがこのディレクトリへの読み取り/書き込みアクセス権を持っていることを確認してください。 ワールドリード/ライトアクセスでは、秘密鍵を使用して盗聴されたトラフィックを解読できます。

証明書とキーファイルを生成します。

[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/ssl/private/self-gen-apache.key -out/etc/ssl/certs/self-sign-apache.crt
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:

[root@centos]#

-登録済みのドメイン名がない場合は、サーバーのパブリックIPアドレスを使用できます。

私たちの証明書を見てみましょう-

[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
   Data:
      Version: 3 (0x2)
      Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
   Signature Algorithm: sha256WithRSAEncryption
   Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Validity
      Not Before: Feb 24 07:07:55 2017 GMT
      Not After : Feb 24 07:07:55 2018 GMT
   Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
         Public-Key: (2048 bit)
            Modulus:
               00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
               f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
               57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
               47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
               66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
               31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
               9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
               79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
               e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
               ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
               ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
               e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42:
               7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
               5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
               c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
               6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
               12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:

_openssl_コマンドで使用した各オプションの説明は次のとおりです-

Command Action
req -X509 Use X.509 CSR management PKI standard for key management.
-nodes Do not secure our certificate with a passphrase. Apache must be able to use the certificate without interruption of a passphrase.
-days 2555 Tells the validity of the certificate to 7 years or 2555 days. Time period can be adjusted as needed.
-newkey rsa:2048 Specified to generate both key and certificate using RSA at 2048 bits in length.

次に、クライアントとPFSをネゴシエートするためのDiffie-Helimanグループを作成します。

[centos#] openssl dhparam -out/etc/ssl/certs/dhparam.pem 2048

これには5〜15分かかります。

*Perfect Forward Secrecy* -秘密鍵が侵害された場合にセッションデータを保護するために使用されます。 これにより、クライアントとサーバー間で使用される、セッションごとに一意のキーが生成されます。

次に、Perfect Forward Secrecy構成を証明書に追加します。

[root@centos]# cat/etc/ssl/certs/dhparam.pem | tee -a/etc/ssl/certs/self-sign-apache.crt

キーと証明書ファイルを使用するようにApacheを構成する

_/etc/httpd/conf.d/ssl.conf_に変更を加えます-

_ssl.conf_に次の変更を加えます。 ただし、その前に元のファイルをバックアップする必要があります。 _vi_や_emcas_などの高度なテキストエディターで運用サーバーに変更を加える場合、編集を行う前に構成ファイルを常にバックアップすることをお勧めします。

[root@centos]# cp/etc/httpd/conf.d/ssl.conf ~/

ssl.confの動作確認済みのコピーをホームフォルダーのルートにコピーした後、編集を続けましょう。

  • 見つける
  • 次のようにDocumentRootとServerNameの両方を編集します。
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443
*DocumentRoot* これは、デフォルトのApacheディレクトリへのパスです。 このフォルダーには、Webサーバーまたはサイトのデフォルトページを要求するHTTPリクエストを表示するデフォルトページが必要です。
*ServerName* は、サーバーのIPアドレスまたはサーバーのホスト名のいずれかになるサーバー名です。 TLSの場合、ホスト名を使用して証明書を作成することをお勧めします。 OpenLdapチュートリアルから、ローカルエンタープライズドメインにcentosというホスト名を作成しました:_vmnet.local_

次に、次の行をコメントアウトします。

SSLプロトコル

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
 ~~~~> #SSLProtocol all -SSLv2

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
 ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

次に、Apacheに証明書と秘密/​​公開キーのペアの場所を知らせます。

自己署名証明書ファイルへのパスを指定します

#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile/etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile/etc/ssl/private/self-gen-apache.key

最後に、ポート443を介した_https_へのインバウンド接続を許可する必要があります。

Apache WebサーバーCentOS 7をインストールする

この章では、Apache HTTPサーバーがどのように存在したかについての背景について少し学び、CentOS Linux 7に最新の安定バージョンをインストールします。

Apache WebServerの簡単な歴史

Apacheは、古くから存在しているWebサーバーです。 実際、http自体の存在とほぼ同じ長さです!

Apacheは、NCSAとしても知られる国立スーパーコンピューティングアプリケーションセンターのかなり小さなプロジェクトとして始まりました。 90年代半ばには、「httpd」と呼ばれ、インターネット上で最も人気のあるWebサーバープラットフォームであり、市場シェアの約90%以上を占めていました。

現時点では、単純なプロジェクトでした。 熟練したI.T. Webマスターとして知られるスタッフは、WebサーバープラットフォームとWebサーバーソフトウェア、フロントエンドとバックエンドの両方のサイト開発の維持を担当していました。 httpdの中核は、プラグインまたは拡張機能として知られるカスタムモジュールを使用する機能でした。 ウェブマスターは、コアサーバーソフトウェアにパッチを作成するのに十分なスキルも備えていました。

90年代半ばの後半、httpdのシニア開発者およびプロジェクトマネージャーは、NCSAを離れて他のことをしました。 これにより、最も人気のあるWebデーモンが停滞状態になりました。

httpdの使用は非常に広範であったため、経験豊富なhttpdウェブマスターのグループは、httpdの将来を要求するサミットを求めました。 現在の安定したリリースに最適な拡張機能とパッチを調整して適用することが決定されました。 その後、現在のHTTPサーバーの祖父が誕生し、Apache HTTPサーバーと命名されました。

小さな既知の歴史的事実-アパッチは、アメリカ先住民の部族の戦士にちなんで命名されていません。 実際、それはひねりを加えて命名され、命名されました。多くの才能のあるコンピューター科学者による多くの修正(またはパッチ)から作られています:パッチ*または *Apache

CentOS Linux 7に現在の安定バージョンをインストールする

  • ステップ1 *-yumを介してhttpdをインストールします。
yum -y install httpd

この時点で、Apache HTTPサーバーはyumを介してインストールされます。

  • ステップ2 *-httpdのニーズに固有のhttpd.confファイルを編集します。

デフォルトのApacheインストールでは、Apacheの構成ファイルの名前は_httpd.conf_で、_/etc/httpd/_にあります。 それで、_vim_で開きましょう。

_vim_で開かれた_httpd.conf_の最初の数行-

#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directivesl>
# for a discussion of each configuration directive.

CentOSインストールでHTTPポート80からのHTTPリクエストを処理できるように、次の変更を行います。

リスニングホストとポート

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

ここから、特定のポートまたはIPアドレスでリッスンするようにApacheを変更します。 たとえば、8080などの代替ポートでhttpdサービスを実行する場合。 または、個別のIPアドレスを持つ複数のインターフェイスでWebサーバーを構成している場合。

聴く

ApacheがすべてのリッスンデーモンをすべてのIPアドレスにアタッチしないようにします。 これは、IPv6またはIPv4トラフィックのみの指定を停止するのに役立ちます。 または、マルチホームホスト上のすべてのネットワークインターフェイスにバインドすることもできます。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
Listen 10.0.0.25:80
#Listen 80

DocumentRoot

「ドキュメントルート」は、Apacheがサーバーにアクセスしたときにリクエストを処理するためのインデックスファイルを探すデフォルトのディレクトリです。http://ww38.yoursite.com/[http://www.yoursite.com/]が取得しますドキュメントルートからインデックスファイルを提供します。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
  • ステップ3 *-httpdサービスを開始して有効にします。
[root@centos rdc]# systemctl start httpd && systemctl reload httpd
[root@centos rdc]#
  • ステップ4 *-ポート80要求へのアクセスを許可するようにファイアウォールを構成します。
[root@centos]# firewall-cmd --add-service=http --permanent

Linux Admin-CentOS 7でのMySQLセットアップ

Maria DBで使用するためにCentOSを構成するときに簡単に触れたように、CentOS _7 yum_リポジトリにはネイティブMySQLパッケージはありません。 これを説明するには、MySQLがホストするリポジトリを追加する必要があります。

CentOS LinuxでのMariaDBとMySQL

注意すべきことの1つは、MySQLがMariaDBとは異なるベース依存関係のセットを必要とすることです。 また、MySQLを使用すると、CentOSの概念と哲学、つまり信頼性を最大限に高めるように設計された製品パッケージが破壊されます。

したがって、MariaとMySQLのどちらを使用するかを決定する際には、2つのオプションを検討する必要があります。現在のDBスキーマはMariaで機能しますか? MariaにMySQLをインストールすると、どのような利点がありますか?

Mariaコンポーネントは、MySQL構造に対して完全に透過的であり、ライセンスが改善されて効率が向上しています。 説得力のある理由がない限り、MariaDBを使用するようにCentOSを構成することをお勧めします。

CentOSでMariaを支持する最大の理由は次のとおりです-

  • ほとんどの人がMariaDBを使用します。 問題が発生した場合、Mariaのサポートがさらに受けられます。
  • CentOSはMariaと一緒に実行するように設計されています。 したがって、マリアはより良い安定性を提供します。
  • MariaはCentOSで公式にサポートされています。

MySQLリポジトリをダウンロードして追加する

MySQLリポジトリをダウンロードしてインストールします-

http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

  • ステップ1 *-リポジトリをダウンロードします。

リポジトリは、簡単にインストールできるようにrpmパッケージに便利にパッケージ化されています。 _wget_でダウンロードできます-

[root@centos]# wget http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   --2017-02-26 03:18:36--  http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   Resolving repo.mysql.com (repo.mysql.com)... 104.86.98.130
  • ステップ2 *-YUMからMySQLをインストールします。

_yum_パッケージマネージャーを使用して_MySQL_をインストールできるようになりました-

[root@centos]# yum -y install mysql-server
  • ステップ3 *-MySQLデーモンサービスを開始して有効にします。
[root@centos]# systemctl start mysql
[root@centos]# systemctl enable  mysql
  • ステップ4 *-MySQLサービスが稼働していることを確認します。
[root@centos]# netstat -antup | grep 3306
tcp6       0       0 :::3306       ::: *LISTEN       6572/mysqld
[root@centos]#

注-ファイアウォールルールは許可しません。* Unixドメインソケット*を使用するようにMySQLを構成することは一般的です。 これにより、LAMPスタックのWebサーバーのみがローカルでMySQLデータベースにアクセスできるようになり、データベースソフトウェアでの攻撃ベクトルの完全な次元が取り出されます。

Postfix MTAおよびIMAP/POP3をセットアップする

CentOS 7サーバーから電子メールを送信するには、最新のMail Transfer Agent(MTA)を構成するためのセットアップが必要です。 Mail Transfer Agentは、SMTPを介してシステムユーザーまたは企業のインターネットドメインに送信メールを送信するデーモンです。

このチュートリアルでは、デーモンをローカルで使用するための設定プロセスのみを説明しています。 業務用にMTAをセットアップするための高度な構成については詳しく説明しません。 これには、DNS、ブラックリストに登録されていない静的なルーティング可能なIPアドレスの取得、高度なセキュリティとサービス設定の構成などが含まれますが、これらに限定されません。 要するに、このチュートリアルは基本的な設定に慣れるためのものです。 インターネットに面したホストのMTA設定にはこのチュートリアルを使用しないでください。

セキュリティと管理の容易さの両方に焦点を合わせて、このチュートリアルのMTAとして Postfix を選択しました。 CentOSの古いバージョンにインストールされているデフォルトのMTAは、_Sendmail_です。 Sendmail はすばらしいMTAです。 ただし、著者の謙虚な意見では、PostfixはMTAに関する次の注意事項に対処するときに最適な場所を見つけます。 CentOSの最新バージョンでは、PostfixはデフォルトのMTAとしてSendmailに取って代わりました。

Postfixは、広く使用され、よく文書化されたMTAです。 積極的に維持および開発されています。 最小限の構成を念頭に置いて(これは単なるメールです)、システムリソースを使用して効率的です(これも単なるメールです)。

  • ステップ1 *-YUMパッケージマネージャーからPostfixをインストールします。
[root@centos]# yum -y install postfix
  • ステップ2 *-Postfix設定ファイルを設定します。

Postfix設定ファイルは_/etc/postfix/main.cf_にあります

単純なPostfix構成では、特定のホストに対して、ホスト名、ドメイン、発信元、inet_interfaces、および宛先を構成する必要があります。

ホスト名の設定-ホスト名は、Postfixホストの完全修飾ドメイン名です。 OpenLDAPの章では、CentOSボックスに「_vmnet.local_ドメイン上のcentos」という名前を付けました。 この章ではそれを守りましょう。

# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
myhostname = centos.vmnet.local

ドメインの設定-上記のように、このチュートリアルで使用するドメインは_vmnet.local_です

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
mydomain = vmnet.local

オリジンの設定-単一のサーバーとドメインのセットアップでは、次のセクションのコメントを外してデフォルトのPostfix変数を残すだけです。

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
myorigin = $myhostname
myorigin = $mydomain

ネットワークインターフェースを設定します-単一のネットワークインターフェースと、そのインターフェースに関連付けられているすべてのプロトコルとIPアドレスでPostfixをリッスンしたままにします。 これは、Postfixのデフォルト設定を有効にしておくだけで実行できます。

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all
  • ステップ3 *-PostfixのSASLサポートを設定します。

SASL認証のサポートがない場合、Postfixはローカルユーザーからのメールの送信のみを許可します。 または、ユーザーがローカルドメインから電子メールを送信すると、_relaying denied_エラーが発生します。

- SASL または Simple Application Security Layer Framework は、さまざまなアプリケーション層プロトコル間でさまざまな手法をサポートする認証用に設計されたフレームワークです。 認証メカニズムをアプリケーション層プロトコルに任せる代わりに、SASL開発者(および消費者)は、組み込みの利便性またはより安全な認証(安全なサービスへのアクセスと言えば)を持たない可能性のある高レベルのプロトコルに現在の認証プロトコルを活用します。

「cyrus-sasl *パッケージをインストールする

[root@centos]# yum -y install  cyrus-sasl
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 *base: repos.forethought.net
* extras: repos.dfw.quadranet.com
 * updates: mirrors.tummy.com
Package cyrus-sasl-2.1.26-20.el7_2.x86_64 already installed and latest version
Nothing to do

SASL認証用に_/etc/postfix/main.cf_を設定します

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

_main.conf_のSASLオプション

##Configure SASL Options Entries:
smtpd_sasl_auth_enable = yes
smptd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtp_sasl_type = dovecot
smtp_sasl_path = private/auth/etc
  • ステップ4 *-着信SMTPサービスを許可するようにFirewallDを構成します。
[root@centos]# firewall-cmd --permanent --add-service=smtp
success

[root@centos]# firewall-cmd --reload
success

[root@centos]#

次に、CentOSホストがポート25(SMTP)で要求を許可して応答していることを確認します。

Nmap scan report for 172.16.223.132
Host is up (0.00035s latency).
Not shown: 993 filtered ports
PORT    STATE  SERVICE
   20/tcp  closed ftp-data
   21/tcp  open   ftp
   22/tcp  open   ssh
   25/tcp  open   smtp
   80/tcp  open   http
   389/tcp open   ldap
   443/tcp open   https
MAC Address: 00:0C:29:BE:DF:5F (VMware)

ご覧のとおり、SMTPはリッスンしており、デーモンは内部LANからの要求に応答しています。

Dovecot IMAPおよびPOP3サーバーをインストールする

Dovecotは、小規模から大規模の組織の着信メールのニーズを処理するよう設計された安全なIMAPおよびPOP3サーバーです。 CentOSで多用されているため、CentOSおよびMTA SASLプロバイダーの受信メールサーバーをインストールおよび構成する例としてDovecotを使用します。

前述したように、DNSのMXレコードを構成したり、サービスがドメインのメールを処理できるようにする安全なルールを作成したりすることはありません。 したがって、これらのサービスをインターネットに接続しているホスト上に設定するだけで、SPFレコードのないセキュリティホールを活用する余地を残すことができます。

  • ステップ1 *-Dovecotをインストールします。
[root@centos]# yum -y install dovecot
  • ステップ2 *-dovecotを設定します。

dovecotのメイン設定ファイルは_/etc/dovecot.conf_にあります。 最初にメインの構成ファイルをバックアップします。 編集を行う前に、常に構成ファイルをバックアップすることをお勧めします。 このようにして、id(たとえば)改行はテキストエディターによって破壊され、何年もの変更が失われます。 現在のバックアップを運用環境にコピーするので、元に戻すのは簡単です。

_dovecot_のプロトコルとデーモンサービスを有効にする

# Protocols we want to be serving.
protocols = imap imaps pop3 pop3s

ここで、dovecotデーモンを有効にして起動時にリッスンする必要があります-

[root@localhost]# systemctl start  dovecot
[root@localhost]# systemctl enable dovecot

Dovecotが指定されたポートでローカルにリッスンしていることを確認しましょう:imap、pop3、imapセキュア、およびpop3セキュア。

[root@localhost]# netstat -antup | grep dovecot
 tcp        0        0 0.0.0.0:110        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:143        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:993        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:995        0.0.0.0:*        LISTEN        4368/dovecot
 tcp6       0        0 :::110                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::143                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::993                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::995                :::*          LISTEN        4368/dovecot

[root@localhost]#

ご覧のとおり、_dovecot_は、指定されたポートでIPv4およびIPv4をリッスンしています。

POP3 110
POP3s 995
IMAP 143
IMAPs 993

次に、ファイアウォールルールを作成する必要があります。

[root@localhost]# firewall-cmd --permanent --add-port=110/tcp
success

[root@localhost]# firewall-cmd --permanent --add-port=143/tcp
success

[root@localhost]# firewall-cmd --permanent --add-port=995/tcp
success

[root@localhost]# firewall-cmd --permanent --add-port=993/tcp
success

[root@localhost]# firewall-cmd --reload
success

[root@localhost]#

着信メールサーバーは、POP3 _、 POP3s IMAP_、および_IMAPs_の要求をLAN上のホストに受け入れています。

Port Scanning host: 192.168.1.143

   Open TCP Port:   21          ftp
   Open TCP Port:   22          ssh
   Open TCP Port:   25          smtp
   Open TCP Port:   80          http
   Open TCP Port:   110         pop3
   Open TCP Port:   143         imap
   Open TCP Port:   443         https
   Open TCP Port:   993         imaps
   Open TCP Port:   995         pop3s

Linux管理-匿名FTPのインストール

CentOSにFTPをインストールする前に、その使用とセキュリティについて少し学ぶ必要があります。 FTP は、コンピューターシステム間でファイルを転送するための非常に効率的で洗練されたプロトコルです。 FTPは数十年間使用され、洗練されてきました。 遅延のあるネットワーク上でファイルを効率的に転送する場合、または高速で転送する場合は、FTPが最適です。 SAMBAまたはSMBよりも優れています。

ただし、FTPにはいくつかのセキュリティ上の問題があります。 実際、いくつかの深刻なセキュリティ問題。 FTPは、非常に弱いプレーンテキスト認証方法を使用します。 このため、認証されたセッションは、ログインおよび転送セッションのエンドツーエンド暗号化にTLSが使用されるsFTPまたはFTPSに依存する必要があります。

上記の警告により、プレーンな古いFTPは今日でもビジネス環境で使用されています。 主な用途は、匿名FTPファイルリポジトリです。 これは、ファイルをダウンロードまたはアップロードするために認証が保証されない状況です。 匿名FTPの使用例は次のとおりです-

  • 大規模なソフトウェア会社は依然として匿名FTPリポジトリを使用しており、インターネットユーザーはシェアウェアとパッチをダウンロードできます。
  • インターネットユーザーが公開ドキュメントをアップロードおよびダウンロードできるようにします。
  • 一部のアプリケーションは、暗号化されたアーカイブログまたは構成ファイルをFTP経由でリポジトリに自動的に送信します。

したがって、CentOS管理者として、FTPをインストールおよび構成できることは、依然として設計されたスキルです。

*vsFTP* またはVery Secure FTP Daemonと呼ばれるFTPデーモンを使用します。 vsFTPはしばらくの間開発に使用されてきました。 安全で、インストールと設定が簡単で、信頼できるという評判があります。
  • ステップ1 *-YUMパッケージマネージャーでvsFTPdをインストールします。
[root@centos]# yum -y install vsftpd.x86_64
  • ステップ2 *-systemctlで起動時にvsFTPを開始するように設定します。
[root@centos]# systemctl start vsftpd
[root@centos]# systemctl enable vsftpd
Created symlink from/etc/systemd/system/multi-
user.target.wants/vsftpd.service to/usr/lib/systemd/system/vsftpd.service.
  • ステップ3 *-FTP制御および転送セッションを許可するようにFirewallDを構成します。
[root@centos]# firewall-cmd --add-service=ftp --permanent
success
[root@centos]#

FTPデーモンが実行されていることを確認してください。

[root@centos]# netstat -antup | grep vsftp
tcp6       0       0 :::21       :::*       LISTEN       13906/vsftpd
[root@centos]#
  • ステップ4 *-匿名アクセス用のvsFTPDを構成します。

ルートFTPディレクトリを作成する

[root@centos]# mkdir/ftp

FTPルートの所有者とグループを_ftp_に変更します

[root@centos]# chown ftp:ftp/ftp
Set minimal permissions for FTP root:

[root@centos]# chmod -R 666/ftp/

[root@centos]# ls -ld/ftp/
drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01/ftp/

[root@centos]#

この場合、ルートFTPツリー全体に対する読み取り/書き込みアクセス権をユーザーに付与しました。

_/etc/vsftpd/vsftpd.conf "_を構成します

[root@centos]# vim/etc/vsftpd/vsftpd.conf
# Example config file/etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.

_vsftp.conf_ファイルの次のディレクティブを変更します。

  • _anon_mkdir_write_enable = YES_のコメントを解除して、匿名アップロードを有効にします
  • chownはシステム_ftp_ユーザーが所有するファイルをアップロードしました + chown_uploads = YES + chown_username = ftp
  • vsftpが使用するシステムユーザーをftpユーザーに変更します:nopriv_user = ftp
  • ユーザーがサインインする前に読み取るカスタムバナーを設定します。 + ftpd_banner = Anonymous FTP Repoへようこそ。 すべての接続が監視および記録されます。
  • IPv4接続のみを設定しましょう- + listen = YES + listen_ipv6 = NO

ここで、変更を適用するには、vsftpサービスを再起動または_HUP_する必要があります。

[root@centos]# systemctl restart vsftpd

FTPホストに接続して、FTPデーモンが応答していることを確認しましょう。

[root@centos rdc]# ftp 10.0.4.34
Connected to localhost (10.0.4.34).
220 Welcome to our Anonymous FTP Repo. All connections are monitored and logged.
Name (localhost:root): anonymous
331 Please specify the password.
Password:
'230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Linux-admin-remote-management

Linux Admin-CentOSのトラフィック監視

CentOSトラフィックモニタリングの拡張機能を追加できるサードパーティ製ツールがいくつかあります。 このチュートリアルでは、メインのCentOSディストリビューションリポジトリとFedora EPELリポジトリにパッケージ化されているものに焦点を当てます。

管理者(何らかの理由で)がメインのCentOSリポジトリにツールのみを残している状況は常に存在します。 説明されているほとんどのユーティリティは、物理アクセスのシェルを持つ管理者が使用するように設計されています。 アクセス可能なweb-guiでトラフィックを監視する場合、ntop-ngやNagiosなどのサードパーティのユーティリティを使用するのが最善の選択肢です(そのような機能を最初から再作成するのではなく)。

構成可能な両方のweb-guiソリューションのさらなる調査については、調査を開始するためのいくつかのリンクを以下に示します。

LAN/WANシナリオのトラフィック監視

ナギオス

Nagiosは古くから存在しているため、試され、テストされています。 ある時点では、それはすべて無料でオープンソースでしたが、その後、エンタープライズの洗練の必要性をサポートするために、有料のライセンスモデルを備えたエンタープライズソリューションに進化しました。 したがって、Nagiosでロールアウトを計画する前に、オープンソースのライセンスバージョンがニーズを満たしていることを確認するか、企業予算を念頭に置いて支出を計画してください。

オープンソースのNagiosトラフィック監視ソフトウェアのほとんどは、https://www.nagios.org/[https://www.nagios.org]で見つけることができます。

Nagiousの要約された歴史については、公式のNagios Historyページをご覧ください:https://www.nagios.org/about/history/

*ntopng*

web-guiを介した帯域幅とトラフィックの監視を可能にするもう1つの優れたツールは、_ntopng_と呼ばれます。 _ntopng_はUnixユーティリティntopに似ており、LANまたはWAN全体のデータを収集できます。 管理、構成、およびチャート作成用のWeb GUIを提供すると、IT部門全体で使いやすくなります。

Nagiousと同様に、ntopngにはオープンソースと有料の両方のエンタープライズバージョンがあります。 _ntopng_の詳細については、Webサイトhttp://www.ntop.org/をご覧ください。

Fedora EPELリポジトリのインストール─Enterprise Linux用の追加パッケージ

トラフィックの監視に必要なツールにアクセスするには、EPELリポジトリを使用するようにCentOSシステムを構成する必要があります。

EPELリポジトリは、CentOSによって公式に維持またはサポートされていません。 ただし、CentOS、Fedora Core、Red Hat Linux Enterpriseのいずれにも含まれていないEnterprise Linuxの専門家が一般的に使用するパッケージに対処するため、Fedora Coreボランティアのグループによって管理されています。

注意-

EPELリポジトリはCentOSの公式ではないため、一般的な依存関係がある本番サーバーの互換性と機能を損なう可能性があります。 そのことを念頭に置いて、システムの重要なボックスに展開する前に、本番と同じサービスを実行する非本番サーバーで常にテストすることをお勧めします。

実際、CentOSで他のサードパーティリポジトリよりもEHELリポジトリを使用する最大の利点は、バイナリが汚染されていないことを確認できることです。 信頼できないソースのリポジトリを使用しないことをお勧めします。

以上のことから、公式のEPELリポジトリはCentOSで非常に一般的であるため、YUMを介して簡単にインストールできます。

[root@CentOS rdc]# yum -y install epel-release
 Loaded plugins: fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
 *base: repo1.dal.innoscale.net
* extras: repo1.dal.innoscale.net
 * updates: mirror.hmc.edu
Resolving Dependencies
   --> Running transaction check
   ---> Package epel-release.noarch 0:7-9 will be installed
   --> Finished Dependency Resolution
Dependencies Resolved
--{ condensed output }--

EPELリポジトリをインストールしたら、更新します。

[root@CentOS rdc]# yum repolist
Loaded plugins: fastestmirror, langpacks
epel/x86_64/metalink
|  11 kB  00:00:00
epel
| 4.3 kB  00:00:00
(1/3): epel/x86_64/group_gz
| 170 kB  00:00:00
(2/3): epel/x86_64/updateinfo
| 753 kB  00:00:01
(3/3): epel/x86_64/primary_db
--{ condensed output }--

この時点で、EPELリポジトリを構成し、使用する準備ができているはずです。 インターフェースの帯域幅監視のために_nload_をインストールすることから始めましょう。

このチュートリアルで焦点を当てるツールは次のとおりです-

  • nload
  • ntop
  • ifstst
  • iftop
  • vnstat
  • 純豚
  • ワイヤーシャーク
  • TCPダンプ
  • トレースルート

これらはすべて、Linux Enterprisesでトラフィックを監視するための標準です。 単純なものから高度なものまでの各範囲の使用法なので、WiresharkやTCP Dumpなどのツールについて簡単に説明します。

nloadをインストールして使用する

EPOSリポジトリをCentOSにインストールして構成すると、_nload_をインストールして使用できるようになります。 このユーティリティは、インターフェイスごとの帯域幅をリアルタイムでグラフ化するように設計されています。

他のほとんどの基本インストールと同様に、_nload_はYUMパッケージマネージャーを介してインストールされます。

[root@CentOS rdc]# yum -y install nload
Resolving Dependencies
--> Running transaction check
---> Package nload.x86_64 0:0.7.4-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
 Package                             Arch
 Version                           Repository                          Size
===============================================================================
===============================================================================
Installing:
 nload                               x86_64
 0.7.4-4.el7                        epel                                70 k
Transaction Summary
===============================================================================
===============================================================================
Install  1 Package
Total download size: 70 k
Installed size: 176 k
Downloading packages:
--{ condensed output }--

これで_nload_がインストールされ、それを使用するのは非常に簡単です。

[root@CentOS rdc]# nload enp0s5

_nload_は、指定されたインターフェイスを監視します。 この場合、enp0s5は、ネットワークトラフィックの負荷と総帯域幅使用量のために、ターミナルからリアルタイムでイーサネットインターフェイスになります。

NLoad

ご覧のように、_nload_は、指定されたインターフェイスからの着信データと発信データの両方をチャート化し、ハッシュマーク「#」でデータフローの物理表現を提供します。

描かれたスクリーンショットは、いくつかのバックグラウンドデーモントラフィックでロードされている単純なWebページのものです。

_nload_の一般的なコマンドラインスイッチは-

Command Action
-a Time period
-t Time update interval in milliseconds, the default is 500
-u Sets display of traffic measurement h
-U Sets total in/out traffic measurement units same options as -u

nloadの標準構文は次のとおりです-

nload [options] <interface>

インターフェイスが指定されていない場合、_nload_は最初のイーサネットインターフェイスを自動的に取得します。 メガバイト単位の合計データ入出力とメガビット単位の現在のデータ転送速度を測定してみましょう。

[root@CentOS rdc]# nload -U M -u m

メガビット単位の速度

現在のインターフェースに出入りするデータはメガビット/秒で測定され、各「Ttl」行は、合計データの出入りをメガバイトで表示します。

_nload_は、管理者がインターフェイスを通過したデータの量と、指定されたインターフェイスに現在出入りするデータの量を確認するのに役立ちます。

nloadを閉じずに他のインターフェイスを表示するには、左右の矢印キーを使用します。 これにより、システムで使用可能なすべてのインターフェイスが循環します。

_-m_スイッチを使用して複数のインターフェイスを同時に監視することが可能です-

[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5

load 2つのインターフェイスを同時に監視(loおよびenp0s5)-

ロード

Linux管理-ログ管理

systemdは、CentOS Linuxのシステムロギングの管理方法を変更しました。 システム上のすべてのデーモンがログエントリをソートおよびフィルタリングする主な方法として_tail_や_grep_などのツールを使用するよりも、個々の場所にログを配置する代わりに、 journald はシステムログの分析に単一の管理ポイントをもたらしました。

_systemd_ロギングの背後にある主なコンポーネントは、journal、jounralctl、およびjournald.confです。

_journald_はメインのロギングデーモンであり、_journald.conf_を編集することで構成されますが、_journalctl_は_journald_によって記録されたイベントの分析に使用されます。

_journald_によって記録されるイベントには、カーネルイベント、ユーザープロセス、およびデーモンサービスが含まれます。

正しいシステムタイムゾーンを設定する

_journalctl_を使用する前に、システム時刻が正しい時刻に設定されていることを確認する必要があります。 これを行うには、_timedatectl_を使用します。

現在のシステム時刻を確認しましょう。

[root@centos rdc]# timedatectl status
Local time: Mon 2017-03-20 00:14:49 MDT
Universal time: Mon 2017-03-20 06:14:49 UTC
RTC time: Mon 2017-03-20 06:14:49
Time zone: America/Denver (MDT, -0600)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
              Sun 2017-03-12 01:59:59 MST
              Sun 2017-03-12 03:00:00 MDT
Next DST change: DST ends (the clock jumps one hour backwards) at
              Sun 2017-11-05 01:59:59 MDT
              Sun 2017-11-05 01:00:00 MST

[root@centos rdc]#

現在、システムは現地時間帯に対応しています。 システムがそうでない場合、正しいタイムゾーンを設定しましょう。 設定を変更すると、CentOSは現在のタイムゾーンからのタイムゾーンオフセットを自動的に計算し、システムクロックをすぐに調整します。

_timedatectl_を使用してすべてのタイムゾーンを一覧表示します-

[root@centos rdc]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

これは、_timedatectl list-timezones_からの競合する出力です。 特定のローカルタイムゾーンを見つけるために、grepコマンドを使用することができます-

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York"
America/New_York
[root@centos rdc]#

CentOSで使用されるラベルは通常、スペースではなくアンダースコアを使用した国/地域です(New_York対 "New York")。

今、私たちのタイムゾーンを設定しましょう-

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

システムクロックは自動的に時刻を調整する必要があります。

journalctlを使用してログを分析する

_journalctl_を使用する場合の一般的なコマンドラインスイッチ-

Switch Action
-k Lists only kernel messages
-u Lists by specific unit (httpd, sshd, etc…​)
-b Boots the label offset
-o Logs the output format
-p Filters by log type (either name or number)
-F Fieldname or fieldnamevalue
--utc Time in UTC offset
--since Filter by timeframe

ブートログを調べる

最初に、CentOS Linuxのブートログを調べて構成します。 最初に気付くのは、CentOSはデフォルトでは、再起動後も持続するブートログを保存しないことです。

再起動インスタンスごとに起動ログを確認するには、次のコマンドを発行できます-

[root@centos rdc]# journalctl --list-boots
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#

システムを再起動すると、別のエントリが表示されます。

[root@centos rdc]# journalctl --list-boots
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT

[root@centos rdc]#

さて、最後のブートロギングインスタンスを調べてみましょう-

root@centos rdc]# journalctl -b -5
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64
(builder@kbuilder.dev.
Mar 19 22:01:57 localhost.localdomain kernel: Command line:
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

上記は、最後のブートからの要約された出力です。 また、数時間、数日、数週間、数か月、さらには年単位でブートログを参照することもできます。 ただし、デフォルトではCentOSは永続的なブートログを保存しません。 ブートログを永続的に保存できるようにするには、いくつかの構成変更を行う必要があります-

  • ブートログの中央ストレージポイントを作成する
  • 新しいログフォルダーに適切なアクセス許可を付与する
  • 永続的なロギング用にjournald.confを構成する

永続的なブートログのブート場所の構成

journald_が永続的なブートログを保存する最初の場所は/var/log/journal_です。 これはデフォルトでは存在しないため、作成しましょう-

[root@centos rdc]# mkdir/var/log/journal

今、ディレクトリに_journald_デーモンへの適切なアクセス許可を与えましょう-

systemd-tmpfiles --create --prefix/var/log/journal

最後に、journald_に永続的なブートログを保存するように指示します。 _vim_または好みのテキストエディターで、/etc/systemd/jounrald.conf "_を開きます。

# See journald.conf(5) for details.
[Journal]=Storage=peristent

関心のある行は、Storage = _です。 最初にコメント#_を削除してから、上記のように Storage = persistent に変更します。 CentOSシステムを保存して再起動し、_journalctl list-boots_を実行するときに複数のエントリがあるように注意してください。

-VPSプロバイダーからのような_machine-id_が絶えず変化すると、永続的なブートログの保存時に_journald_が失敗する可能性があります。 このようなシナリオには多くの回避策があります。 もっともらしいVPS回避策を見つけた人からの信頼できるアドバイスに従うよりも、CentOS管理フォーラムに投稿された現在の修正を熟読することをお勧めします。

特定のブートログを調べるには、_journald --list-boots_を使用して各オフセットを取得する必要があります。 したがって、2番目のブートログを確認するために使用します-

journalctl -b -2

ブートログオフセットが指定されていない_-b_のデフォルトは、最後のリブート後、常に現在のブートログになります。

ログタイプ別にログを分析する

_journald_からのイベントには番号が付けられ、7つの異なるタイプに分類されます-

0 - emerg   :: System is unusable
1 - alert   :: Action must be taken immediatly
2 - crit    :: Action is advised to be taken immediatly
3 - err     :: Error effecting functionality of application
4 - warning :: Usually means a common issue that can affect security or usilbity
5 - info    :: logged informtation for common operations
6 - debug   :: usually disabled by default to troubleshoot functionality

したがって、すべての警告を表示する場合は、_journalctl_を介して次のコマンドを発行できます-

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges:
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff]
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff]
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff]
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff]
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

上記は、システム上の過去4日間のすべての警告を示しています。

systemdでログを表示および閲覧する新しい方法は、慣れるのにほとんど練習や調査を必要としません。 ただし、さまざまな出力形式と、すべてのパッケージ化されたデーモンログをユニバーサルにする特別な注意事項があるため、受け入れる価値があります。 _journald_は、従来のログ分析方法よりも優れた柔軟性と効率性を提供します。

Linux Admin-バックアップと復元

標準バックアップ計画を展開するためのCentOS固有の方法を検討する前に、まず標準レベルのバックアップポリシーの一般的な考慮事項について説明しましょう。 最初に慣れたいのは、* 3-2-1バックアップルール*です。

3-2-1バックアップ戦略

業界全体で、3-2-1バックアップモデルという用語をよく耳にします。 これは、バックアップ計画を実施する際の非常に優れたアプローチです。 3-2-1は次のように定義されます。 3 データのコピー。たとえば、作業コピーがある場合があります。 rsyncを使用した冗長性のために設計されたCentOSサーバーに置かれたコピー。ローテーションされたオフサイトUSBバックアップは、バックアップサーバー上のデータから作成されます。 2 さまざまなバックアップメディア。 この場合、実際には3つの異なるバックアップメディアがあります。ラップトップまたはワークステーションのSSD上の作業コピー、RADI6アレイ上のCentOSサーバーデータ、およびUSBドライブに配置されたオフサイトバックアップです。 1 オフサイトのデータのコピー。 USBドライブを毎晩オフサイトで回転させています。 別の最新のアプローチは、クラウドバックアッププロバイダーです。

システム回復

_ベアメタルリストアプラン_は、CentOS管理者がすべてのデータを無傷で重要なシステムをオンラインにするために設計した単純なプランです。 100%のシステム障害と過去のすべてのシステムハードウェアの損失を想定した場合、管理者は、ユーザーデータを損なわずにダウンタイムを最小限に抑えてアップタイムを達成する計画を立てる必要があります。 Linuxで使用されるモノリシックカーネルは、システムイメージを使用したベアメタルリストアをWindowsよりもはるかに簡単にします。 Windowsがマイクロカーネルアーキテクチャを使用している場合。

通常、完全なデータの復元とベアメタルの復元は、主要な運用サーバーの稼働中の構成された運用ディスクイメージ、3-2-1ルールに準拠したユーザーデータの冗長バックアップなどの方法の組み合わせによって実現されます。 信頼できる会社の従業員へのアクセスが制限された、安全で耐火性の金庫に保存される可能性のある機密ファイルもあります。

ネイティブCentOSツールを使用したマルチフェーズ_ベアメタルリストア_および_データリカバリプラン_は、

  • dd構成済みサーバーの実動ディスクイメージを作成および復元する
  • すべてのユーザーデータの増分バックアップを作成するrsync
  • tarおよびgzipを使用して、ファイルの暗号化されたバックアップを管理者からのパスワードとメモとともに保存します。 通常、これはUSBドライブに配置し、暗号化して、シニアマネージャーがアクセスできる金庫にロックすることができます。 また、これにより、現在の管理者が宝くじに当選し、日当たりの良い島に姿を消した場合に、他の誰かが重要なセキュリティ資格情報を知ることができます。

システムがハードウェア障害または災害のためにクラッシュした場合、以下は操作を復元するさまざまなフェーズになります-

  • 構成されたベアメタルイメージを使用して動作するサーバーを構築する
  • バックアップから作業サーバーにデータを復元する
  • 最初の2つの操作を実行するために必要な資格情報に物理的にアクセスできる

ファイルレベルのバックアップにrsyncを使用する

_rsync_は、ファイルのディレクトリをローカルまたは別のサーバーに同期するための優れたユーティリティです。 _rsync_はシステム管理者によって長年使用されてきたため、データのバックアップを目的として非常に洗練されています。 著者の意見では、_sync_の最も優れた機能の1つは、コマンドラインからスクリプトを作成できることです。

このチュートリアルでは、さまざまな方法でrsyncについて説明します-

  • いくつかの一般的なオプションについて調べて話し合う

  • ローカルバックアップを作成する

  • SSH経由でリモートバックアップを作成する

  • ローカルバックアップを復元する

    *rsync* の目的は_Remote Sync_であり、強力かつ柔軟に使用できます。

以下は、sshを介した基本的な_rsync_リモートバックアップです-

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
rdc@192.168.1.143:home/rdc/Documents/RemoteStuff/
rdc@192.168.1.143's password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

次の同期により、約2.3GBのデータがLAN経由で送信されました。 rsyncの利点は、ファイルごとにブロックレベルで段階的に機能することです。 つまり、1MBのテキストファイルで2文字だけを変更すると、次の同期で1つまたは2つのブロックのみがLANを介して転送されます。

さらに、CPU使用率を下げるために使用するネットワーク帯域幅を増やすために、インクリメンタル機能を無効にすることができます。 これは、1Gb専用のバックアップランで10分ごとに複数の10MBデータベースファイルを絶えずコピーする場合に推奨されます。 理由は次のとおりです。これらは常に変化し、10分ごとに徐々に送信され、リモートCPUの負荷に負担をかける可能性があります。 合計転送負荷は5分を超えないため、データベースファイル全体を同期することもできます。

以下は、_rsync_を使用した最も一般的なスイッチです-

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
Switch Action
-a Archive mode and assumes -r, -p, -t, -g, -l
-d Sync only directory tree, no files
-r Recursive into directory
-l Copy symlinks as symlinks
-p Preserve permissions
-g Preserve group
-v Verbose output
-z Compress over network link
-X Preserve extended attributes
-A Preserve ACLs
-t Preserve timestamps
-W Transfer whole file, not incremental blocks
-u Do not overwrite files on target
--progress Show transfer progress
--delete Delete older files on target
--max-size = XXX Max file size to sync

rsyncを使用する場合

_rsync_の個人的な好みは、ソースホストからターゲットホストにファイルをバックアップするときです。 たとえば、データ復旧のためのすべてのホームディレクトリ、または災害復旧のためのオフサイトおよびクラウドへのアクセス。

rsyncを使用したローカルバックアップ

あるホストから別のホストにファイルを転送する方法はすでに見ました。 同じ方法を使用して、ディレクトリとファイルをローカルで同期できます。

rootユーザーのディレクトリで_/etc/_の手動増分バックアップを作成しましょう。

最初に、同期バックアップ用に〜/rootからディレクトリを作成する必要があります-

[root@localhost rdc]# mkdir/root/etc_baks

次に、十分な空きディスク領域があることを確認します。

[root@localhost rdc]# du -h --summarize/etc/
49M   /etc/

[root@localhost rdc]# df -h
Filesystem           Size     Used     Avail    Use%     Mounted on
/dev/mapper/cl-root   43G      15G        28G    35%        /

/etc/ディレクトリ全体を同期するのに適しています-

rsync -aAvr/etc//root/etc_baks/

同期された/etc/ディレクトリ-

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

今、インクリメンタルrsyncをやってみましょう-

[root@localhost etc_baks]# rsync -aAvr --progress /etc//root/etc_baks/
sending incremental file list

test_incremental.txt
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)

sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

_test_incremental.txt_ファイルのみがコピーされました。

rsyncを使用したリモート差分バックアップ

バックアップ計画が展開されたサーバーに、最初のrsync完全バックアップを実行しましょう。 この例では、実際にMac OS Xワークステーション上のフォルダーをCentOSサーバーにバックアップしています。 _rsync_のもう1つの優れた側面は、rsyncが移植されたどのプラットフォームでも使用できることです。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143's password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

これで、ワークステーションのフォルダを、オフサイトに保存されたディザスタリカバリメディアが回転するRAID6ボリュームを実行しているサーバーにバックアップしました。 rsyncを使用すると、標準の3-2-1バックアップが得られ、高価な冗長ディスクアレイとローテーションされた差分バックアップを備えたサーバーが1台だけになりました。

_test_file.txt_という名前の新しいファイルが1つ追加された後、rsyncを使用して同じフォルダーの別のバックアップを実行しましょう。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143's password:
sending incremental file list
 ./
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

ご覧のとおり、_rsync_を介して新しいファイルのみがサーバーに配信されました。 差分比較はファイルごとに行われました。

注意すべき点がいくつかあります:これは、変更された唯一のファイルであるため、新しいファイルtest_file.txtのみをコピーします。 rsyncはsshを使用します。 どちらのマシンでもルートアカウントを使用する必要はありませんでした。

シンプルで強力かつ効果的な_rsync_は、フォルダ全体およびディレクトリ構造のバックアップに最適です。 ただし、_rsync_自体はプロセスを自動化しません。 ここで、ツールボックスを掘り下げて、仕事に最適な、小さくてシンプルなツールを見つける必要があります。

_cronjobs_を使用してrsyncバックアップを自動化するには、SSHユーザーを認証用のSSHキーを使用してセットアップすることが不可欠です。 これとcronjobsの組み合わせにより、rsyncを一定の間隔で自動的に実行できます。

ブロックごとのベアメタルリカバリイメージにDDを使用する

DDは、GNU Utilitiesを満たすLinuxカーネルのkernel明期から存在するLinuxユーティリティです。

_dd_は、最も簡単な用語で、選択したディスク領域のイメージをコピーします。 次に、物理ディスクの選択したブロックをコピーする機能を提供します。 したがって、バックアップがない限り、ddがディスクに書き込むと、すべてのブロックが置き換えられます。 以前のデータの損失は、高レベルのプロレベルのデータリカバリでさえ、リカバリ機能を超えています。

_dd_でブート可能なシステムイメージを作成するためのプロセス全体は次のとおりです-

  • ブート可能なLinuxディストリビューションでCentOSサーバーからブートします
  • イメージングするブート可能ディスクの指定を見つけます
  • リカバリイメージを保存する場所を決定する
  • ディスクで使用されているブロックサイズを見つける
  • ddイメージ操作を開始します

このチュートリアルでは、時間と簡略化のために、CentOS仮想マシンからマスターブートレコードのISOイメージを作成します。 その後、この画像をオフサイトに保存します。 MBRが破損して復元する必要がある場合、同じプロセスをブート可能なディスクまたはパーティション全体に適用できます。 ただし、必要な時間とディスク容量は、このチュートリアルでは実際より少し過剰になります。

CentOS管理者は、テスト環境で完全に起動可能なディスク/パーティションの復元に習熟し、ベアメタル復元を実行することをお勧めします。 マネージャーと数十人のエンドユーザーがダウンタイムを数えている現実の状況で、最終的に練習を完了する必要がある場合、これは多くのプレッシャーを取り除きます。 そのような場合、物事を10分間理解することは永遠のように思え、汗をかきます。

注意-ddを使用するときは、ソースボリュームとターゲットボリュームを混同しないようにしてください。 バックアップ場所をブートドライブにコピーすることにより、データとブート可能なサーバーを破壊できます。 または、非常に低いレベルのデータをDDでコピーすることにより、データを永久に破壊する可能性があります。

以下は、_dd_の一般的なコマンドラインスイッチとパラメーターです-

Switch Action
if= In file or source to be copied
of= Out file or the copy of the in file
bs Set both input and output block size
obs Set output file block size
ibs Set input file block size
count Set the number of blocks to copy
conv Extra options to add for imaging
Noerror Do not stop processing an error
sync Pads unfitted input blocks in the event of error or misalignment

ブロックサイズに関する注意-ddのデフォルトのブロックサイズは512バイトです。 これは、低密度のハードディスクドライブの標準ブロックサイズでした。 今日の高密度HDDは4096バイト(4kB)のブロックサイズに増加し、1TB以上のディスクに対応しています。 したがって、新しい大容量のハードディスクでddを使用する前に、ディスクブロックサイズを確認する必要があります。

このチュートリアルでは、_dd_を使用して運用サーバーで作業する代わりに、VMWareで実行されているCentOSインストールを使用します。 また、起動可能なUSBスティックを使用する代わりに、起動可能なLinux ISOイメージを起動するようにVMWareを構成します。

まず、_CentOS Gnome ISO_というタイトルのCentOSイメージをダウンロードする必要があります。 これはほぼ3GBであり、ブート可能なUSBサムドライブを作成し、トラブルシューティングおよびベアメタルイメージのために仮想サーバーインストールを起動するために、常にコピーを保持することをお勧めします。

他の起動可能なLinuxディストリビューションも同様に機能します。 Linux Mintは、優れたハードウェアサポートとメンテナンス用の洗練されたGUIディスクツールを備えているため、ブート可能なISOに使用できます。

CentOS GNOME Liveブータブルイメージは、http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.isoからダウンロードできます。

Linuxブート可能イメージからブートするようにVMWare Workstationインストールを構成しましょう。 手順は、OS X上のVMWare用です。 ただし、Linux、Windows、さらにはVirtual Box上のVMWare Workstationでも同様です。

-Virtual BoxやVMWare Workstationなどの仮想デスクトップソリューションを使用すると、CentOS管理タスクを学習するためのラボシナリオを設定するのに最適な方法です。 複数のCentOSインストールをインストールする機能を提供します。実際にはハードウェア構成がなく、管理に集中できます。また、変更を行う前にサーバーの状態を保存することもできます。

まず、仮想CD-ROMを構成し、仮想CentOSサーバーのインストールの代わりにISOイメージをブートに添付します-

ISOイメージ

今、起動ディスクを設定します-

起動ディスク

これで、起動時に仮想マシンがCentOSのブート可能なISOイメージから起動し、以前に構成された仮想CentOSサーバー上のファイルにアクセスできるようになります。

ディスクをチェックして、MBRのコピー元を確認します(圧縮された出力は次のとおりです)。

MiNt ~ # fdisk -l
Disk/dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 *512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes

Disk/dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1* 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes

_sda_と_sdb_の両方の物理ディスクを見つけました。 各ブロックのサイズは512バイトです。 そのため、ここで_dd_コマンドを実行して、SDA1上のMBRの最初の512バイトをコピーします。

これを行うための最良の方法は-

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls/mnt/sdb/
   mbr-iso.gz

[root@mint rdc]#

このように、マスターブートレコードの完全なイメージがあります。 ブートドライブのイメージを作成するのに十分なスペースがあれば、完全なシステムブートイメージを簡単に作成できます-

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

_conv = sync_は、物理メディアのバイトを揃える必要がある場合に使用されます。 この場合、正確な4Kアライメントが読み取れないと、ddがエラーになる場合があります(たとえば…​ 3Kだけのファイルですが、ディスク上で少なくとも4Kブロックを1つ取得する必要があります。 または、単に読み取りエラーが発生し、ddがファイルを読み取ることができません。) したがって、_conv = sync、noerror_を指定した_dd_は、3Kに、些細だが有用なデータを4Kブロックのアライメントで物理メディアにパディングします。 大規模な操作を終了させる可能性のあるエラーは表示されません。

ディスクからのデータを操作するときは、常に_conv = sync、noerror_パラメーターを含める必要があります。

これは、ディスクがTCPデータのようなストリームではないためです。 それらは、特定のサイズに揃えられたブロックで構成されています。 たとえば、512バイトのブロックがある場合、わずか300バイトのファイルには512バイトのディスクスペースが必要です(パーミッションやその他のファイルシステム情報などのiノード情報用に2ブロックが必要な場合があります)。

セキュアストレージにgzipとtarを使用する

gzipとtarは、CentOS管理者が使い慣れた2つのユーティリティです。 これらは、単にアーカイブを解凍するだけでなく、はるかに多くの目的で使用されます。

CentOS LinuxでGnu Tarを使用する

Tarは、Windowsの_winrar_に似たアーカイブユーティリティです。 その名前_Tape Archive_は_tar_と略され、ユーティリティをほとんどまとめています。 _tar_はファイルを取得し、論理的な利便性のためにアーカイブに配置します。 したがって、/etcに保存されている多数のファイルの代わりに。 バックアップとストレージの利便性のために、それらをアーカイブに「tar」するだけで済みます。

_tar_は、長年にわたってUnixおよびLinuxでアーカイブファイルを保存するための標準でした。 したがって、_gzip_または_bzip_とともにtarを使用することは、各システムのアーカイブのベストプラクティスと見なされます。

以下は、tarで使用される一般的なコマンドラインスイッチとオプションのリストです-

Switch Action
-c Creates a new .tar archive
-C Extracts to a different directory
-j Uses bzip2 compression
-z Uses gzip compression
-v Verbose show archiving progress
-t Lists archive contents
-f File name of the archive
-x Extracts tar archive

以下は、_tar_アーカイブを作成するための基本的な構文です。

tar -cvf [tar archive name]
  • tarを使用した圧縮メカニズムに関する注意*-tarを使用する場合は、gzipとbzip2の2つの一般的な圧縮スキームのいずれかに固執することをお勧めします。 gzipファイルはより少ないCPUリソースを消費しますが、通常はサイズが大きくなります。 bzip2は圧縮に時間がかかりますが、より多くのCPUリソースを使用します。ただし、最終ファイルサイズは小さくなります。

ファイル圧縮を使用するときは、標準のファイル拡張子を常に使用して、アーカイブを抽出するために必要な圧縮スキームを(試行錯誤による推測とは対照的に)自分自身を含む全員に知らせたいと思います。

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

Windowsボックスで、またはWindowsで使用するためにアーカイブを抽出する必要がある場合は、ほとんどの3文字の単一拡張子がWindowsとWindowsのみの管理者を混乱させるため、。tar.tbz_または.tar.gz_を使用することをお勧めします(ただし、それは時々望ましい結果です)

Macワークステーションからコピーしたリモートバックアップから_gzipped_ tarアーカイブを作成しましょう-

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

注意-すべてのファイルをアーカイブに直接追加する代わりに、フォルダー全体を_RemoteStuff_アーカイブしました。 これが最も簡単な方法です。 単純に、抽出時にディレクトリ_RemoteStuff_が抽出され、現在の作業ディレクトリ内のすべてのファイルが_./currentWorkingDirectory/RemoteStuff/_として抽出されます。

では、_/root/_ホームディレクトリ内のアーカイブを展開しましょう。

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

上記のように、すべてのファイルは、現在の作業ディレクトリ内の格納ディレクトリに単純に抽出されました。

[root@centos ~]# ls -l
total 2262872
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

gzipを使用してファイルバックアップを圧縮する

前述のとおり、-j *または *-z コマンドラインスイッチを使用して、tarからbzip2またはgzipを使用できます。 gzipを使用して個々のファイルを圧縮することもできます。 ただし、bzipまたはgzipを単独で使用しても、_tar_と組み合わせた場合ほど多くの機能は提供されません。

_gzip_を使用する場合、デフォルトのアクションは元のファイルを削除し、それぞれを.gz拡張子を追加した圧縮バージョンに置き換えます。

gzipの一般的なコマンドラインスイッチは次のとおりです-

Switch Action
-c Keeps files after placing into the archive
-l Get statistics for the compressed archive
-r Recursively compresses files in the directories
-1 thru 9 Specifies the compression level on a scale of 1 thru 9

いくつかのWindows O/S zipユーティリティのようなアーカイブ単位ではなく、ファイル単位で多かれ少なかれ_gzip_が機能します。 この主な理由は、_tar_がすでに高度なアーカイブ機能を提供しているためです。 _gzip_は、圧縮メカニズムのみを提供するように設計されています。

したがって、_gzip_を考えるときは、単一​​のファイルを考えてください。 複数のファイルを考えるときは、_tar_アーカイブを考えてください。 これを以前の_tar_アーカイブで調べてみましょう。

-熟練したLinuxの専門家は、tarアーカイブをtarballと呼ぶことがよくあります。

_rsync_バックアップから別の_tar_アーカイブを作成しましょう。

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

デモンストレーションのために、新しく作成したtarballを_gzip_し、gzip_に古いファイルを保持するように指示します。 デフォルトでは、- c_オプションなしで、gzipはtarアーカイブ全体を_.gz_ファイルに置き換えます。

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

gzip_を使用して-l_スイッチをテストしてみましょう。

[root@centos Documents]# gzip -l RemoteStuff.tar.gz
     compressed        uncompressed        ratio uncompressed_name
     2317140467          2326661120        0.4% RemoteStuff.tar

[root@centos Documents]#

_gzip_がWindows Zipユーティリティとどのように異なるかを示すために、テキストファイルのフォルダーでgzipを実行してみましょう。

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

次に、-rオプションを使用して、ディレクトリ内のすべてのテキストファイルを再帰的に圧縮します。

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz

[root@centos Documents]#

See? 予想していたものではありません。 元のテキストファイルはすべて削除され、それぞれが個別に圧縮されました。 この動作のため、単一ファイルで作業する必要がある場合は、_gzip_のみを考えるのが最善です。

tarballs_を使用して、_rsynced tarballを新しいディレクトリに抽出しましょう。

[root@centos Documents]# tar -C/tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

上記のように、tarballを/tmpディレクトリに解凍して解凍しました。

[root@centos Documents]# ls/tmp
hsperfdata_root
RemoteStuff

TarBallアーカイブの暗号化

災害復旧の場合に、組織の他の従業員がアクセスする必要のある安全なドキュメントを保存するためにtarballアーカイブを暗号化することは、扱いにくいコンセプトです。 これを行うには、基本的に3つの方法があります。GnuPGを使用するか、opensslを使用するか、サードパーティのユーティリティを使用します。

GnuPGは主に非対称暗号化用に設計されており、パスフレーズではなくID関連付けを念頭に置いています。 確かに、対称暗号化で使用できますが、これはGnuPGの主な長所ではありません。 したがって、元の人よりも多くの人がアクセスを必要とする場合は、物理的なセキュリティでアーカイブを保存するためにGnuPGを割引します(王国のすべてのキーをレバレッジとして保持している管理者から保護したい企業マネージャーなど)。

GnuPGのようなOpensslは、私たちが望むことをすることができ、CentOSに同梱されています。 しかし、繰り返しますが、私たちが望むことをするように特別に設計されたものではなく、セキュリティコミュニティでは暗号化が疑問視されています。

私たちの選択は、 7zip と呼ばれるユーティリティです。 7zipは_gzip_に似た圧縮ユーティリティですが、さらに多くの機能があります。 Gnu Gzipと同様に、7zipとその標準はオープンソースコミュニティにあります。 EHELリポジトリから7zipをインストールするだけです(次の章では、拡張エンタープライズリポジトリのインストールについて詳しく説明します)。

CentOSに7zipをインストールする

7zipは、EHELリポジトリがCentOSに読み込まれて設定されると、簡単にインストールできます。

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

簡単なことですが、7zipがインストールされており、tarballアーカイブ用に256ビットAES暗号化ですぐに使用できます。

7zを使用して、gzip圧縮されたアーカイブをパスワードで暗号化します。 そうするための構文は非常に簡単です-

7z a -p <output filename><input filename>

ここで、* a:アーカイブに追加し、-p:*暗号化してパスフレーズを要求します

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

これで、gzip圧縮されたtarballを256ビットAESで暗号化する.7zアーカイブができました。

注意-7zipは、パスワードとカウンターのSHA-256ハッシュを使用したAES 256ビット暗号化を使用し、キーの導出のために最大512K回繰り返されます。 複雑なキーが使用される場合、これは十分に安全でなければなりません。

アーカイブの暗号化と再圧縮のプロセスは、より大きなアーカイブではさらに時間がかかる場合があります。

7zipは、gzipやbzip2よりも多くの機能を備えた高度な製品です。 ただし、CentOSまたはLinuxの世界では標準ではありません。 したがって、他のユーティリティはできるだけ頻繁に使用する必要があります。

Linux Admin-システムアップデート

CentOS 7システムは3つの方法で更新できます-

  • 手動で
  • 自動的に *重大なセキュリティ問題のために手動で更新し、自動更新を構成します

実稼働環境では、実稼働サーバー用に手動で更新することをお勧めします。 または、少なくとも更新計画を確立して、管理者が業務に不可欠なサービスを保証できるようにします。

単純なセキュリティ更新プログラムは、管理者によるアップグレードと再構成を必要とする一般的なアプリケーションで再帰的な問題を引き起こす可能性があります。 そのため、最初に開発サーバーとデスクトップでテストする前に、実稼働環境で自動更新をスケジュールすることに疲れてください。

CentOS 7を手動で更新する

CentOS 7を更新するには、_yum_コマンドに慣れる必要があります。* yum *は、CentOS 7でパッケージリポジトリを処理するために使用されます。 _yum_は一般的に使用されるツールです-

  • CentOS 7 Linuxシステムを更新する
  • パッケージを検索
  • パッケージをインストールする *パッケージに必要な依存関係を検出してインストールする

_yum_を更新に使用するには、CentOSサーバーをインターネットに接続する必要があります。 ほとんどの構成では、ベースシステムをインストールし、_yum_を使用して、メインCentOSリポジトリにパッケージの追加機能を照会し、システムアップデートを適用します。

すでにいくつかのパッケージをインストールするために_yum_を利用しています。 _yum_を使用する場合は、常にrootユーザーとして行う必要があります。 または、rootアクセス権を持つユーザー。 _nano_と呼ばれる使いやすいテキストエディターを検索してインストールしましょう。

[root@centos rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.rackspace.com
 *epel: mirror.chpc.utah.edu
* extras: repos.forethought.net
 *updates: repos.forethought.net
======================================================================
      N/S matched: nano
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
 Name and summary matches only, use "search all" for everything.

[root@centos rdc]#

それでは、_nano_テキストエディタをインストールしましょう。

[root@centos rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
 *epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
 *updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package                             Arch
Version                          Repository                            Size
================================================================================
 Installing:
 nano                               x86_64
 2.3.1-10.el7                    base                                  440 k

Transaction Summary
Install  1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : nano-2.3.1-10.el7.x86_64
1/1
 Verifying  : nano-2.3.1-10.el7.x86_64
1/1
Installed:
 nano.x86_64 0:2.3.1-10.el7

Complete!

[root@centos rdc]#

nanoテキストエディターをインストールしました。 この方法、IMOは、Webサイトでユーティリティを検索し、インストーラーを手動で実行するよりもはるかに簡単です。 また、リポジトリはデジタル署名を使用してパッケージを検証し、yumで信頼できるソースからのものであることを保証します。 新しいリポジトリを信頼するときに信頼性を検証するのは管理者の責任です。 これが、サードパーティのリポジトリにうんざりすることがベストプラクティスと見なされる理由です。

Yumはパッケージの削除にも使用できます。

[root@centos rdc]# yum remove nano
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

それでは、更新を確認しましょう。

[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
 *epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
 *updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64           1:1.4.0-17.el7_3       updates
NetworkManager-adsl.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-glib.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-libnm.x86_64     1:1.4.0-17.el7_3       updates
NetworkManager-team.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-tui.x86_64       1:1.4.0-17.el7_3       updates
NetworkManager-wifi.x86_64      1:1.4.0-17.el7_3       updates
audit.x86_64                    2.6.5-3.el7_3.1        updates
audit-libs.x86_64               2.6.5-3.el7_3.1        updates
audit-libs-python.x86_64

示されているように、数十のアップデートがインストール待ちです。 実際には、自動更新をまだ構成していないため、合計で約100の更新があります。 したがって、保留中の更新をすべてインストールしましょう。

[root@centos rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.usc.edu
 *epel: pubmirror1.math.uh.edu
* extras: repos.forethought.net
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
 selinux-policy            noarch      3.13.1102.el7_3.15      updates     414 k
 selinux-policy-targeted   noarch      3.13.1102.el7_3.15      updates     6.4 M
 systemd                   x86_64      21930.el7_3.7           updates     5.2 M
 systemd-libs              x86_64      21930.el7_3.7           updates     369 k
 systemd-python            x86_64      21930.el7_3.7           updates     109 k
 systemd-sysv              x86_64      21930.el7_3.7           updates     63 k
 tcsh                      x86_64      6.18.01-13.el7_3.1      updates     338 k
 tzdata                    noarch      2017a1.el7              updates     443 k
 tzdata-java               noarch      2017a1.el7              updates     182 k
wpa_supplicant             x86_64      1:2.021.el7_3           updates     788 k

Transaction Summary
===============================================================================
  Install   2 Packages
  Upgrade  68 Packages
Total size: 196 M
Total download size: 83 M
Is this ok [y/d/N]:

「y」キーを押すと、CentOS 7の更新が開始されます。 更新時に_yum_が通過する一般的なプロセスは-

  • 現在のパッケージを確認します
  • リポジトリで更新されたパッケージを検索します
  • 更新されたパッケージに必要な依存関係を計算します
  • アップデートをダウンロードする *更新プログラムをインストールします

さて、システムが最新であることを確認しましょう-

[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* updates: mirror.compevo.com

[root@centos rdc]#

ご覧のとおり、更新はリストされていません。

YUMの自動更新を構成する

エンタープライズ環境では、前述のように、自動更新が推奨されるインストール方法である場合とそうでない場合があります。 yumを使用して自動更新を設定する手順を見ていきましょう。

最初に、_yum-cron_というパッケージをインストールします。

[root@centos rdc]# yum -y install yum-cron
Install  1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
|  61 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
  Verifying  : yum-cron-3.4.3-150.el7.centos.noarch
1/1

Installed:
 yum-cron.noarch 0:3.4.3-150.el7.centos

Complete!

[root@centos rdc]#

デフォルトでは、_yum-cron_はアップデートのみをダウンロードし、インストールはしません。 更新プログラムを自動的にインストールするかどうかは管理者が判断します。 最大の注意点は、一部のアップデートではシステムの再起動が必要になることです。 また、一部の更新では、サービスが再び動作する前に構成の変更が必要になる場合があります。

依存関係を更新すると、次の状況で再帰的な問題が発生する可能性があります-

  • 特定のライブラリのyumによる更新が推奨されます
  • ライブラリはApache Server 2.4のみをサポートしますが、サーバー2.3があります
  • コマースサイトは特定のバージョンのPHPに依存しています
  • ライブラリ用にインストールされた新しいバージョンのApacheでは、PHPのアップグレードが必要です
  • 本番Webアプリケーションは、新しいPHPバージョンではまだテストされていません

Yumは、設定されていない限り、ApacheとPHPを予告なく自動的にアップグレードする場合があります。

5つのシナリオすべてが実行された場合、午前中の大きな頭痛から、ユーザーデータが公開される可能性のあるセキュリティ侵害に至るまで、何でも起こります。 前述の例は完全な種類の嵐ですが、このようなシナリオを展開することは望ましくありません。

更新の再起動および再構成によるダウンタイムが原因でサービスを復元するために必要な時間から収益が失われる可能性があるシナリオにアクセスするのは、管理者次第です。 たとえば、数百万の顧客を抱える1日あたり数百万ドルのeコマースサイトでは、この手法は十分に保守的ではありません。

では、_yum-cron_を設定して、システムアップデートを自動的にインストールします。

[root@centos rdc]# vim/etc/yum/yum-cron.conf
# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes

_apply_updates = no_を_apply_updates = yes_に変更します。 _yum-cron_の更新間隔を設定しましょう。

繰り返しますが、自動更新を使用して更新をオンデマンドでインストールするかどうかは両刃の剣である可能性があり、一意の状況ごとに管理者が考慮する必要があります。

Linux Admin-シェルスクリプト

Bash Shellの概要

GNU Linuxのフレーバーと同様に、シェルには多くの種類があり、互換性も異なります。 CentOSのデフォルトシェルは、BashまたはBourne Againシェルと呼ばれます。 Bashシェルは、Stephen Bourneによって開発されたBourne Shellの現代の修正版です。 Bashは、ケントンプソンとデニスリッチーによってベルラボで開発されたUnixオペレーティングシステム上のオリジナルのトンプソンシェルの直接の代替品でした(スティーブンボーンもベルラボで採用されました)

誰もがお気に入りのシェルを持ち、それぞれに長所と困難があります。 しかし、ほとんどの場合、BashはすべてのLinuxディストリビューションでデフォルトのシェルになり、最も一般的に利用可能になります。 経験があれば、誰もが自分に最適なシェルを探索して使用したいと思うでしょう。 しかし同時に、誰もがBashシェルをマスターしたいと思うでしょう。

その他のLinuxシェルには、Tcsh、Csh、Ksh、Zsh、およびFishが含まれます。

CentOS管理者にとって、エキスパートレベルでLinuxシェルを使用するスキルを開発することは非常に重要です。 前述したように、Windowsとは異なり、Linuxの中心はコマンドラインオペレーティングシステムです。 シェルは、管理者(またはユーザー)がオペレーティングシステムにコマンドを発行できるようにする単なるユーザーインターフェイスです。 Linuxシステム管理者が航空会社のパイロットである場合、シェルを使用することは、自動操縦から飛行機を離陸し、より操縦しやすい飛行のために手動制御をつかむことに似ています。

BashのようなLinuxシェルは、コンピューターサイエンス用語では「コマンドラインインタープリター」として知られています。 Microsoft Windowsには、DOS(元のDOSオペレーティングシステムと混同しないでください)およびPowerShellという2つのコマンドラインインタープリターもあります。

Bashのような最新のシェルは、より複雑な_shellスクリプト_が一般的なタスクと複雑なタスクの両方を自動化できるようにする*構造*を提供します。

コンストラクトには-

  • スクリプトフロー制御(ifthenおよびelse)
  • 論理比較演算(より大きい、より小さい、等しい)
  • ループ
  • 変数
  • 操作を定義するパラメーター(コマンド付きスイッチに似ています)

シェルスクリプトとスクリプト言語の使用

多くの場合、タスクの実行について考えるとき、管理者は次のことを自問します。シェルスクリプトまたはPerl、Ruby、Pythonなどのスクリプト言語を使用する必要がありますか?

ここには決まったルールはありません。 シェルとスクリプト言語の典型的な違いのみがあります。

シェル

シェルを使用すると、sed _、 grep tee cat_などのLinuxコマンド、およびLinuxオペレーティングシステム上の他のすべてのコマンドラインベースのユーティリティを使用できます。 実際、ほとんどすべてのコマンドラインLinuxユーティリティをシェルでスクリプト化できます。

シェルを使用するすばらしい例は、DNS解決のためにホストのリストをチェックする簡単なスクリプトです。

DNS名を確認する単純なBashスクリプト-

#!/bin/bash
for name in $(cat $1);
   do
      host $name.$2 | grep "has address"
   done
exit

DNS解決をテストする小さなワードリスト-

dns
www
test
dev
mail
rdp
remote

google.comドメインに対する出力-

[rdc@centos ~]$  ./dns-check.sh dns-names.txt google.com
-doing dns
dns.google.com has address 172.217.6.46
-doing www
www.google.com has address 172.217.6.36
-doing test
-doing dev
-doing mail
googlemail.l.google.com has address 172.217.6.37
-doing rdp
-doing remote

[rdc@centos ~]$

シェルで単純なLinuxコマンドを利用して、単語リストからDNS名を監査する単純な5行のスクリプトを作成できました。 うまく実装されたDNSライブラリを使用していても、Perl、Python、またはRubyでこれにはかなりの時間がかかりました。

スクリプト言語

スクリプト言語は、シェルの外部でより多くの制御を提供します。 上記のBashスクリプトは、Linux _host_コマンドのラッパーを使用しました。 シェルの外部と対話するために、もっと多くのことをして、_host_のような独自のアプリケーションを作成したい場合はどうでしょうか これは、スクリプト言語を使用する場所です。

また、高度に維持されたスクリプト言語を使用すると、ほとんどの場合、アクションが異なるシステム間で機能することがわかります。 たとえば、Python 3.5は、同じライブラリがインストールされたPython 3.5を実行している他のシステムで動作します。 そうではありません。LinuxとHP-UXの両方でBASHスクリプトを実行する場合。

スクリプト言語と強力なシェルの間の境界線があいまいになる場合があります。 Python、Perl、またはRubyを使用してCentOS Linux管理タスクを自動化することができます。 そうすることは実際に非常に一般的です。 また、豊かなシェルスクリプト開発者は、Bashでシンプルですが機能するWebサーバーデーモンを作成しました。

スクリプト言語とシェルでのタスクの自動化の経験により、CentOS管理者は問題を解決する必要があるときにどこから開始するかを迅速に決定できます。 シェルスクリプトを使用してプロジェクトを開始することは非常に一般的です。 次に、プロジェクトが複雑になるにつれて、スクリプト(またはコンパイル済み)言語に進みます。

また、プロジェクトのさまざまな部分にスクリプト言語とシェルスクリプトの両方を使用してもかまいません。 例としては、WebサイトをスクレイピングするPerlスクリプトがあります。 次に、シェルスクリプトを使用して、sed _、 awk_、および_egrep_を解析およびフォーマットします。 最後に、PHPスクリプトを使用して、Web GUIを使用してMySQLデータベースにフォーマット済みデータを挿入します。

シェルの背後にある理論を使って、CentOSのBashシェルからのタスクを自動化する基本的な構成要素から始めましょう。

入力出力とリダイレクト

別のコマンドへの標準出力の処理-

[rdc@centos ~]$ cat ~/output.txt | wc -l
6039
[rdc@centos ~]$

上記では、_cat_sstoud_を_wc_に渡して、_pipe_文字で処理しています。 _wc_は_cat_からの出力を処理し、output.txtの行カウントを端末に出力しました。 _pipe_文字は、次のコマンドで処理される1つのコマンドからの出力を渡す「パイプ」と考えてください。

以下は、コマンドのリダイレクトを扱うときに覚えておくべき重要な概念です-

Number File descriptor Character
0 standard input <
1 standard output >
2 standard error
append stdout >>
assign redirection &
pipe stdout into stdin

これを第1章で紹介しましたが、リダイレクトについてはあまり説明せず、リダイレクトを割り当てることもしませんでした。 Linuxでターミナルを開くと、シェルはデフォルトのターゲットとして表示されます-

  • 標準入力<0
  • 標準出力> 1 *標準エラー2

これがどのように機能するか見てみましょう-

[rdc@centos ~]$ lsof -ap $BASHPID -d 0,1,2
 COMMAND   PID   USER   * *FD* *TYPE DEVICE   SIZE/OFF   NODE      NAME
 bash    13684    rdc   * *0u* *CHR  136,0      0t0     3     /dev/pts/0
 bash    13684    rdc   * *1u* *CHR  136,0      0t0     3     /dev/pts/0
 bash    13684    rdc   * *2u**   CHR  136,0      0t0     3     /dev/pts/0

[rdc@centos ~]$

/dev/pts/0_は疑似ターミナルです。 CentOS Linuxはこれを見て、シリアルインターフェースを介してプラグインされたキーボードとディスプレイを備えた実際の端末のようなオープンターミナルアプリケーションを考えます。 ただし、ハイパーバイザーがハードウェアをオペレーティングシステムに抽象化するように、/dev/pts_は端末をアプリケーションに抽象化します。

上記の_lsof_コマンドから、 FD 列の下に3つのファイル記述子すべてが仮想端末(0,1,2)に設定されていることがわかります。 これで、コマンドを送信したり、コマンドの出力を確認したり、コマンドに関連するエラーを確認したりできます。

以下はSTDINとSTDOUTの例です-

標準出力

[root@centosLocal centos]# echo "I am coming from Standard output or STDOUT." >
output.txt && cat output.txt
I am coming from Standard output or STDOUT.
[root@centosLocal centos]#

_stdout_と_stderr_の両方を別々のファイルに送信することも可能です-

bash-3.2# find/-name passwd 1> good.txt 2> err.txt
bash-3.2# cat good.txt
/etc/pam.d/passwd
/etc/passwd
bash-3.2# cat err.txt
find:/dev/fd/3: Not a directory
find:/dev/fd/4: Not a directory
bash-3.2#

ファイルシステム全体を検索するときに、2つのエラーが発生しました。 後で閲覧するためにそれぞれを個別のファイルに送信し、返された結果は個別のテキストファイルに配置しました。

_stderr_をテキストファイルに送信することは、アプリケーションのコンパイルなど、端末に大量のデータを出力することを行う場合に役立ちます。 これにより、端末のスクロールバック履歴から失われる可能性のあるエラーの閲覧が可能になります。

STDOUTをテキストファイルに渡すときの注意点の1つは、 >> と*> *の違いです。 二重の「>>」はファイルに追加されますが、単数形はファイルを上書きし、新しい内容を書き込みます(したがって、以前のデータはすべて失われます)。

STDIN

[root@centosLocal centos]# cat < stdin.txt
Hello,
I am being read form Standard input, STDIN.

[root@centosLocal centos]#

上記のコマンドでは、テキストファイル_stdin.txt_が_cat_コマンドにリダイレクトされ、その内容が_STDOUT_にエコーされました。

パイプ文字「|」

パイプ文字は、最初のコマンドからの出力を取得し、それを次のコマンドへの入力として渡し、2番目のコマンドが出力に対して操作を実行できるようにします。

さて、別のコマンドに猫の標準出力を「パイプ」しましょう-

[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#

上記の_wc_は、パイプから渡された_cat_からの出力に対して計算を実行します。 pipeコマンドは、_grep_または_egrep_からの出力をフィルタリングする場合に特に便利です-

[root@centosLocal centos]# egrep "^[0-9]{4}$"/usr/dicts/nums | wc -l
9000
[root@centosLocal centos]#

上記のコマンドでは、_egrep_フィルターを介して渡された65535のすべての数値を含むテキストファイルから、_wc_に4桁ごとの数値を渡しました。

&による出力のリダイレクト

  • &*文字を使用して、出力をリダイレクトできます。 私たちは同じファイルにSTDOUTとSTDERRの両方の出力を向けたい場合、それは次のように達成することができます-
[root@centosLocal centos]# find/-name passwd > out.txt 2>&1
[root@centosLocal centos]# cat out.txt
find:/dev/fd/3: Not a directory
find:/dev/fd/4: Not a directory
/etc/passwd

[root@centosLocal centos]#
  • &*文字を使用したリダイレクトは次のように機能します。最初に、出力は_out.txt_にリダイレクトされます。 次に、STDERRまたはファイル記述子2がSTDOUTと同じ場所(この場合は_out.txt_)に再割り当てされます。

リダイレクトは非常に便利で、大きなテキストファイルの操作、ソースコードのコンパイル、シェルスクリプトでの出力のリダイレクト、複雑なLinuxコマンドの発行などの問題を解決するのに役立ちます。

強力な一方で、リダイレクトは新しいCentOS管理者にとって複雑になる可能性があります。 Linuxフォーラム(Stack Overflow Linuxなど)への実践、調査、および時々の質問は、高度なソリューションの解決に役立ちます。

Bashシェルコンストラクト

_Bash shell_がどのように機能するのかがよくわかったので、スクリプトを作成するために一般的に使用されるいくつかの基本的な構造を学びましょう。 このセクションでは、探索します-

  • リンク:/linux_admin/linux_admin_variables [変数]
  • リンク:/linux_admin/linux_admin_loops [ループ]
  • リンク:/linux_admin/linux_admin_conditionals [条件付き]
  • リンク:/linux_admin/linux_admin_loop_control [ループ制御]
  • リンク:/linux_admin/linux_admin_reading_and_writing_to_files [ファイルの読み取りと書き込み]
  • リンク:/linux_admin/linux_admin_basic_math_operations [基本的な数学演算]

BASHトラブルシューティングのヒント

BASHは、専用のスクリプト言語に比べて少し注意が必要です。 BASHスクリプトの最大のハングアップのいくつかは、シェルに渡されるスクリプト操作が誤ってエスケープされたり、エスケープされなかったりすることです。 スクリプトを数回見て、期待どおりに機能しない場合は、心配しないでください。 これは、BASHを使用して複雑なスクリプトを毎日作成する人でも一般的です。

Googleをすばやく検索するか、専門のLinuxフォーラムにサインアップして質問すると、迅速な解決につながります。 誰かが正確な問題に遭遇した可能性が非常に高く、すでに解決されています。

BASHスクリプティングは、管理タスクの自動化から便利なツールの作成に至るまで、すべての強力なスクリプトをすばやく作成するための優れた方法です。 エキスパートレベルのBASHスクリプト開発者になるには、時間と練習が必要です。 したがって、可能な限りBASHスクリプトを使用してください。これは、CentOS管理ツールボックスに含めるのに最適なツールです。

Linux Admin-パッケージ管理

CentOSのパッケージ管理は、端末からとグラフィカルユーザーインターフェイスからの2つの方法で実行できます。

多くの場合、CentOS管理者の時間の大半は端末を使用します。 CentOSのパッケージの更新とインストールも同じです。 このことを念頭に置いて、まずターミナルでパッケージ管理を調査し、次にCentOSが提供するグラフィカルパッケージ管理ツールを使用します。

YUMパッケージマネージャー

_YUM_は、CentOSのパッケージ管理用に提供されるツールです。 前の章でこのトピックに簡単に触れました。 この章では、CentOSのクリーンインストールから作業を行います。 最初にインストールを完全に更新してから、アプリケーションをインストールします。

_YUM_は、Linuxでのソフトウェアのインストールと管理を大いに促進しました。 _YUM_は、期限切れのパッケージに加えて、期限切れの依存関係を「自動的に」チェックします。 これにより、すべてのアプリケーションをソースコードからコンパイルする昔のように、CentOS管理者の負担が大幅に軽減されました。

yum check-update

候補を更新できるパッケージを確認します。 このチュートリアルでは、パッケージをアップグレードする前にDevOpsでテストする必要がある本番アプリケーションのないインターネットに直面する本番システムを想定します。 更新された候補をシステムにインストールしましょう。

[root@localhost rdc]# yum check-update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 *base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu
NetworkManager.x86_64                     1:1.4.0-19.el7_3              updates
NetworkManager-adsl.x86_64                1:1.4.0-19.el7_3              updates
NetworkManager-glib.x86_64                1:1.4.0-19.el7_3              updates
NetworkManager-libnm.x86_64               1:1.4.0-19.el7_3              updates
NetworkManager-team.x86_64                1:1.4.0-19.el7_3              updates
NetworkManager-tui.x86_64                 1:1.4.0-19.el7_3              updates
NetworkManager-wifi.x86_64                1:1.4.0-19.el7_3              updates
audit.x86_64                              2.6.5-3.el7_3.1               updates
vim-common.x86_64                         2:7.4.160-1.el7_3.1           updates
vim-enhanced.x86_64                       2:7.4.160-1.el7_3.1           updates
vim-filesystem.x86_64                     2:7.4.160-1.el7_3.1           updates
vim-minimal.x86_64                        2:7.4.160-1.el7_3.1           updates
wpa_supplicant.x86_64                     1:2.0-21.el7_3                updates
xfsprogs.x86_64                           4.5.0-9.el7_3                 updates

[root@localhost rdc]#

ヤムアップデート

これにより、更新されたすべての候補がインストールされ、CentOSが最新の状態になります。 新規インストールの場合、インストールとインターネット接続速度によっては、これに少し時間がかかる場合があります。

[root@localhost rdc]# yum update

vim-minimal                        x86_64    2:7.4.160-1.el7_3.1     updates    436 k
wpa_supplicant                     x86_64    1:2.0-21.el7_3          updates    788 k
xfsprogs                           x86_64    4.5.0-9.el7_3           updates    895 k

Transaction Summary
======================================================================================
Install    2 Packages
Upgrade  156 Packages
Total download size: 371 M

Is this ok [y/d/N]:

YUM経由でソフトウェアをインストールする

CentOSシステムの更新に加えて、YUMパッケージマネージャーは、ソフトウェアをインストールするための重要なツールです。 ネットワーク監視ツール、ビデオプレーヤー、テキストエディターなどはすべて、_YUM_を使用して中央リポジトリからインストールできます。

いくつかのソフトウェアユーティリティをインストールする前に、いくつかの_YUM_コマンドを見てみましょう。 毎日の作業では、CentOS管理者によるYUMの使用の90%が約7つのコマンドで行われます。 YUMを日常的に使用するのに十分なレベルで操作することに慣れることを期待して、それぞれについて説明します。 ただし、ほとんどのLinuxユーティリティと同様に、YUMには豊富な高度な機能が用意されており、マニュアルページからいつでも探索できます。 _man yum_を使用することは、Linuxユーティリティでなじみのない操作を実行する最初のステップです。

最も一般的なYUMコマンド

一般的に使用されるYUMコマンドは次のとおりです。

Command Action
list installed Lists packages installed via YUM
list all Lists all currently available packages
group list Lists grouped packages
info Provides detailed information about a package
search Searches package descriptions and names
install Installs a package
localinstall Installs a local rpm package
remove Removes and installs package
clean all Cleans/var/cache/yum to free disk-space
man yum Like all linux commands, the help file

YUMを使用したソフトウェアのインストール

ここで、 Lynx というテキストベースのWebブラウザーをインストールします。 インストールの前に、まずLynx Webブラウザーを含むパッケージ名を取得する必要があります。 デフォルトのCentOSリポジトリがLynx Webブラウザ用のパッケージを提供していることを100%も確信していないので、検索して見てみましょう-

[root@localhost rdc]# yum search web browser
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 *base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
 *updates: mirror.clarkson.edu
=================================================================
N/S matched: web, browser
==================================================================
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser
plug-in and Web Start implementation
elinks.x86_64 : A text-mode Web browser
firefox.i686 : Mozilla Firefox Web browser
firefox.x86_64 : Mozilla Firefox Web browser
lynx.x86_64 : A text-based Web browser

Full name and summary matches only, use "search all" for everything.

[root@localhost rdc]#

CentOSは、リポジトリにLynx Webブラウザーを提供しています。 パッケージについてもう少し情報を見てみましょう。

[root@localhost rdc]# lynx.x86_64
bash: lynx.x86_64: command not found...
[root@localhost rdc]# yum info lynx.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
 *extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
Available Packages
Name        : lynx
Arch        : x86_64
Version     : 2.8.8
Release     : 0.3.dev15.el7
Size        : 1.4 M
Repo        : base/7/x86_64
Summary     : A text-based Web browser
URL         : http://lynx.isc.org/
License     : GPLv2
Description : Lynx is a text-based Web browser. Lynx does not display any images,
            : but it does support frames, tables, and most other HTML tags. One
            : advantage Lynx has over graphical browsers is speed; Lynx starts and
            : exits quickly and swiftly displays web pages.

[root@localhost rdc]#

いいね! バージョン2.8は十分に最新なので、Lynxをインストールしましょう。

[root@localhost rdc]# yum install lynx
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 *base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
 *updates: mirror.clarkson.edu
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
Package                          Arch
Version                       Repository                    Size
===============================================================================
===============================================================================
Installing:
 lynx                           x86_64
2.8.80.3.dev15.el7              base                        1.4 M

Transaction Summary
===============================================================================
===============================================================================
Install  1 Package

Total download size: 1.4 M
Installed size: 5.4 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for base
lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
| 1.4 MB  00:00:10
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
   Installing : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1
   Verifying  : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1

Installed:
   lynx.x86_64 0:2.8.8-0.3.dev15.el7
Complete!

[root@localhost rdc]#

次に、Lynxが実際に正しくインストールされたことを確認しましょう。

[root@localhost rdc]# yum list installed | grep -i lynx

lynx.x86_64                   2.8.8-0.3.dev15.el7              @base
[root@localhost rdc]#

すばらしいです! Lynxを使用して、「いいね」やきれいな写真なしでWebがどのように見えるかを見てみましょう。

[root@localhost rdc]# lynx www.tutorialpoint.in

YUMでソフトウェアをインストール

すばらしいです。現在、実稼働サーバー用のWebブラウザーがあり、Web経由で起動されるリモートエクスプロイトにあまり心配することなく使用できます。 これは実稼働サーバーに適しています。

ほぼ完了しましたが、最初にこのサーバーを開発者がアプリケーションをテストできるように設定する必要があります。 したがって、彼らが彼らの仕事に必要なすべてのツールを持っていることを確認しましょう。 すべてを個別にインストールすることもできますが、CentOSとYUMを使用すると、これがはるかに高速になります。 _Development Group Package_をインストールしましょう。

[root@localhost rdc]# yum groups list
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
 *extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu

Available Groups:
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Graphical Administration Tools
   Legacy UNIX Compatibility
   Scientific Support
   Security Tools
   Smart Card Support
   System Administration Tools
   System Management
Done

[root@localhost rdc]#

これは、CentOSが提供するパッケージグループの小さなリストです。 「開発グループ」に含まれるものを見てみましょう。

[root@localhost rdc]# yum group info "Development Tools"
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 *base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu

Group: Development Tools
Group-Id: development
Description: A basic development environment.
Mandatory Packages:
autoconf
automake
binutils
bison

出力の最初の画面は上記のとおりです。 このリスト全体はかなり包括的なものです。 ただし、このグループは通常、時間が経つにつれて完全にインストールされる必要があります。 開発グループ全体をインストールしましょう。

[root@localhost rdc]# yum groupinstall "Development Tools"

これはより大きなインストールになります。 完了すると、サーバーにはPerl、Python、C、およびC ++用のほとんどの開発ライブラリとコンパイラが含まれます。

CentOSのグラフィカルパッケージ管理

Gnome Desktopは、 Software と呼ばれるグラフィカルパッケージ管理ツールを提供します。 使い方は非常に簡単で簡単です。 CentOS用のGnomeパッケージ管理ツールであるソフトウェアは、アプリケーション→システムツール→ソフトウェアに移動して見つけることができます。

ソフトウェアパッケージ管理ツールはグループに分割され、管理者はインストールするパッケージを選択できます。 このツールは、エンドユーザーの使いやすさとシンプルさには優れていますが、YUMははるかに強力であり、おそらく管理者により多く使用されるでしょう。

以下はソフトウェアパッケージ管理ツールのスクリーンショットであり、実際にはシステム管理者向けには設計されていません。

ソフトウェアパッケージ管理ツール

Linux Admin-ボリューム管理

  • 論理ボリューム管理(LVM)*は、さまざまな物理ハードディスク間でストレージボリュームを管理するためにLinuxで使用される方法です。 これはRAIDと混同しないでください。 ただし、RAID 0またはJ-Bodと同様の概念で考えることができます。 LVMを使用すると、(たとえば)それぞれ1TBの3つの物理ディスクを使用し、次に/dev/sdbなどの約3TBの論理ボリュームを使用できます。 または、1.5TBの2つの論理ボリューム、500GBの5つのボリューム、または任意の組み合わせです。 論理ボリュームのスナップショットに1つのディスクを使用することもできます。

注意-論理ボリュームを使用すると、正しく構成されている場合、実際にディスクI/Oが増加します。 これは、RAID 0が別々のディスクにデータをストライピングするのと同じように機能します。

LVMを使用したボリューム管理について学習するとき、LVMの各コンポーネントが何であるかを知っていれば簡単です。 次の表を調べて、各コンポーネントをしっかりと把握してください。 必要な場合は、Googleを使用して勉強してください。 論理ボリュームの各部分を理解することは、それらを管理するために重要です。

PV Physical Volume sda
PP Physical Partition sda1 , sda2
VG Volume Group Pooled physical resources
LV Logical Volume Seen as a storage facility to the operating system
  • 物理ボリューム*は/dev/sda、/dev/sdbとして認識されます。 Linuxによって検出される物理ディスク。
  • 物理パーティション*は、fdiskなどのディスクユーティリティによってパーティション分割されたディスクのセクションです。 ほとんどの一般的なLVMセットアップでは、物理パーティションは推奨されません。 例:ディスク/dev/sdaは、2つの物理パーティション_/dev/sda1_および_/dev/sda1_を含むようにパーティション分割されています

それぞれ1TBの物理ディスクが2つある場合、2つの中にほぼ2TBの_ボリュームグループ_を作成できます。

ボリュームグループから、3つの_論理ボリューム_を作成できます。それぞれは、ボリュームグループの合計サイズを超えない任意のサイズです。

従来のLinuxディスク管理ツール

CentOS 7のLVM管理用の最新かつ最高の機能を備えたツールに慣れる前に、まずLinuxディスク管理に使用されてきた従来のツールを詳しく調べる必要があります。 これらのツールは便利であり、System Storage Manager(lsblk、parted、mkfs.xfs)などの今日の高度なLVMツールで引き続き使用できます。

ここで、システムに1つまたは2つのディスクを追加したと仮定すると、Linuxによって検出されたディスクを列挙する必要があります。 破壊的と見なされる操作を実行する前に、常にディスクを列挙することをお勧めします。 lsblk はディスク情報を取得するための素晴らしいツールです。 CentOSが検出するディスクを見てみましょう。

[root@localhost rdc]# lsblk
NAME         MAJ:MIN    RM    SIZE    RO    TYPE MOUNTPOINT
sda            8:0       0     20G     0        disk
├─sda1         8:1       0      1G     0     part/boot
└─sda2         8:2       0     19G     0        part
  ├─cl-root  253:0       0     17G     0      lvm /
  └─cl-swap  253:1       0      2G     0      lvm  [SWAP]
    sdb       8:16       0      6G     0       disk
    sdc       8:32       0      4G     0       disk
    sr0       11:0       1   1024M     0       rom

ご覧のとおり、このシステムにはsda、sdb、sdcの3つのディスクがあります。

Disk sdaには動作中のCentOSインストールが含まれているため、sdaをいじりたくありません。 このチュートリアルでは、_sdb_と_sdc_の両方がシステムに追加されました。 これらのディスクをCentOSで使用できるようにしましょう。

ディスクラベルを作成する

[root@localhost rdc]# parted/dev/sdb mklabel GPT
Warning: The existing disk label on/dev/sdb will be destroyed and all data on this
   disk will be lost. Do you want to continue?
Yes/No? Yes
[root@localhost rdc]#

これで、1つのディスクにラベルが付けられました。 _sdc_で同じ方法で_parted_コマンドを実行するだけです。

ディスクにパーティションを作成する

各ディスクに単一のパーティションのみを作成します。 パーティションを作成するには、_parted_コマンドを再度使用します。

[root@localhost rdc]# parted -a opt/dev/sdb mkpart primary ext4 0% 100%

警告-0.00Bから6442MB(セクター0..12582911)のパーティションを要求しました。

私たちが管理できる最も近い場所は17.4kB〜1048kB(セクター34..2047)です。

これはまだ受け入れられますか?

はい・いいえ? NO

[root@localhost rdc]# parted -a opt/dev/sdc mkpart primary ext4 0% 100%

情報-/etc/fstabの更新が必要な場合があります。

[root@localhost rdc]# lsblk
NAME        MAJ:MIN   RM    SIZE    RO    TYPE MOUNTPOINT
sda           8:0      0     20G     0        disk
├─sda1        8:1      0      1G     0      part/boot
└─sda2        8:2      0     19G     0        part
 ├─cl-root  253:0      0     17G     0       lvm /
 └─cl-swap  253:1      0      2G     0       lvm  [SWAP]
sdb          8:16      0      6G     0        disk
└─sdb1       8:17      0      6G     0        part
 sdc         8:32      0      4G     0        disk
└─sdc1       8:33      0      4G     0        part
sr0          11:0      1   1024M     0        rom

[root@localhost rdc]#

lsblkの出力からわかるように、2つのパーティションがあり、それぞれがsdbとsdcにあります。

ファイルシステムを作成する

最後に、ボリュームをマウントして使用する前に、ファイルシステムを追加する必要があります。 XFSファイルシステムを使用します。

root@localhost rdc]# mkfs.xfs -f/dev/sdb1
meta-data =/dev/sdb1               isize = 512    agcount = 4, agsize = 393088 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1572352, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0
[root@localhost rdc]# mkfs.xfs -f/dev/sdc1
meta-data   =/dev/sdc1             isize = 512    agcount = 4, agsize = 262016 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1048064, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0

[root@localhost rdc]#

それぞれに使用可能なファイルシステムがあることを確認してみましょう。

[root@localhost rdc]# lsblk -o NAME,FSTYPE
NAME           FSTYPE
sda
├─sda1         xfs
└─sda2         LVM2_member
 ├─cl-root     xfs
 └─cl-swap     swap
sdb
└─sdb1         xfs
sdc
└─sdc1         xfs
sr0

[root@localhost rdc]#

現在、それぞれがXFSファイルシステムを使用しています。 それらをマウントし、マウントを確認して、それぞれにファイルをコピーしましょう。

[root@localhost rdc]# mount -o defaults/dev/sdb1/mnt/sdb
[root@localhost rdc]# mount -o defaults/dev/sdc1/mnt/sdc

[root@localhost ~]# touch/mnt/sdb/myFile/mnt/sdc/myFile
[root@localhost ~]# ls/mnt/sdb/mnt/sdc
/mnt/sdb:
  myFile

/mnt/sdc:
  myFile

この時点で2つの使用可能なディスクがあります。 ただし、手動でマウントした場合にのみ使用できます。 ブート時にそれぞれをマウントするには、_fstab_ファイルを編集する必要があります。 また、新しいディスクへのアクセスを必要とするグループにアクセス許可を設定する必要があります。

ボリュームグループと論理ボリュームを作成する

CentOS 7に追加された最大の機能の1つは、_System Storage Manager_または_ssm_というユーティリティが追加されたことです。 System Storage Manager は、Linux上のLVMプールとストレージボリュームの管理プロセスを大幅に簡素化します。

CentOSでシンプルボリュームプールと論理ボリュームを作成するプロセスを実行します。 最初のステップは、System Storage Managerのインストールです。

[root@localhost rdc]# yum  install system-storage-manager

_ssm list_コマンドを使用してディスクを見てみましょう。

SSMリストコマンド

上記のように、合計3つのディスクがシステムにインストールされています。

  • /sdba1 -CentOSインストールをホストします
  • /sdb1 -/mnt/sdbにマウント
  • /sdc1 -/mnt/sdcにマウント

2つのディスク(sdbとsdc)を使用して_Volume Group_を作成します。 次に、3つの3GB論理ボリュームをシステムで使用できるようにします。

ボリュームグループを作成しましょう。

[root@localhost rdc]# ssm create -p NEW_POOL/dev/sdb1/dev/sdc1

デフォルトでは、_ssm_はプールの10GB全体を拡張する単一の論理ボリュームを作成します。 これは必要ないので、これを削除しましょう。

[root@localhost rdc]# ssm remove/dev/NEW_POOL/lvol001
 Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y
 Logical volume "lvol001" successfully removed
[root@localhost rdc]#

最後に、3つの論理ボリュームを作成しましょう。

[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL

それでは、新しいボリュームを確認しましょう。

ボリューム

これで、2つの物理ディスクパーティションにまたがる3つの個別の論理ボリュームがで​​きました。

論理ボリュームは、CentOS Linuxに組み込まれた強力な機能です。 これらの管理の表面に触れました。 マスタリングプールと論理ボリュームには、Tutorials Pointの練習と拡張学習が付属しています。 ここまでは、CentOSでのLVM管理の基本を学び、単一のホストで基本的なストライプ化論理ボリュームを作成する機能を備えています。