[スポンサーリンク]
CentOS7をインストール後にすること
先日、WindowsServer2019のHyper-V環境の仮想マシンに、CentOS7をインストールしました
CentOS7などのLinuxをイントール後に、実施したほうがいいこととして、2つ作業を実施したいと思います
①パッケージのアップデート
②rootユーザのssh接続無効化
ClamAVのようなウィルス対策ソフトのインストールもした方がいいのですが、何を使おうか迷っているので、また今度(汗)
[スポンサーリンク]
パッケージのアップデート
CentOS7にインストールされているパッケージの、アップデートを実行します
今回は初回イントール後で、なにもアプリケーション等は動作していません
なので、カーネルも含めて、アップデートしていきます
もし実運用中のサーバで、アプリケーションとカーネルの依存関係に問題がある場合等は、除外が必要です
下記サイトのような方法で、アップデートの対象から、カーネルを除外する対処が可能です
カーネルはLinuxOSの根幹部分です
広義の場合は、カーネル=OSの意味で記載しているサイトなどもあります
正確には、シェルやデスクトップ環境などもあるので異なりますが
(この辺りも勉強していかなければ)
Linuxでカーネルのアップデートを行うのは、WindowsUpdateを行うのと同じようなイメージです
インストール後のカーネルのリリース番号、バージョン情報を確認
unameコマンドで、現在のカーネルのリリース番号、バージョン情報を確認します
unameコマンドは、システム情報を確認するコマンドとなります
unameコマンドの使い方を確認してみます
1 |
uname --help |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 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オプションで、カーネルのリリース番号、バージョン情報を確認します
1 |
uname -a |
1 2 3 |
# 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オプションを使った場合の表示内容は、ヘルプの記載の項目が順番に表示されます
・カーネル名
1 2 |
# 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・ハードウェア名
1 2 |
# uname -m x86_64 |
・プロセッサの種類
1 2 |
# uname -p x86_64 |
・ハードウェアプラットフォーム
1 2 |
# uname -i x86_64 |
・オペレーティングシステムの名前
1 2 |
# 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が、キャッシュに残った古い情報を元に動作することで、最新にアップデート出来なかったりすることで、アップデートが不完全であったり、失敗したりすることがあります
今回は、初回アップデートであるので、不要ですが勉強の為に実行してみます
1 |
yum clean all |
1 2 3 4 5 6 7 |
# 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″となっていました
1 |
cat /etc/yum.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 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コマンドで実行して、アップデート対象を確認してから実行した方がいいですね
1 |
yum check-update |
今回は、yオプションを付けて、全てのパッケージをアップデートしていきます
yオプションは、すべての問い合わせに「yes」で答えるオプションです
yオプションを付けない場合は、パッケージをアップデートするか確認されます
check-updateコマンドの結果、アップデートしたくないパッケージなどがあった場合は、「no」と答えるアップデートしないことが可能です
yumコマンドの使い方を確認してみます
1 |
yum --help |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# 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 プラグインのオプション: |
では、アップデートを実行します
1 |
yum -y update |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 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コマンドで、カーネルのリリース番号、バージョン情報を確認し、アップデートが成功しているか確認してみます
1 2 3 |
# 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のリリースバージョンは、リリースファイルを確認することでも確認出来ます
リリースファイルは、下記のパスになります
1 |
/etc<ディストリビューション名>-release |
CentOSの場合は、RedHat系なので、下記コマンドで確認出来ます
1 |
cat /etc/redhat-release |
1 2 3 |
# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) # |
主なディストリビューションのリリースファイルは下記で確認出来ます ・RedHat系
1 |
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グループと同じようなグループになります
1 |
cat /etc/sudoers |
1 2 3 4 |
# 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グループに追加しました
1 |
usermod -G wheel <ユーザ名> |
1 2 |
# usermod -G wheel username # |
getentコマンドを使用して、ユーザがwhellグループに追加されていることを確認します
getentコマンドは、データベース(ファイル)に対し、キーで検索するコマンドです
今回は、データベース「group」に、キー「wheel」で検索します
1 |
getent group wheel |
「グループ名:パスワード:ユーザID:ユーザ名」が表示されます
パスワードはシャドウパスワードで、実際のパスワードは表示されません
1 2 3 |
# getent group wheel wheel:x:10:<ユーザ名> # |
無事、管理用のユーザがwhellグループに追加出来ました
次回このユーザでログインすれば、全てのコマンドが実行出来ます
既にログイン状態の場合は、一度ログアウトして、再ログインが必要です
因みに、getentコマンドは、「group」以外のデータベースも検索出来ます
例えば、「passwd」データベースを検索することで、パスワードに関する情報を確認も出来ます
rootユーザでのssh接続の無効化
ssh接続に関する設定は、/etc/ssh/sshd_configにあります
このconfigの中の、PermitRootLoginという項目で、rootユーザのssh接続可否が定義されています
既定では、該当の項目はコメントアウトされていて、設定自体が無効となっています
1 |
cat /etc/ssh/sshd_config | grep PermitRootLogin |
1 2 3 4 |
# cat /etc/ssh/sshd_config | grep PermitRootLogin #PermitRootLogin yes # the setting of "PermitRootLogin without-password". # |
今回は、この項目を「no」に変更して、rootユーザでのssh接続を無効(許可しない)にします
重要なconfig設定なので、変更前にバックアップを取得しておきます
1 |
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk$(date +%Y%m%d%H%M) |
1 2 3 4 5 |
# 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」とすることで、接続許可を奪います
1 2 3 4 |
# cat /etc/ssh/sshd_config | grep PermitRootLogin PermitRootLogin no # the setting of "PermitRootLogin without-password". # |
最後に、設定変更した内容を反映する為に、sshのサービスを再起動します
1 |
service sshd restart |
1 2 |
# service sshd restart Redirecting to /bin/systemctl restart sshd.service |
これで、rootユーザでのsshの接続が無効されています
実際にssh接続が出来なくなっていることを確認して、完了です
[スポンサーリンク]
コメント