Linuxカーネルパラメータsysctlによるセキュリティ強化とチューニング
Linuxのsysctlを使ってカーネルパラメータを最適化し、セキュリティを強化する方法を解説。実用的な設定例とチューニングのポイントを紹介。
カーネルパラメータsysctlとは?
sysctlは、Linuxカーネルの動作パラメータを動的に変更・確認するためのツールです。セキュリティ強化やパフォーマンスチューニングに広く利用され、/proc/sys/以下のファイルを操作することで、カーネルの挙動を細かく制御できます。
sysctlの基本的な使い方
現在のパラメータを確認
<h1>すべてのパラメータを表示</h1>
sysctl -a
<h1>特定のパラメータを確認</h1>
sysctl net.ipv4.ip_forward
一時的に変更
<h1>ルート権限が必要</h1>
sudo sysctl -w net.ipv4.ip_forward=1
永続的に設定
/etc/sysctl.confまたは/etc/sysctl.d/配下に.confファイルを作成して設定を記述します。
<h1>/etc/sysctl.d/99-security.conf に設定を追加</h1>
echo 'net.ipv4.ip_forward = 0' | sudo tee -a /etc/sysctl.d/99-security.conf
<h1>設定を即時反映</h1>
sudo sysctl --system
セキュリティ強化のための主要なパラメータ
1. IP Spoofing対策
<h1>送信元ルーティングを無効化</h1>
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
<h1>リダイレクトパケットを無視</h1>
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
<h1>送信元アドレス検証を有効化(rp_filter)</h1>
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
2. SYN Flood攻撃対策
<h1>SYNクッキーを有効化</h1>
net.ipv4.tcp_syncookies = 1
<h1>SYNバックログを調整</h1>
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
3. カーネル情報漏洩防止
<h1>カーネルパニック時の情報表示を制限</h1>
kernel.panic = 10
kernel.panic_on_oops = 1
<h1>コアダンプを制限</h1>
fs.suid_dumpable = 0
kernel.core_uses_pid = 1
4. ネットワークセキュリティ強化
<h1>ICMPリダイレクト拒否</h1>
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
<h1>ブロードキャストpingを無視</h1>
net.ipv4.icmp_echo_ignore_broadcasts = 1
<h1>不正なICMPエラーを無視</h1>
net.ipv4.icmp_ignore_bogus_error_responses = 1
<h1>タイムスタンプ無効化</h1>
net.ipv4.tcp_timestamps = 0
5. メモリとプロセスのセキュリティ
<h1>ASLR強化</h1>
kernel.randomize_va_space = 2
<h1>ptraceスコープ制限</h1>
kernel.yama.ptrace_scope = 1
<h1>共有メモリの制限</h1>
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
パフォーマンスチューニングのポイント
ファイルディスクリプタ制限
<h1>システム全体のファイルディスクリプタ上限</h1>
fs.file-max = 100000
<h1>ユーザーあたりの上限(別途limits.confも設定)</h1>
fs.nr_open = 1048576
ネットワークバッファ最適化
<h1>送受信バッファの自動調整</h1>
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
<h1>TCPバッファ</h1>
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
カーネルスケジューリング
<h1>スケジューラのレイテンシ調整</h1>
kernel.sched_latency_ns = 10000000
kernel.sched_min_granularity_ns = 4000000
kernel.sched_wakeup_granularity_ns = 4000000
設定の適用と確認
設定ファイルの作成
推奨される方法は、/etc/sysctl.d/に用途別のファイルを作成することです。
sudo nano /etc/sysctl.d/99-custom.conf
設定の反映
sudo sysctl --system
変更を確認
sysctl net.ipv4.tcp_syncookies
注意点
sysctl -aで確認する。*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*
まとめ
sysctlによるカーネルパラメータの調整は、Linuxサーバーのセキュリティ強化とパフォーマンス最適化に非常に効果的です。本記事で紹介した設定を参考に、自環境に合わせてチューニングを行ってください。ただし、過度な設定はシステムの不安定化を招く可能性があるため、テスト環境で十分に検証してから本番環境に適用しましょう。