はじめに
本章では、Linuxサーバを一般的な脅威から保護するための「ホストの堅牢化(Hardening)」手法について解説します。堅牢化とは、不要な機能やサービスを削除し、攻撃者に付け入る隙を与えないようにシステムを保護することです。
セキュリティを強化するには、OSレベルからプロセス制限、仮想化の取り扱いに至るまで多角的な対策が必要です。本章でそれらを体系的に学んでいきましょう。
1. BIOSとブートローダー(GRUB 2)の強化
1.1 BIOSパスワードの設定
BIOS/UEFIレベルでの保護により、物理アクセスを受けた際の起動設定変更やOSの起動妨害を防ぎます。
- 管理者パスワードの設定
- ブートデバイス順の固定化(USB等からの起動無効化)
1.2 GRUB 2 のパスワード保護
GRUB 2ブートローダーにパスワードを設定することで、カーネルパラメータの変更やレスキューモード起動を制限できます。
設定手順(RHEL系例):
grub-mkpasswd-pbkdf2で暗号化パスワード生成:grub-mkpasswd-pbkdf2/etc/grub.d/40_customに追記:set superusers="admin" password_pbkdf2 admin [生成したハッシュ]- 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_space | ASLR(アドレス空間配置のランダム化) |
net.ipv4.icmp_echo_ignore_all | Ping 応答の無効化(DoS対策) |
net.ipv4.conf.all.accept_source_route | ソースルートパケット無効化 |
反映方法:
sysctl -p
4. リソース使用量の制限
DoS攻撃や過負荷防止のため、ulimitやPAMモジュールでユーザーごとの制限を設けます。
設定ファイル:
/etc/security/limits.confuser1 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. 不要な機能権限の削除
setuidやsetgidビットのついた不要なファイルは削除- 実行バイナリに対して
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.conf は ulimit 設定の恒久的な指定ファイルです。
コメント