ホストの堅牢化 〜Linuxホストを脅威から守るために〜

目次

はじめに

本章では、Linuxサーバを一般的な脅威から保護するための「ホストの堅牢化(Hardening)」手法について解説します。堅牢化とは、不要な機能やサービスを削除し、攻撃者に付け入る隙を与えないようにシステムを保護することです。

セキュリティを強化するには、OSレベルからプロセス制限、仮想化の取り扱いに至るまで多角的な対策が必要です。本章でそれらを体系的に学んでいきましょう。


1. BIOSとブートローダー(GRUB 2)の強化

1.1 BIOSパスワードの設定

BIOS/UEFIレベルでの保護により、物理アクセスを受けた際の起動設定変更やOSの起動妨害を防ぎます。

  • 管理者パスワードの設定
  • ブートデバイス順の固定化(USB等からの起動無効化)

1.2 GRUB 2 のパスワード保護

GRUB 2ブートローダーにパスワードを設定することで、カーネルパラメータの変更やレスキューモード起動を制限できます。

設定手順(RHEL系例):

  1. grub-mkpasswd-pbkdf2で暗号化パスワード生成: grub-mkpasswd-pbkdf2
  2. /etc/grub.d/40_custom に追記: set superusers="admin" password_pbkdf2 admin [生成したハッシュ]
  3. grub.cfg再生成: grub2-mkconfig -o /boot/grub2/grub.cfg

2. 不要なサービスとソフトウェアの無効化

攻撃対象領域(attack surface)を減らすため、使用していないデーモンやパッケージは無効または削除しましょう。

使用コマンド:

  • systemctl list-units --type=service(稼働中サービス一覧)
  • systemctl disable <サービス名>
  • yum remove / apt remove (不要パッケージ削除)

chkconfig(古いinit系):

chkconfig --list
chkconfig httpd off

3. カーネルパラメータによる防御(sysctl)

sysctl を使ってカーネルの挙動を調整し、セキュリティ向上が可能です。

主な設定項目(/etc/sysctl.conf):

設定項目意味
kernel.randomize_va_spaceASLR(アドレス空間配置のランダム化)
net.ipv4.icmp_echo_ignore_allPing 応答の無効化(DoS対策)
net.ipv4.conf.all.accept_source_routeソースルートパケット無効化

反映方法:

sysctl -p

4. リソース使用量の制限

DoS攻撃や過負荷防止のため、ulimitやPAMモジュールでユーザーごとの制限を設けます。

設定ファイル:

  • /etc/security/limits.conf user1 hard nofile 1024 user1 soft nproc 100
  • PAM設定(例:/etc/pam.d/common-session に追加): session required pam_limits.so

5. chroot環境での隔離

信頼できないプログラムや限定的な作業環境は、chrootで隔離して実行可能です。これは、実質的な「ミニマルOS環境」を作る技術です。

使用例(Webサーバなど):

  • /var/www/chroot 以下に必要なディレクトリとバイナリを用意
  • chrootで指定したパスをルートとみなしてサービスを起動

6. 不要な機能権限の削除

  • setuidsetgid ビットのついた不要なファイルは削除
  • 実行バイナリに対して chmod -s で特権を削除可能
  • find を用いた確認: find / -perm /6000 -type f

7. 仮想化環境のセキュリティ意識

仮想マシン上のセキュリティも重要です。特に以下の点に注意します:

  • ホストからゲストへのアクセス遮断
  • 仮想スイッチの分離
  • 管理インターフェース(例えばlibvirt)へのアクセス制御

章末まとめ

セキュリティ対策ツール/ファイル
GRUBの保護/etc/grub.d/40_custom, grub.cfg
不要サービス無効化systemctl, chkconfig
カーネル設定強化sysctl, /etc/sysctl.conf
リソース制限ulimit, limits.conf, pam_limits.so
プログラムの隔離chroot
仮想化対策libvirt, KVM, VMwareの設定

章末問題(四択)

Q1. GRUB 2の設定で、起動時に管理者パスワードを設定するには、どのファイルを編集すべきか?
A. /etc/passwd
B. /etc/default/grub
C. /etc/grub.d/40_custom
D. /boot/vmlinuz

解説

正解:C

GRUBのカスタム設定は /etc/grub.d/40_custom に記述します。

Q2. 不要なサービスをsystemdで無効にする正しいコマンドはどれか?
A. systemctl stop
B. systemctl disable
C. chkconfig off
D. kill -9

解説

正解:B

systemctl disable で起動時の自動起動を無効化します。


Q3. sysctlでASLR(アドレス空間ランダム化)を有効にするパラメータは?
A. kernel.aslr.enable
B. vm.memory_protection
C. kernel.randomize_va_space
D. net.ipv4.tcp_secure

解説

正解:C

kernel.randomize_va_space はASLRの設定項目です。

Q4. Linuxでリソース制限を恒久的に設定するファイルは?
A. /etc/sysconfig/ulimit
B. /etc/security/limits.conf
C. /etc/login.defs
D. /etc/default/resource

解説

正解:B

limits.confulimit 設定の恒久的な指定ファイルです。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次