〜Linuxを「侵入されにくく・壊されにくく」するための実践知識〜
332.1 ホストハーデニング
BIOS / ブートローダ(GRUB2)セキュリティ
- BIOS/UEFI パスワード設定
- 外部メディア起動の禁止
- GRUB2 にパスワード設定
不要なソフトウェア・サービスの無効化
- 使っていないパッケージは削除
- 不要な systemd サービスは停止・無効化
systemctl disable --now telnet.service
攻撃対象領域(Attack Surface)を減らす
systemd ユニットによる機能制限
- 不要な Linux 機能を無効化
- プロセスに最小権限を与える
代表例:
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ASLR / DEP / Exec-Shield
- ASLR:メモリアドレスのランダム化
- DEP:実行不可メモリ
- Exec-Shield:脆弱性対策の総称
確認・設定例:
sysctl kernel.randomize_va_space
USBGuard による USB 制御
- USB デバイスのホワイトリスト / ブラックリスト管理
- 不正 USB デバイスの接続防止
設定ファイル:
/etc/usbguard/usbguard-daemon.conf/etc/usbguard/rules.conf
SSH 証明書(SSH CA)
- 公開鍵を直接配布しない
- CA が署名した SSH 証明書を利用
メリット:
- 鍵管理が簡単
- 有効期限付き
- 失効管理が容易
ssh-keygen -s ca.key user.pub
chroot 環境
- プロセスのルートディレクトリを制限
- 被害範囲を閉じ込める
systemd による実行環境の隔離
- 専用 /tmp
- /dev の制限
- ネットワーク無効化
- デバイスアクセス制御
PrivateNetwork=true
PrivateDevices=true
systemd によるリソース制限
- CPU
- メモリ
- ファイルディスクリプタ数
MemoryMax=500M
CPUQuota=50%
Meltdown / Spectre 対策
- CPU の投機実行に関する脆弱性
- パフォーマンスへの影響あり
- 有効 / 無効の影響を理解することが重要
polkit
- 権限昇格の制御フレームワーク
- systemctl などの操作制御に利用
仮想化・コンテナのセキュリティ利点
- 隔離
- 最小構成
- ホスト被害の抑制
332.2 ホスト侵入検知
Linux Audit(auditd)
- システムコール監視
- ファイルアクセス監査
- セキュリティイベントの証跡
auditctl -l
ausearch
aureport
pam_tty_audit
- 特定ユーザの操作ログを取得
- インサイダー対策
chkrootkit
- ルートキット検出
- 軽量・即時スキャン向け
chkrootkit
rkhunter
- より詳細なルートキット検出
- 設定・更新が重要
rkhunter --check
設定ファイル:
/etc/rkhunter.conf
Linux Malware Detect(maldet)
- Linux 向けマルウェア検出
- Web サーバでよく利用
maldet --scan-all /
cron による自動スキャン
- 定期的な検査が重要
- 夜間・低負荷時間帯に実行
パッケージ整合性チェック
- RPM / DPKG によるファイル改ざん検知
rpm -Va
dpkg -V
AIDE(Advanced Intrusion Detection Environment)
- ファイル整合性チェック
- 初期状態を DB に保存
- 改ざんを検知
aide --init
aide --check
設定:
/etc/aide/aide.conf
OpenSCAP
- セキュリティベンチマーク評価
- CIS / STIG 準拠チェック
332.3 リソース制御
ulimit
- ユーザ単位のリソース制限
ulimit -n
設定:
/etc/security/limits.confpam_limits.so
cgroups(Control Groups)
- プロセス単位のリソース制御
- CPU / メモリ / IO
確認:
/proc/cgroups
/sys/fs/cgroup/
systemd と cgroups
- systemd は cgroups のフロントエンド
- Slice / Scope / Service
systemd-cgls
systemd-cgtop
systemd ユニットでの制御
- サービス単位で制限
- OS 全体への影響を防ぐ
cgmanager / libcgroup
- 旧来の cgroups 管理ツール
- 知識として理解しておく