Linuxの強化:安全なLinuxサーバーのための15ステップのチェックリスト

ガス・カワジャ

ほとんどの人はLinuxが安全であると仮定していますが、それは誤った仮定です。 あなたのラップトップが最初に硬化されることなく盗まれたと想像してください。 泥棒はおそらくあなたのユーザー名が”root”であり、パスワードが”toor”であると仮定するでしょう。 そうなの? 私はしないことを願っています。

Kali Linuxホストを強化しないことを選択することの否定的なキャリアへの影響は深刻なので、私は仕事を得るために侵入テストとKali Linuxを使用する方法 それらはLinuxの多くのディストリビューション(別名distros)であり、それぞれがコマンドラインの観点から異なるが、ロジックは同じであることに注意するこ 独自のLinuxボックスを強化するには、次のヒントを使用します。

1-ホスト情報を文書化する

新しいLinux hardeningジョブで作業するたびに、この記事に記載されているすべてのチェックリスト項目を含む新しい文書を作成し、適用したすべての項目をチェックする必要があります。 さらに、ドキュメントの上部には、Linuxホスト情報を含める必要があります:

  • マシン名
  • IPアドレス
  • Macアドレス
  • 硬化を行っている人の名前(最も可能性が高い)
  • 日付
  • 資産番号(会社で働いている場合は、会社がホストのタグ付けに使用する資産番号を含める必要があります。)

2-BIOS保護

エンドユーザーがBIOSのセキュリティ設定を変更したり上書きしたりできないように、ホストのBIOSをパスワードで保護する必要があります。 各コンピュータの製造元は、BIOSモードに入るためのキーの異なるセットを持っている、それはあなたが管理パスワードを設定する構成を見つけることの問題

次に、外部メディアデバイス(USB/CD/DVD)からの起動を無効にする必要があります。 この設定の変更を省略すると、起動可能なOSを含むUSBスティックを誰でも使用でき、OSデータにアクセスできます。

+Linuxについてもっと知りたいですか? Pluralsight、技術学習プラットフォームで詳細をご覧ください。 今すぐLinuxを学ぶ。 +

最新のサーバーのマザーボードには、リモートでアクセスできる内部webサーバーがあります。 管理ページのデフォルトのパスワードを変更するか、可能であれば無効にしてください。

3-ハードディスク暗号化(機密性)

ほとんどのLinuxディストリビューションでは、インストール前にディスクを暗号化することができます。 お使いのコンピュータを盗んだ人は、彼らが自分のマシンにハードディスクを接続した場合、あなたのデータを読み取ることができなくなりますので、デ

ガイド付き-ディスク全体を使用し、暗号化されたLVMを設定します(LVMはlogical volume managerの略です。)

Linuxディストリビューションが暗号化をサポートしていない場合は、TrueCryptのようなソフトウェアを使用できます。

4-ディスク保護(可用性)

バックアップには、システムが破損した場合、OSの更新のバグに非常に多くの利点があります。 重要なサーバーの場合、障害が発生した場合にバックアップをオフサイトに転送する必要があります。 バックアップも管理する必要があります。 たとえば、古いバックアップはどのくらい保持されますか? いつあなたのシステムをバックアップする必要がありますか(毎日、毎週…)?

重要なシステムは、以下のために異なるパーティションに分離する必要があります:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

ディスクを分配することはシステムエラーの場合には性能および保証の機会を与える。 下の図では、インストール中にKali Linuxでパーティションを分離する方法のオプションを見ることができます。

5-ブートディレクトリのロック

ブートディレクトリにはLinuxカーネルに関連する重要なファイルが含まれているため、次の簡単な手順に従って、このディレ まず、”fstab”ファイルを開きます。

次に、最後の行を下部に強調表示して追加します。

ファイルの編集が終了したら、次のコマンドを実行して所有者を設定する必要があります:

#chown root:root /etc/fstab

次に、ブート設定を保護するためのいくつかの権限を設定します:

  • /etc/grubの所有者とグループを設定します。rootユーザーへのconf:

#chown root:root /etc/grub.conf

  • /etc/grubに権限を設定します。rootのみの読み取りと書き込みを行うconfファイル:

#chmod og-rwx /etc/grub.conf

  • シングルユーザーモードでの認証の必要性:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Usb使用を無効にする

システムの重要性によっては、LinuxホストでUSBスティックの使用を無効にする必要がある場合があります。 USBストレージの使用を拒否するには複数の方法があります。:

“ブラックリスト”を開きます。conf”お気に入りのテキストエディタを使用したファイル:

#nano /etc/modprobe.d/blacklist.conf

ファイルが開いたら、ファイルの最後に次の行を追加します(保存して閉じます):

blacklist usb_storage

その後、rcを開きます。ローカルファイル:

#nano /etc/rc.local

最後に、次の2行を追加します:

modprobe -r usb_storage

exit 0

7-システム更新

最初の起動後に最初に行うことは、システムを更新することです。 一般的には、ターミナルウィンドウを開き、適切なコマンドを実行します。 Kali Linuxでは、以下の図のコマンドを実行することでこれを実現します:

8-インストールされているパッケージ

を確認して、Linux OSにインストールされているすべてのパッケージを一覧表示し、不要なパッケー サーバーにインストールされているアプリケーションとサービスの数が最も少ないため、強化しようとしているホストがサーバーである場合は、非常に厳密 Kali Linuxにインストールされているパッケージを一覧表示する方法の例を次に示します:

不要なサービスを無効にすると攻撃対象が減少するため、Linuxサーバーにインストールされている場合は、次のレガシーサービスを削除することが重要です:

  • Telnetサーバー
  • RSHサーバー
  • NISサーバー
  • TFTPサーバー
  • TALKサーバー

9-開いているポートを確認する

インターネットへの開いている接続を識別することは重要な使命です。 Kali Linuxでは、次のコマンドを使用して、隠された開いているポートを見つけます:

10-安全なSSH

はい、確かにSSHは安全ですが、このサービスも強化する必要があります。 まず、SSHを無効にすることができれば、それは解決された問題です。 ただし、使用する場合は、SSHのデフォルト設定を変更する必要があります。 これを行うには、/etc/sshを参照し、お気に入りのテキストエディタを使用して”sshd_config”ファイルを開きます。

  • デフォルトのポート番号22を99などの他のものに変更します。
  • rootがSSH経由でリモートでログインできないことを確認します:

PermitRootLogin no

  • 特定のユーザーを許可する:

AllowUsers

リストは上に行くことができますが、これらはで開始するのに十分でなければなりません。 たとえば、一部の企業は、攻撃者を抑止し、さらに継続することを阻止するためにバナーを追加します。 このファイル内のすべての構成を理解するためにSSHのマニュアルを確認するか、このサイトで詳細を確認することをお勧めします。

“sshd_config”ファイルに存在することを確認するために必要な追加オプションをいくつか示します:

  • プロトコル2
  • IgnoreRhosts to yes
  • HostbasedAuthenticationいいえ
  • PermitEmptyPasswordsいいえ
  • X11Forwardingいいえ
  • MaxAuthTries5
  • 暗号aes128-ctr、aes192-Ctr,Aes256-Ctr
  • clientaliveinterval900
  • clientalivecountmax0
  • usepam yes

最後に、sshd_Configファイルの権限を設定して、Rootユーザーのみがその内容を変更できるようにします:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

Security Enhanced Linuxは、アクセス制御セキュリティポリシーをサポートするためのカーネルセキュリティメカニズムです。 SELinuxには3つの設定モードがあります:

  • 無効:オフになっている
  • Permissive:警告を出力する
  • Enforcing:ポリシーが強制されている

テキストエディタを使用して、設定ファイルを開きます:

#nano /etc/selinux/config

そして、ポリシーが強制されていることを確認してくださ:

SELINUX=enforcing

12- ネットワークパラメータ

Linuxホストネットワークアクティビティの保護は不可欠な作業です。 ファイアウォールがすべてを処理すると常に想定しているわけではありません。 ホストネットワークを保護するために考慮すべきいくつかの重要な機能は次のとおりです。

-ネットを設定してIP転送を無効にします。———–“/etc/sysctl”のip_forwardパラメータを0に設定します。conf”

– ネットを設定して不正なエラーメッセージ保護を有効にします。———–icmp_ignore_bogus_error_responsesパラメータは”/etc/sysctl”の1に設定されています。conf”

Iptableルールを適用し、すべての着信、発信、および転送されたパケットをフィルタリングすることにより、Linuxファイアウォールの使用を強くお勧めします。 あなたのiptablesルールを設定するには時間がかかりますが、それは苦痛の価値があります。

13- パスワードポリシー

人々はしばしば自分のパスワードを再利用しますが、これは悪いセキュリティ慣行です。 古いパスワードは”/etc/security/opasswd”ファイルに保存されます。 Linuxホストのセキュリティポリシーを管理するためにPAMモジュールを使用します。 Debianディストリビューションの下で、ファイル”/etc/pam.d/common-password”テキストエディタを使用して、次の二つの行を追加します:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (ユーザーが最後の四つのパスワードを再利用することはできません。)

強制する必要がある別のパスワードポリシーは、強力なパスワードです。 Pamモジュールは、辞書やブルートフォース攻撃からサーバーを保護するpam_cracklibを提供しています。 このタスクを実行するには、/etc/pamファイルを開きます。任意のテキストエディタを使用してd/system-authを実行し、次の行を追加します:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linuxは平文で保存しないようにパスワードをハッシュしますので、安全なパスワードハッシュアルゴリズムSHA512を定義する必要があります。

もう一つの興味深い機能は、五回の試行に失敗した後にアカウントをロックすることです。 これを実現するには、ファイル”/etc/pam”を開く必要があります。d/password-auth”を追加し、次の行を追加します:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

もう1つのステップが必要です。 ファイル”/etc/pam”を開きます。d/system-auth”を実行し、次の行が追加されていることを確認してください:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

#/usr/sbin/faillock–user<userlocked>–reset

また、パスワードを90日後に期限切れに設定することをお勧めします。:

  • “/etc/login”でPASS_MAX_DAYSパラメータを90に設定します。defs”
  • 次のコマンドを実行して、アクティブなユーザーを変更します:

#chage --maxdays 90 <user>

パスワードポリシーを強化するための次のヒントは、suコマンドへのアクセスを制限することです。pam_wheel.so “/etc/pam.d/su”:

認証が必要ですpam_wheel.so use_uid

パスワードポリシーの最後のヒントは、次のbashスクリプトを使用して、非rootユーザーのシステムアカウントを無効にすることです:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-許可と検証

これは長いリストになるだろうので、精神的に自分自身を準備します。 しかし、アクセス許可は、Linuxホストのセキュリティ目標を達成するための最も重要かつ重要なタスクの1つです。

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

“root crontab”の”/var/spool/cron”の権限と権限を設定します”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

“passwd”ファイルにユーザー/グループ所有者と権限を設定する

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

ユーザー/グループの所有者と権限の設定 group”ファイルに

#chmod 644 /etc/group

#chown root:root /etc/group

“shadow”ファイルにユーザー/グループ所有者と権限を設定する

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

“gshadow”ファイルにユーザー/グループ所有者と権限を設定する

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- 追加のプロセス強化

リストの最後の項目については、Linuxホストを強化するときに考慮すべきいくつかの追加のヒントを含めています。

まず、コアダンプを次のように制限します:

  • “/etc/security/limits”にハードコア0を追加します。conf”ファイル
  • fsを追加します。/etc/sysctlにはsuid_dumpable=0が設定されています。conf”ファイル

次に、Exec Shieldを次のように設定します:

  • カーネルを追加します。exec-shield=1を”/etc/sysctlに設定します。conf”ファイル

第三に、ランダム化された仮想メモリ領域の配置を有効にします:

  • カーネルを追加します。/etc/sysctlにrandomize_va_space=2を指定します。conf”ファイル

最後の言葉

この短い記事では、Linuxセキュリティのための多くの重要な設定について説明しました。 しかし、私たちはLinuxの硬化の表面を傷つけました—複雑で核心のある構成がたくさんあります。 より良いセキュリティのためにLinuxサーバーを強化する方法の詳細については、Pluralsightの私のコースをご覧ください。

Gus KhawajaはPluralsightのセキュリティコンサルタントであり、著者です。 セキュリティ、IT、Webアプリケーション開発に従事し、Pluralsightのコースを作成しています。 Gusはカナダ中の会社のためのITの解決を首尾よく渡し、開発しました。 コンピュータサイエンスの長年の経験の後、彼はサイバーセキュリティとセキュリティがこの地雷原にもたらす重要性に彼の注意を向けています。 倫理的なハッキングのための彼の情熱は、プログラミングの彼の背景と混合し、それは彼にコンピュータサイエンス分野で賢明なスイスアーミーナイフ

コメントを残す

メールアドレスが公開されることはありません。