CentOS サーバーのセキュリティ強化に関する 20 のヒント - パート 1
このチュートリアルでは、システムを強化するために使用できるCentOS 8/7 の一般的なセキュリティのヒントのみを説明します。チェックリストのヒントは、主に、さまざまなタイプのベアメタル サーバー、またはネットワーク サービスを提供するマシン (物理または仮想) で使用することを目的としています。
ただし、ヒントの一部は、デスクトップ、ラップトップ、カード サイズのシングルボード コンピュータ (Raspberry Pi) などの汎用マシンにも適用できます。
要件
- CentOS 8 の最小インストール
- CentOS 7 の最小インストール
1. 物理的保護
サーバー ルームへのアクセスをロックダウンし、ラック ロックとビデオ監視を使用します。サーバー ルームに物理的にアクセスすると、マシンが重大なセキュリティ問題にさらされる可能性があることを考慮してください。
BIOS パスワードは、マザーボードのジャンパをリセットするか、CMOS バッテリーを取り外すことで変更できます。また、侵入者はハードディスクを盗んだり、新しいハードディスクをマザーボード インターフェイス (SATA、SCSI など) に直接接続したり、Linux ライブ ディストリビューションで起動したり、ソフトウェアの痕跡を残さずにデータのクローンを作成またはコピーしたりする可能性があります。
2. スパイ行為の影響を軽減する
機密性の高いデータの場合は、サーバーをファラデー ケージに配置してロックするなどの高度な物理的保護を使用するか、軍用の TEMPEST ソリューションを使用して、無線や漏電によるシステムへのスパイ行為の影響を最小限に抑える必要があります。
3. セキュアな BIOS/UEFI
BIOS/UEFI 設定を保護してマシンを強化するプロセスを開始します。特にBIOS/UEFI パスワードを設定し、ブート メディア デバイス (CD、DVD、USB サポートの無効化) を無効にします。これは、権限のないユーザーがシステム BIOS 設定を変更したり、起動デバイスの優先順位を変更して代替メディアからマシンを起動したりすることを防ぐためです。
このタイプの変更をマシンに適用するには、マザーボードの製造元のマニュアルで具体的な手順を参照する必要があります。
4. セキュアブートローダー
悪意のあるユーザーがカーネルのブート シーケンスや実行レベルを改ざんしたり、カーネル パラメータを編集したり、システムをシングル ユーザー モードで起動してシステムに損害を与えたり、ルートをリセットしたりすることを防ぐために、GRUB パスワードを設定します。特権制御を取得するためのパスワード。
5. 個別のディスク パーティションを使用する
運用サーバーとして使用されるシステムにCentOS をインストールする場合は、システムの次の部分に専用パーティションまたは専用ハードディスクを使用します。
/(root)
/boot
/home
/tmp
/var
6. 冗長性とファイル システムの拡張のために LVM と RAID を使用する
/var パーティションは、ログ メッセージがディスクに書き込まれる場所です。 Web サーバーやファイル サーバーなどのネットワーク サービスを公開するトラフィックの多いサーバーでは、システムのこの部分のサイズが急激に増大する可能性があります。
したがって、/var に大きなパーティションを使用するか、論理ボリューム (LVM) を使用してこのパーティションを設定することを検討するか、複数の物理ディスクを 1 つの大きな仮想 RAID 0 デバイスに組み合わせて大規模なストレージを維持します。データ量。データの冗長性については、RAID 1 レベルの上に LVM レイアウトを使用することを検討してください。
ディスク上に LVM または RAID を設定するには、次の便利なガイドに従ってください。
- Linux で LVM を使用してディスク ストレージをセットアップする
- vgcreate、lvcreate、lvextend を使用して LVM ディスクを作成する
- 複数のディスクを 1 つの大規模な仮想ストレージに結合する
- Linux で 2 つのディスクを使用して RAID 1 を作成する
7. fstab オプションを変更してデータ パーティションを保護する
データの保存を目的としたパーティションを分離し、以下に示すようにfstab ファイルに次のオプションを追加することで、これらのタイプのパーティションでのプログラム、デバイス ファイル、またはsetuid ビットの実行を防止します。抜粋:
/dev/sda5 /nas ext4 defaults,nosuid,nodev,noexec 1 2
権限昇格や任意のスクリプトの実行を防ぐために、/tmp 用に別のパーティションを作成し、それを nosuid、nodev、および noexec としてマウントします。 です。
/dev/sda6 /tmp ext4 defaults,nosuid,nodev,noexec 0 0
8. LUKS を使用してブロック レベルでハードディスクを暗号化する
マシンのハードドライブに物理的にアクセスした場合に機密データのスヌーピングを保護するため。記事「LUKS を使用した Linux ハードディスク データ暗号化」を読んで、ディスクを暗号化する方法を学ぶことをお勧めします。
9. PGP と公開キー暗号化を使用する
ディスクを暗号化するには、この記事「暗号化された Linux システム ストレージの構成」で説明されているように、PGP および公開キー暗号化または OpenSSL コマンドを使用して、機密ファイルをパスワードで暗号化および復号化します。
10. 必要な最小限のパッケージのみをインストールする
パッケージの脆弱性を避けるために、重要でないまたは不要なプログラム、アプリケーション、またはサービスのインストールを避けてください。これにより、ソフトウェアの侵害が他のアプリケーション、システムの一部、さらにはファイル システムの侵害につながり、最終的にはデータの破損やデータの損失につながるリスクを軽減できます。
11. システムを頻繁に更新する
システムを定期的にアップデートしてください。以下のコマンドを実行して、Linux カーネルを最新のセキュリティ パッチと同期させ、インストールされているすべてのソフトウェアを最新バージョンに保ちます。
yum update
12. Ctrl+Alt+Del を無効にする
ユーザーがキーボード、リモート コンソール アプリケーション、または仮想化コンソール (KVM、仮想化ソフトウェア インターフェイス) に物理的にアクセスした後にサーバーを再起動できないようにするには、Ctrl+Alt を無効にする必要があります。以下のコマンドを実行して +Del
キー シーケンスを実行します。
systemctl mask ctrl-alt-del.target
13. 不要なソフトウェアパッケージを削除する
マシンに必要な最小限のソフトウェアをインストールします。余分なプログラムやサービスをインストールしないでください。信頼できるリポジトリまたは公式リポジトリからのみパッケージをインストールしてください。マシンがその寿命全体をサーバーとして実行する予定の場合は、システムのインストールを最小限に抑えます。
次のいずれかのコマンドを使用して、インストールされているパッケージを確認します。
rpm -qa
インストールされているすべてのパッケージのローカル リストを作成します。
yum list installed >> installed.txt
不要なソフトウェアのリストを参照し、以下のコマンドを実行してパッケージを削除します。
yum remove package_name
14. デーモンの更新後に Systemd サービスを再起動する
新しい更新を適用するために、次のコマンド例を使用して systemd サービスを再起動します。
systemctl restart httpd.service
15. 不要なサービスを削除する
次の ss コマンドを使用して、特定のポートでリッスンしているサービスを特定します。
ss -tulpn
インストールされているすべてのサービスとその出力ステータスを一覧表示するには、次のコマンドを発行します。
systemctl list-units -t service
たとえば、CentOS のデフォルトの最小インストールには、ポート 25 でマスターの名前で実行される Postfix デーモンがデフォルトでインストールされています。マシンをメール サーバーとして使用しない場合は、Postfix ネットワーク サービスを削除します。
yum remove postfix
16. 送信データの暗号化
リモート アクセスやファイル転送には、Telnet、FTP などの安全でないプロトコルや、SMTP、HTTP、NFS、SMB などのその他のプレーン テキストの高度なプロトコルを使用しないでください。デフォルトでは、認証セッションまたは送信データは暗号化されません。
ファイル転送には sftp、scp のみを使用し、リモート コンソール接続または GUI アクセスには SSH トンネル経由の SSH または VNC のみを使用します。
SSH 経由で VNC コンソールをトンネルするには、VNC ポート 5901 をリモート マシンからローカル マシンに転送する以下の例を使用します。
ssh -L 5902:localhost:5901 remote_machine
ローカル マシンで次のコマンドを実行して、リモート エンドポイントに仮想接続します。
vncviewer localhost:5902
17. ネットワークポートスキャン
LAN 経由でリモート システムから Nmap ツールを使用して外部ポート チェックを実行します。このタイプのスキャンは、ネットワークの脆弱性を検証したり、ファイアウォール ルールをテストしたりするために使用できます。
nmap -sT -O 192.168.1.10
18. パケットフィルタリングファイアウォール
firewalld ユーティリティを使用して、システム ポートを保護し、特定のサービス ポート、特にウェルノウン ポート (<1024) を開いたり閉じたりします。
以下のコマンドを実行して、ファイアウォール ルールをインストール、開始、有効化、および一覧表示します。
yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all
19. Tcpdump を使用したプロトコル パケットの検査
tcpdump ユーティリティを使用して、ネットワーク パケットをローカルでスニッフィングし、その内容に不審なトラフィック (送信元と宛先のポート、TCP/IP プロトコル、レイヤー 2 トラフィック、異常な ARP 要求) がないか検査します。
tcpdump でキャプチャしたファイルをより適切に分析するには、Wireshark などのより高度なプログラムを使用します。
tcpdump -i eno16777736 -w tcpdump.pcap
20. DNS 攻撃を防ぐ
リゾルバーの内容 (通常は /etc/resolv.conf ファイル) を検査します。このファイルは、人による侵入を避けるために、ドメイン名のクエリに使用する DNS サーバーの IP アドレスを定義します。 -中間の攻撃、ルート DNS サーバーへの不要なトラフィック、なりすましまたは DOS 攻撃の作成。
これは最初の部分にすぎません。次のパートでは、CentOS 8/7 のその他のセキュリティに関するヒントについて説明します。