ContainerOSはAlibaba Cloud Linux 3に基づいており、コンテナ化シナリオ向けに垂直方向に最適化されています。 Alibaba Cloud Linux 3と比較して、ContainerOSは、より高いセキュリティ、より高速な起動速度、および合理化されたシステムサービスとソフトウェアパッケージを提供します。 このトピックでは、ContainerOSのセキュリティ強化に関する提案について説明します。
ContainerOSはコンテナー化ワークロードを対象としています。 ほとんどのクラウドネイティブシナリオで不要なソフトウェアパッケージは、ContainerOSから削除され、インスタンスの攻撃に対する脆弱性を軽減します。 OSのセキュリティをさらに強化するために追加のセキュリティ強化が必要な場合は、次の提案を参照してください。
未使用のファイルシステムとサービスを無効にする
未使用のファイルシステムとサービスは、OSにセキュリティリスクをもたらす可能性があります。 これらのファイルシステムとサービスを無効にすると、システムをより安全にできます。
cramfsファイルシステムを無効にする
Compressed ROM File System (Cramfs) は、組み込みシステム用に設計された軽量の読み取り専用ファイルシステムです。
を作成または変更します。/etc/modprobe.d/ ディレクトリにあるconfファイル。 次のコマンドラインを追加して、cramfsカーネルモジュールをブラックリストに追加します。
ブラックリストcramfs 次のコマンドを実行して、cramfsモジュールをアンインストールします。
# modprobe -r cramfssquashfsファイルシステムを無効にする
SquashFSは圧縮された読み取り専用ファイルシステムであり、ライブCDおよびUSB環境用の組み込みシステムおよびLinuxディストリビューションで広く採用されています。
を作成または変更する. confファイル内の/etc/modprobe.d /ディレクトリに移動します。 次のコマンドラインを追加して、cramfsカーネルモジュールをブラックリストに追加します。
squashfs /bin/falseをインストールする
ブラックリストsquashfs 次のコマンドを実行して、squashfsモジュールをアンロードします。
# modprobe -r squashfsudfファイルシステムを無効にする
ユニバーサルディスクフォーマット (UDF) は、DVDやブルーレイディスクなどの光メディア用に開発されたファイルシステム標準です。 さまざまなオペレーティングシステムで使用できる汎用ファイルシステムを提供するように設計されています。 UDFファイルシステムは、データの交換および格納に適している。
を作成または変更します。/etc/modprobe.d/ ディレクトリにあるconfファイル。 次のコマンドラインを追加して、udfカーネルモジュールをブラックリストに追加します。
udf /bin/falseをインストールする
ブラックリストudf 次のコマンドを実行してudfモジュールをアンインストールします。
# modprobe -r udfRPCbindサービスを無効にする
RPCbindは、リモートプロシージャコール (RPC) プログラム番号とコンピュータネットワーク内の関連するネットワークアドレスとの間のマッピングを提供するサービスである。 これは、クライアントがネットワーク内のRPCサービスの場所と可用性を検出できるようにする登録サービスとして機能します。
次のコマンドを実行して、rpcbindサービスを無効にします。
# systemctl停止rpcbind.service
# systemctl停止rpcbind.socket
# systemctl mask rpcbind コアダンプの無効化
コアダンプには、攻撃者が悪用する可能性のある情報が含まれます。 コアダンプも大量のディスクスペースを占有します。 /etc/security/limits.confに次のコマンドラインを追加して、セグメント違反などでOSがプログラムを終了したときにコアダンプが作成されないようにします。
* ハードコア0特権プロセスのコアダンプで機密情報が公開されないように、/etc/sysctl.confで次のパラメーターを設定することを推奨します。
fs.suid_dumpable = 0次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w fs.suid_dumpable=0非特権eBPFの無効化
eBPFは、ネットワーキング、セキュリティ、およびパフォーマンス監視のメリットを提供できる強力で柔軟な機能です。 非特権eBPFを無効にして、eBPFの制御されない使用から生じるセキュリティリスクを軽減できます。
/etc/sysctl.confで次のパラメーターを設定します。
kernel.unprivileged_bpf_disabled=1次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w fs.suid_dumpable=0ネットワークアクセスの制限
ソースルーティングの無効化
ソースルーティングにより、パケットの送信者は、パケットが通過するルートを指定できます。 ただし、セキュリティ上の懸念から、ソースルーティングは通常、セキュリティのベストプラクティスとして無効になります。 これにより、悪意のある目的でソースルーティングが悪用されるのを防ぎます。 ソースルーティングパケットを無視することによって、システムは、それ自体のルーティングルールを使用することができ、ネットワークセキュリティを強化する。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.de fault.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.de fault.accept_source_route = 0 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.all.accept_source_route=0
# sysctl -w net.ipv4.conf.de fault.accept_source_route=0
# sysctl -w net.ipv6.conf.all.accept_source_route=0
# sysctl -w net.ipv6.conf.de fault.accept_source_route=0
# sysctl -w net.ipv4.route.flush=1
# sysctl -w net.ipv6.route.flush=1 ICMPリダイレクトを無効にする
ICMPリダイレクトは、より良いルートをホストに通知するためにルータによって使用されます。 ICMPリダイレクトを無効にすると、攻撃者が他のホストのルーティングテーブルを操作しようとするルートスプーフィング攻撃を防ぐことができます ネットワークで。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv4.conf.all. send_redirectes=0
net.ipv4.conf.de fault. send_redirectes=0 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.all. send_redirectes=0
# sysctl -w net.ipv4.conf.de fault.send_redirects=0
# sysctl -w net.ipv4.route.flush=1 次の行を /etc/sysctl.confに追加して、ICMPリダイレクトの受け入れを禁止することを推奨します。
net.ipv4.conf.all. accept_redirectes=0
net.ipv4.conf.de fault. accept_redirectes=0
net.ipv6.conf.all. accept_redirectes=0
net.ipv6.conf.de fault. accept_redirectes=0 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.all.accept_redirects=0
# sysctl -w net.ipv4.conf.de fault.accept_redirects=0
# sysctl -w net.ipv6.conf.all.accept_redirects=0
# sysctl -w net.ipv6.conf.de fault.accept_redirects=0
# sysctl -w net.ipv4.route.flush=1
# sysctl -w net.ipv6.route.flush=1 セキュアICMPリダイレクトの受け入れを無効にする
(デフォルトゲートウェイとして機能するゲートウェイからの) セキュアICMPリダイレクトの受け入れには、正当なユースケースはほとんどありません。 必要でない限り、安全なICMPリダイレクトの受け入れを無効にする必要があります。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv4.conf.all. secure_redirectes=0
net.ipv4.conf.de fault. secure_redirectes=0 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.all. secure_redirectes=0
# sysctl -w net.ipv4.conf.de fault.secure_redirects=0
# sysctl -w net.ipv4.route.flush=1 火星パケットのロギングを有効にする
火星のパケットは、無効またはルーティング不可能なソースアドレスを持つIPパケットであり、通常、構成エラーまたはパケットのソースを偽装しようとする潜在的な試みを示します。 net.ipv4.conf.all.log_martiansを1に設定すると、カーネルは無効なソースアドレスを持つ受信パケットのログを生成します。 これにより、ネットワーク管理者は、構成エラーや悪意のあるネットワーク活動に関連する問題を特定してトラブルシューティングできます。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.de fault.log_martians = 1 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.all.log_martians=1
# sysctl -w net.ipv4.conf.de fault.log_martians=1
# sysctl -w net.ipv4.route.flush=1 IPスプーフィング防止の有効化
RP_filterは、インバウンドパケットのソースアドレスがパケットを受信するポートを介して到達可能であるかどうかをチェックすることによって、IPスプーフィングを防ぐのに役立つメカニズムです。 送信元アドレスがポートを介して到達可能でない場合、パケットはドロップされる。 RP_filterを有効にすると、IPスプーフィングを防ぐことができますが、特定のネットワーク設定で接続の問題が発生する可能性があります。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv4.conf.de fault.rp_filter=1次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv4.conf.de fault.rp_filter=1
# sysctl -w net.ipv4.route.flush=1 IPv6 RA受け入れの無効化
ルータ広告 (RA) は、IPv6における近隣探索プロトコルの一部であり、ルータによって、その存在を広告し、ネットワーク構成情報をホストに提供するために使用される。 RA受け入れを無効にすると、悪意のあるネットワーク設定を防ぎます。
次のコマンドラインを /etc/sysctl.confに追加します。
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.de fault.accept_ra = 0 次のコマンドを実行して、アクティブなカーネルパラメーターを設定します。
# sysctl -w net.ipv6.conf.all.accept_ra=0
# sysctl -w net.ipv6.conf.de fault.accept_ra=0
# sysctl -w net.ipv6.route.flush=1 journaldの設定
膨大なディスク容量が必要になる可能性のある巨大なシステムログファイルの生成を回避するには、/etc/systemd/journald.confに次のコマンドラインを追加します。
Compress=yesStorageパラメーターは、ジャーナルデータの保存場所を制御します。 データをディスクに永続化するには、パラメーターをpersistentに設定することを推奨します。 そうしないと、ログデータがメモリに保存され、システムの再起動後に失われる可能性があります。
次のコマンドラインを /etc/systemd/journald.confに追加します。
ストレージ=永続