変更要約: 初版(主題1.10・副主題1.10.1〜1.10.4に対応)
5.2ホストのセキュリティ設定
ホストの攻撃面を減らす設定を学びます。シャドウパスワードの役割と/etc/nologin によるログイン抑止、使用していないネットワークサービスの停止(systemctl・/etc/init.d/・chkconfig・service、レガシーのinetd/xinetd)、ファイアウォールの概要(iptables・firewalld)を押さえます。
ホスト防御の第一原則は「動いていないものは攻撃できない」です。不要なサービスを止めて攻撃面を減らし、残った入口をファイアウォールで絞る——この2段構えの基礎を固めます。
5.2.1不要サービスの停止とログイン抑止
- 現行=systemctl:
systemctl stop(今止める)+systemctl disable(次回起動から無効) の2段。systemctl list-unit-files --state=enabledで有効サービスを棚卸し。 - レガシー=service start/stop・chkconfig(RHEL 系の自動起動管理)・/etc/init.d/ のスクリプト。古い環境の問題ではこちらが正解になる。
- inetd/xinetd=要求が来たときだけサービスを起動するスーパーサーバー(設定は /etc/inetd.conf・/etc/xinetd.d/)。現代では systemd ソケットに置き換わったが、無効化すべきレガシー入口として出題される。
- シャドウパスワード=ハッシュを /etc/shadow(root のみ可読)へ分離する仕組み(3.1 の復習)。/etc/nologin=このファイルが存在すると root 以外のログインを拒否(メンテナンス時の即席ゲート・中身は表示されるメッセージ)。
5.2.2ファイアウォールの概要
- iptables=カーネルのパケットフィルタ(netfilter)をルールチェーン(INPUT/OUTPUT/FORWARD)で直接制御する伝統ツール。
- firewalld=ゾーン(public・internal 等)とサービス名で管理する現行の高水準ツール(
firewall-cmd --add-service=https --permanent→--reload)。--permanent を付けないと再起動で消える。 - 基本方針=既定拒否+必要な口だけ許可(デフォルト拒否)。1.10.1 の「内 ss・外 nmap」の差分確認とセットで運用する。
「stop(今)と disable(次回以降)は別物=恒久停止は両方」「/etc/nologin が存在すると一般ユーザーはログイン不可」「firewalld=ゾーンとサービス名・--permanent 必須」「xinetd=オンデマンドのスーパーサーバー(レガシー)」 が定番です。「iptables と firewalld の同時併用はしない」という運用注意も選択肢に出ます。
新規サーバーの堅牢化(ハードニング)を手順化しましょう。
①systemctl list-unit-files --state=enabled で有効サービスを棚卸し、要件に無いもの(例:使わない cups・avahi)を systemctl stop X && systemctl disable X で現在と将来の両方止めます。
②ss -tlnp で残った LISTEN を確認し、想定リスト(22/80/443 など)と一致するまで
①を繰り返します。
③firewalld で既定ゾーンを絞り、firewall-cmd --add-service=ssh --add-service=https --permanent && firewall-cmd --reload のように必要な口だけ開けます——ここで --permanent を忘れると「再起動したら閉じていた/開いていた」事故になります。
④計画メンテナンスの際は echo "メンテナンス中 03:00 まで" > /etc/nologin を置けば、root 以外の新規ログインを一時停止でき、終わったら削除するだけです。試験では「サービスを止めたのに再起動後に復活した」→ disable を忘れている、が最頻出のシナリオです。
| 目的 | 現行の手段 | レガシー/補足 |
|---|---|---|
| サービスを止める(今) | systemctl stop | service X stop |
| 自動起動を無効化 | systemctl disable | chkconfig X off |
| ファイアウォール管理 | firewalld(ゾーン・--permanent) | iptables(チェーン直接) |
| 一般ログインの一時停止 | /etc/nologin を作成 | 中身が表示メッセージに |
ひっかけ: 「systemctl stop すればサービスは再起動後も止まったまま」は誤りです。stop は現在のみで、enabled のままなら再起動で復活します(恒久停止は disable も)。また「firewall-cmd --add-service=https だけで設定は永続化される」も誤り=--permanent+--reload が要ります。「/etc/nologin は root のログインも拒否する」も誤り(root は入れる=復旧手段を残す設計)です。
5.2.3この節のまとめ
- 堅牢化=棚卸し→stop+disable→ss で確認→firewalld で既定拒否・必要な口だけ(--permanent)
- nologin=存在すれば一般ログイン拒否(rootは可)・レガシー=service/chkconfig/init.d・xinetd はオンデマンド起動
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 使用していない cups サービスを、今すぐ止めたうえで再起動後も起動しないようにしたい。適切な手順は?
Q2. メンテナンスのため、root 以外のユーザーの新規ログインを一時的に拒否したい。最も簡単な方法は?
Q3. firewalld 環境で HTTPS の通信を恒久的に許可したい。正しいコマンドの組み合わせは?

