【CentOS7】インストール後作業

にほんブログ村 サラリーマン日記ブログへ
ポチッとお願いします
気に入った記事があればコメント、シェアお願い致しますm(_ _"m)ペコリ

CentOS7をインストール後にすること


先日、WindowsServer2019のHyper-V環境の仮想マシンに、CentOS7をインストールしました


CentOS7などのLinuxをイントール後に、実施したほうがいいこととして、2つ作業を実施したいと思います

①パッケージのアップデート
②rootユーザのssh接続無効化

ClamAVのようなウィルス対策ソフトのインストールもした方がいいのですが、何を使おうか迷っているので、また今度(汗)

[スポンサーリンク]


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


CentOS7にインストールされているパッケージの、アップデートを実行します

今回は初回イントール後で、なにもアプリケーション等は動作していません
なので、カーネルも含めて、アップデートしていきます
もし実運用中のサーバで、アプリケーションとカーネルの依存関係に問題がある場合等は、除外が必要です

下記サイトのような方法で、アップデートの対象から、カーネルを除外する対処が可能です



カーネルはLinuxOSの根幹部分です

広義の場合は、カーネル=OSの意味で記載しているサイトなどもあります
正確には、シェルやデスクトップ環境などもあるので異なりますが
(この辺りも勉強していかなければ)

Linuxでカーネルのアップデートを行うのは、WindowsUpdateを行うのと同じようなイメージです


インストール後のカーネルのリリース番号、バージョン情報を確認


unameコマンドで、現在のカーネルのリリース番号、バージョン情報を確認します

unameコマンドは、システム情報を確認するコマンドとなります
unameコマンドの使い方を確認してみます

uname --help
# uname --help
使用法: uname [OPTION]...
システム情報を表示します。 OPTION が指定されていない場合は -s と同じです。

  -a, --all                以下の順番でシステム情報を全て表示する (ただし -p
                             と -i が unknown の場合は省略される):
  -s, --kernel-name        カーネル名を表示する
  -n, --nodename           ネットワークノードとしてのホスト名を表示する
  -r, --kernel-release     カーネルリリース番号を表示する
  -v, --kernel-version     カーネルのバージョンを表示する
  -m, --machine            マシンのハードウェア名を表示する
  -p, --processor          プロセッサの種類を表示する。不明な場合は "unknown" となる
  -i, --hardware-platform  ハードウェアプラットフォームを表示する。不明な場合は "unknown" となる
  -o, --operating-system   オペレーティングシステムの名前を表示する
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
uname の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。
完全な文書を参照する場合は info coreutils 'uname invocation' を実行してください 。
#

今回は、allオプションで、カーネルのリリース番号、バージョン情報を確認します

uname -a
# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
#

インストールに使用したisoファイルが、以前にセカンドPCを作成した時のインストーラーでした
なので2018年の古いバージョンです
早速、バージョンを上げないとダメですね

因みにallオプションを使った場合の表示内容は、ヘルプの記載の項目が順番に表示されます
・カーネル名

# uname -s
Linux

・ホスト名

# uname -n
localhost.localdomain

・カーネルリリース番号

# uname -r
3.10.0-862.el7.x86_64

・カーネルのバージョン

# uname -v
#1 SMP Fri Apr 20 16:44:24 UTC 2018

・ハードウェア名

# uname -m
x86_64

・プロセッサの種類

# uname -p
x86_64

・ハードウェアプラットフォーム

# uname -i
x86_64

・オペレーティングシステムの名前

# uname -o
GNU/Linux

yumコマンド、rpmコマンドの違いについて


yumコマンドでパッケージのアップデートを実施します
Linuxで、パッケージのアップデートする場合に使用するコマンドは、rpmとyumがあります

ざっくり言うとrpmコマンドは、パッケージ単体のインストール、アップデートなどをする場合に使用します
rpmコマンドは、rpmファイルを使用したパッケージ管理が出来ます
rpmファイル(.rpm)は、Red Hat社が開発した、ソフトフェアに関連するファイルを纏めたパッケージファイルです

yum(Yellowdog Updater Modified)コマンドは、同じくRed Hat社が開発したパッケージ管理ツールです
yumコマンドは、rpmコマンドを拡張した、高機能なツールです

yumコマンドがrmpコマンドより拡張された機能の例の1つとして、リポジトリとパッケージを管理する保管場所の概念があります
このリポジトリを確認することで、パッケージの更新情報や依存関係を知ることが出来ます
従って、yumコマンドでは、パッケージの依存関係を合わせて、インストールすることが出来ます

例えば、あるアプリケーションAを事項する為には、パッケージAと依存関係のあるパッケージBの2つが必要です
rpmコマンドではパッケージA、パッケージBそれぞれインストールが必要でした
yumコマンドでは、依存関係まで管理出来るので、パッケージAをインストールしようとすると、パッケージBも必要として判断してインストールしてくれます

下記サイトなどに、分かり易く説明されています



yumコマンドのキャッシュ削除について


アップデート前に、yumのキャッシュを削除する必要がある場合があります
yumが、キャッシュに残った古い情報を元に動作することで、最新にアップデート出来なかったりすることで、アップデートが不完全であったり、失敗したりすることがあります

今回は、初回アップデートであるので、不要ですが勉強の為に実行してみます

yum clean all
# yum clean all
読み込んだプラグイン:fastestmirror, langpacks
リポジトリーを清掃しています: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
#

また、yumコマンドがキャッシュを使用しない設定の場合も、削除は不要です

キャッシュの使用有無の設定は、/etc/yum.confファイルを確認すると分かります
keepcacheの値が、”1″の場合は有効で、パッケージをキャッシュに残します
“0”の場合は無効で、キャッシュに残さない設定となります

今回の環境では、”0″となっていました

cat /etc/yum.conf
# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

yumコマンドでパッケージのアップデート


初回アップデートなので、いきなりアップデートをしていきます
実際に運用しているサーバなどの場合は、check-updateコマンドで実行して、アップデート対象を確認してから実行した方がいいですね

yum check-update

今回は、yオプションを付けて、全てのパッケージをアップデートしていきます
yオプションは、すべての問い合わせに「yes」で答えるオプションです

yオプションを付けない場合は、パッケージをアップデートするか確認されます
check-updateコマンドの結果、アップデートしたくないパッケージなどがあった場合は、「no」と答えるアップデートしないことが可能です

yumコマンドの使い方を確認してみます

yum --help
# yum --help
読み込んだプラグイン:fastestmirror, langpacks
Usage: yum [options] COMMAND

List of Commands:

check          rpmdb の問題を確認する
check-update   更新に利用できるパッケージを確認する
clean          キャッシュデータを削除する
deplist        パッケージの依存性の一覧を表示する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケ ージを同期する
downgrade      パッケージのダウングレード
erase          システムから削除するパッケージ
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         グループ情報の表示または使用
help           役立つ使い方のメッセージを表示する
history        トランザクション履歴を表示、使用する
info           パッケージもしくはパッケージのグループについての詳細を表示する
install        システムにパッケージをインストールする
langavailable  Check available languages
langinfo       List languages information
langinstall    Install appropriate language packs for a language
langlist       List installed languages
langremove     Remove installed language packs for a language
list           パッケージグループの一覧を表示する
load-transaction filename から保存済みトランザクションを読み込む
makecache      メタデータキャッシュを生成する
provides       指定値を提供するパッケージを検索する
reinstall      パッケージの再インストール
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       ソフトウェアリポジトリーの構成を表示する
search         指定した文字列でパッケージの詳細を検索する
shell          対話型の yum シェルを実行する
swap           Simple way to swap packages, instead of using shell
update         システムのパッケージを更新する
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        不要になったパッケージを考慮しながらパッケージを更新する
version        ホストの利用できるリポジトリーのバージョンを表示する


Options:
  -h, --help            このヘルプ メッセージを表示して終了する
  -t, --tolerant        エラーを黙認する
  -C, --cacheonly       キャッシュから完全に実行し、キャッシュを更新しません
  -c [config file], --config=[config file]
                        構成ファイルの場所
  -R [minutes], --randomwait=[minutes]
                        コマンドの最大待ち時間
  -d [debug level], --debuglevel=[debug level]
                        デバッグ情報の出力レベル
  --showduplicates      一覧/検索コマンドのリポジトリーの重複の表示
  -e [error level], --errorlevel=[error level]
                        エラー出力レベル
  --rpmverbosity=[debug level name]
                        rpm のデバッグ情報の出力レベル
  -q, --quiet           静かに処理をする
  -v, --verbose         冗長に処理をする
  -y, --assumeyes       すべての問い合わせに「yes」で答える
  --assumeno            すべての質問にいいえを回答します
  --version             Yum のバージョンを表示して終了する
  --installroot=[path]  インストールのベース ディレクトリーを設定する
  --enablerepo=[repo]   ひとつ以上のリポジトリーを有効にする (ワイルドカード許可)
  --disablerepo=[repo]  ひとつ以上のリポジトリーを無効にする (ワイルドカード許可)
  -x [package], --exclude=[package]
                        名前かワイルドカードでパッケージを除外する
  --disableexcludes=[repo]
                        main、あるリポジトリー、またはすべてからの除外を無効にします。
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything
  --obsoletes           更新中に不要な処理を有効にします
  --noplugins           Yum プラグインを無効にする
  --nogpgcheck          GPG 署名の確認を無効にする
  --disableplugin=[plugin]
                        名前でプラグインを無効にする
  --enableplugin=[plugin]
                        名前でプラグインを有効にする
  --skip-broken         依存性関連に問題があるパッケージを飛ばす
  --color=COLOR         色を使うかどうか制御する
  --releasever=RELEASEVER
                        yum 設定と repo ファイルに $releasever の値を設定する
  --downloadonly        don't update, just download
  --downloaddir=DLDIR   specifies an alternate directory to store packages
  --setopt=SETOPTS      全体設定とリポジトリー オプションの任意に設定する
  --bugfix              Include bugfix relevant packages, in updates
  --security            Include security relevant packages, in updates
  --advisory=ADVS, --advisories=ADVS
                        Include packages needed to fix the given advisory, in
                        updates
  --bzs=BZS             Include packages needed to fix the given BZ, in
                        updates
  --cves=CVES           Include packages needed to fix the given CVE, in
                        updates
  --sec-severity=SEVS, --secseverity=SEVS
                        Include security relevant packages matching the
                        severity, in updates

  プラグインのオプション:

では、アップデートを実行します

yum -y update
# yum  -y update
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
base                                                                                                                                                                                                                  | 3.6 kB  00:00:00
extras



※略


  yum.noarch 0:3.4.3-163.el7.centos                                              yum-plugin-fastestmirror.noarch 0:1.1.31-52.el7                              yum-utils.noarch 0:1.1.31-52.el7
  zenity.x86_64 0:3.28.1-1.el7                                                   zlib.x86_64 0:1.2.7-18.el7

置換:
  caribou.x86_64 0:0.4.21-1.el7             caribou-gtk2-module.x86_64 0:0.4.21-1.el7       caribou-gtk3-module.x86_64 0:0.4.21-1.el7              gnome-dictionary-libs.x86_64 0:3.20.0-1.el7     gnome-tweak-tool.noarch 0:3.22.0-1.el7
  grub2.x86_64 1:2.02-0.65.el7.centos.2     grub2-tools.x86_64 1:2.02-0.65.el7.centos.2     mesa-libwayland-egl.x86_64 0:17.2.3-8.20171019.el7     pyatspi.noarch 0:2.20.3-1.el7                   python2-caribou.noarch 0:0.4.21-1.el7
  urw-fonts.noarch 0:2.4-16.el7

完了しました!
#

アップデート後のカーネルのリリース番号、バージョン情報を確認


unameコマンドで、カーネルのリリース番号、バージョン情報を確認し、アップデートが成功しているか確認してみます

# uname -a
Linux localhost.localdomain 3.10.0-1062.4.3.el7.x86_64 #1 SMP Wed Nov 13 23:58:53 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
# 

カーネルのリリース番号:「3.10.0-862.el7.x86_64」→「3.10.0-1062.4.3.el7.x86_64」
カーネルのバージョン:「#1 SMP Fri Apr 20 16:44:24 UTC 2018」→「#1 SMP Wed Nov 13 23:58:53 UTC 2019」
無事にアップデートにより、カーネルが更新されています


リリースファイルでのLinuxOSのリリースバージョンの確認方法


LinuxOSのリリースバージョンは、リリースファイルを確認することでも確認出来ます
リリースファイルは、下記のパスになります

/etc<ディストリビューション名>-release

CentOSの場合は、RedHat系なので、下記コマンドで確認出来ます

cat /etc/redhat-release
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
#

主なディストリビューションのリリースファイルは下記で確認出来ます ・RedHat系

cat /etc/redhat-release

・Ubuntu系

cat /etc/lsb-release

・Fedora系

cat /etc/fedora-release

・Debian系

cat /etc/debian_version 

rootユーザのssh接続無効化


次は、rootユーザのssh接続無効化をします
rootユーザは最高権限を有するユーザですが、特性上ユーザ名は自明で、パスワードが流出するだけでログイン出来てしまいます

WindowsServerで、管理者ユーザを新規作成しAdministratorグループに追加し、Administratorユーザを無効化したのと同じような作業をします

[スポンサーリンク]


管理用ユーザをwhellグループに追加


管理に使用するユーザをwhellグループに追加して、sudo権限を付与します

sudo権限は、スーパーユーザ(root)の特権レベルで、全てコマンドを実行出来る権限で、rootユーザと同じ動作が可能になる権限です

そして、whellグループはRedHat系にあるデフォルトで作成されるグループです
既定では、sudo権限をもつグループとして作成されます

sodouserについては、/etc/sudoersで管理されています
%whellの記載が、コメントアウト「#]されていなければ、whellグループのユーザは全てのコマンドが実行できます

WindowsServerでいうAdministratorグループと同じようなグループになります

cat /etc/sudoers
# cat /etc/sudoers | grep wheel
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
# %wheel        ALL=(ALL)       NOPASSWD: ALL

usermodコマンドを使用して、wheelグループに管理に使用するユーザを追加します
今回は、-Gオプションで、補助グループとしてwheelグループに追加しました

usermod -G wheel <ユーザ名>
# usermod -G wheel username
#

getentコマンドを使用して、ユーザがwhellグループに追加されていることを確認します

getentコマンドは、データベース(ファイル)に対し、キーで検索するコマンドです
今回は、データベース「group」に、キー「wheel」で検索します

getent group wheel

「グループ名:パスワード:ユーザID:ユーザ名」が表示されます
パスワードはシャドウパスワードで、実際のパスワードは表示されません

# getent group wheel
wheel:x:10:<ユーザ名>
#

無事、管理用のユーザがwhellグループに追加出来ました

次回このユーザでログインすれば、全てのコマンドが実行出来ます
既にログイン状態の場合は、一度ログアウトして、再ログインが必要です

因みに、getentコマンドは、「group」以外のデータベースも検索出来ます
例えば、「passwd」データベースを検索することで、パスワードに関する情報を確認も出来ます


rootユーザでのssh接続の無効化


ssh接続に関する設定は、/etc/ssh/sshd_configにあります
このconfigの中の、PermitRootLoginという項目で、rootユーザのssh接続可否が定義されています

既定では、該当の項目はコメントアウトされていて、設定自体が無効となっています

cat /etc/ssh/sshd_config | grep PermitRootLogin
# cat /etc/ssh/sshd_config | grep PermitRootLogin
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
#

今回は、この項目を「no」に変更して、rootユーザでのssh接続を無効(許可しない)にします
重要なconfig設定なので、変更前にバックアップを取得しておきます

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk$(date +%Y%m%d%H%M)
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk$(date +%Y%m%d%H%M)
# ls -trl /etc/ssh/sshd_config*
-rw-------. 1 root root 3907  8月  9 10:40 /etc/ssh/sshd_config
-rw-------. 1 root root 3907 11月 30 16:05 /etc/ssh/sshd_config_bk201911301605
#

PermitRootLoginの項目のコメントアウト(#)を外します
そして、値を「no」とすることで、接続許可を奪います

# cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin no
# the setting of "PermitRootLogin without-password".
#

最後に、設定変更した内容を反映する為に、sshのサービスを再起動します

service sshd restart
# service sshd restart
Redirecting to /bin/systemctl restart sshd.service

これで、rootユーザでのsshの接続が無効されています
実際にssh接続が出来なくなっていることを確認して、完了です

[スポンサーリンク]

気に入った記事があればコメント、シェアお願い致しますm(_ _"m)ペコリ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメント

お名前 *

ウェブサイトURL