Linux実技テストではご自身でLinuxサーバを準備いただき、実際に設定を行っていただきます。 テストで使用するLinuxサーバ用の仮想マシンは下記を最小スペックとします。 仮想マシンスペック CPU 2コア メモリ 4GB OS領域用ディスク 30GB 追加ディスク 10GB 仮想マシンを作成しましたら、OSとしてAlmaLinux9をインストールしてください。 他のOSを使用された場合には正しく設定ができていたとしても、解答が正解とならない場合があります。 AlmaLinux9のOSをインストールされる際には、インストール画面にて下記のように設定してください。 インストール設定 キーボード Japanese 言語サポート English (United States) 時刻と日付 地域:アメリカ大陸 都市:ニューヨーク ネットワーク時刻:オフ ソフトウェアの選択 最小限のインストール OSのインストール先 OS領域用ディスク ユーザの作成 なし(OSインストール時はrootユーザのみとします) 仮想マシンを作成するための仮想化ソフトウェアは、ご自身のPC環境に合わせて適宜選択してください。 本テストではAlmaLinuxのバージョンとして「9.6」にて動作確認を行っています。 課題1. 仮想マシンは開発用サーバとして使用することを想定し、ホスト名を「develop.example.com」とします。 この名前で仮想マシンにホスト名を設定してください。 課題2. 課題1で設定したホスト名から開発用サーバのIPアドレスに名前解決できるように設定ファイル(/etc/hosts)を設定してください。 IPアドレスについては自身の開発用サーバに設定しているものを適宜使用してください。 課題3. 開発用サーバにインストール済みのパッケージを最新化します。 開発用サーバでパッケージアップデートを実施してください。 課題4. 開発用サーバにAlmaLinuxをインストールすると、デフォルトの設定ではSELinuxは有効(Enforcingモード)になっているかと思われます。 SELinuxの設定はデフォルトのまま有効にしておくことが推奨されますが、今回は後続の課題での設定の簡易化のため、無効にしてください。 ※SELinuxの無効化はPermissiveモードではなくDisabled状態とします。 ※SELinuxの無効化には設定ファイルでの設定だけでなく、カーネルパラメータでの設定も実施してください。 課題5. サーバへのログイン記録やログを確認する際に、時刻が正確であることが重要です。 開発用サーバに下記の設定を行い、正確な時刻が記録されるようにしてください。 設定内容①:タイムゾーンを東京に設定します。 設定内容②:ChronyをインストールしてNTPサーバに時刻同期します。 ※時刻同期先についてはChronyのデフォルト設定から変更不要です。 課題6. AlmaLinux9のOSインストール時のデフォルト設定では、ファイアウォールとしてfirewalldが有効化され、サーバ外部から「cockpit」サービスへのアクセスが許可されています。 今回の課題の中ではCockpitを使用する予定はありませんので、「cockpit」サービスに対するアクセス許可を削除してください。 ※「cockpit」サービス以外については削除しないでください。 課題7. 仮想マシンの作成時に仮想マシンに追加ディスクを割り当てました。 ここでは追加ディスクに以下の要件でファイルシステムを作成し、開発用サーバにマウントしてください。 要件①:追加ディスクにLVMを設定します。ボリュームグループ名をvg01、論理ボリューム名をlv01とします。なお、追加ディスクに対してパーティションを作成する必要はありません。 要件②:ファイルシステムの種類はXFSとします。 要件③:マウントポイントは/backupとします。ディレクトリが存在しない場合は新規に作成してください。 要件④:マウント設定にはsystemdのmountユニットを使用します。ユニット名は「backup.mount」としてください。 課題8. 開発用サーバに実施した設定のバックアップを取得します。 /etcディレクトリに対してtarコマンドを実行してアーカイブファイルを作成してください。アーカイブファイルはgzipで圧縮し、/backupディレクトリに配置します。 ※アーカイブファイルのパスは「/backup/etc.tar.gz」とします。 課題9. 課題10にて開発用サーバにユーザを作成します。 ここではユーザの作成前に、ユーザに設定するパスワードの複雑さを設定します。 パスワードが下記の要件を満たさない場合にユーザがパスワードを設定することを拒否するように、設定してください。 要件①:パスワードの文字数を14文字以上とします。 要件②:パスワードに英大文字、英小文字、数字、記号をそれぞれ最低1文字以上含むものとします。 課題10. 開発用サーバにユーザとして「user01」を作成し、パスワードを設定してください。 ユーザに設定するグループは以下の要件とします。 要件①:プライマリグループを「localadmins」とします。グループが存在しない場合は新規に作成してください。 要件②:補助グループに「wheel」を設定します。この設定によりユーザが自身のパスワードを入力することでsudoコマンドを使用できるようになります。 ※パスワードは課題9の要件を満たすものであれば任意の文字列とします。 ※ユーザのホームディレクトリは「/home/user01」とします。 課題11. 開発用サーバにuser01ユーザでログインしてください。 課題12で開発用サーバへのSSHログインを公開鍵認証のみに制限しますので、ここではuser01ユーザに公開鍵認証でのSSHログインができるように設定します。 下記の2つの作業を実施してください。 作業①:SSHキーペア(公開鍵と秘密鍵)を作成してください。キーペアのタイプはEd25519とします。 作業②:作成したSSH公開鍵をuser01ユーザのauthorized_keysに登録してください。 ※秘密鍵は自身の作業端末(PC等)にダウンロードし、user01ユーザにログインできることを確認してください。確認せずに課題12の作業を実施すると、開発用サーバにログインできなくなる場合があります。 課題12. user01ユーザにSSHログインしrootユーザに切り替えます。 rootユーザに切り替えられることを確認したら、開発用サーバへのSSHログインについて下記の要件を満たすように設定してください。 要件①:パスワードを使用したログインを不可とします。 要件②:rootユーザへのログインを、公開鍵認証を含め不可とします。 課題13. user01ユーザのホームディレクトリに下記の内容でスクリプトファイルとしてdecrypt.shを作成してください。 #!/bin/bashecho -n "U2FsdGVkX1/Zc/vODFEjqvN1Utlb9Sj51ax0V/UjVmM=" | \ base64 -d | \ openssl enc -d -aes256 -pbkdf2 -k "$(realpath $0)" -out - スクリプトファイル実行し、出力される文字列をメモしてください。 課題14. 開発用サーバに「ansible-core」パッケージをインストールしてください。 パッケージのインストール後、ansibleコマンドで開発用サーバを対象にして「ansible.builtin.setup」モジュールを実行し、「ansible_distribution」の値をメモしてください。 課題15. user01ユーザのホームディレクトリに下記の内容でテキストファイルとしてencrypted.txtを作成してください。 $ANSIBLE_VAULT;1.1;AES256 31646330616132656638373430626662373864653436366663383936306636346466656136613935 6232376334346565393638333538613865663261336161360a303764333535616131373963376337 66623031656365666531383433636461663134313836316537383065636530623434663566306164 3734383465333762340a653034623534363466663935373261363766363338303236336266653562 3135 Ansible Vaultを使用して上記ファイルを解凍し、記載内容をメモしてください。なお解凍の際に入力するパスワードは「ansible」です。 課題16. user01ユーザのホームディレクトリに下記の内容でプレイブックファイルとしてcron.yamlを作成してください。 --- - name: Sample playbook hosts: localhost tasks: - name: Sample task ansible.builtin.cron: name: Logging login users job: "w | logger" minute: 0 user: root cron_file: /etc/cron.d/logging_users state: present become: yes become_user: root プレイブックファイルを作成したら実行してください。 ※プレイブックファイルはサーバにログインしているユーザを定期的にログに記録するように設定しています。 課題17. 課題16で使用しているコマンド「w」が何のパッケージでインストールされているか、パッケージ名を特定してください。 ※パッケージ名の特定にはwhichコマンドやrpmコマンドを使うと良いでしょう。 問1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 uname -n 問2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。※[IPアドレス]には自身の開発用サーバのものを使用してください。 getent hosts [IPアドレス] | awk '{print $2}' 問3. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 dnf check-update >/dev/null 2>&1 || dnf history 2>/dev/null | grep -q " update "; echo $? 問4-1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 getenforce 問4-2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 cat /proc/cmdline | tr ' ' '\n' | grep -oP "(?<=selinux=).*" 問5-1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 systemctl is-enabled chronyd 問5-2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 date +%Z 問6. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 firewall-cmd --list-services --zone=public 問7. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 findmnt -n /backup | awk '{print $1,$2,$3}' 問8. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 tar tf /backup/etc.tar.gz | grep fstab 問9-1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 echo "1nvalidPassword" | pwscore 2>&1 | grep -oP "(?<=The password contains less than ).*" 問9-2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 echo "passWORD#1234" | pwscore 2>&1 | grep -oP "(?<=The password is shorter than ).*" 問10-1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 echo "$(id -un user01),$(id -gn user01),$(id -Gn user01)" 問10-2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 passwd -S user01 | awk '{print $2}' 問11-1. user01ユーザで以下のコマンドを実行した結果を解答欄に入力してください。 ssh-keygen -l -f ~/.ssh/id_ed25519 | awk '{print $4}' 問11-2. user01ユーザで以下のコマンドを実行した結果を解答欄に入力してください。 ssh -v -o StrictHostKeyChecking=no user01@127.0.0.1 hostname 2>&1 | grep -oP "(?<=Server accepts key: ).*(?= ED25519)" 問12-1. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 sshd -T | grep passwordauthentication 問12-2. rootユーザで以下のコマンドを実行した結果を解答欄に入力してください。 sshd -T | grep permitrootlogin 問13. 課題13で出力された文字列を解答欄に入力してください。 問14. 課題14で出力された文字列を解答欄に入力してください。 問15. 課題15で出力された文字列を解答欄に入力してください。 問16. プレイブックを実行することで/etc/cron.d/logging_usersファイルが作成されます。/etc/cron.d/logging_users に設定されている設定内容を解答欄に入力してください。※コメント部分は入力不要です。 問17. 問題17で特定したパッケージ名を解答欄に入力してください。パッケージ名のみを解答し、バージョン等の記載は不要です。※コマンドが「ansible」であれば、「ansible-core-2.14.18-1.el9.x86_64」ではなく「ansible-core」と入力することになります。 お疲れ様でした。実技テストはこれで終了です。 テストを終了して採点する場合は受験IDを入力して採点ボタンを押してください。 見直す場合は前へボタンから戻ることができます。 受験ID Time's up