GNU/Linux >> Linux の 問題 >  >> Linux

Linux強化セキュリティのベスト50のヒント:包括的なチェックリスト

Linuxは、世界中のWebの大部分とかなりの量のワークステーションに電力を供給しています。 LinuxおよびBSDシステムの人気が高まっている主な理由の1つは、セキュリティに関する堅実なポリシーです。 Linuxシステムは、その基礎となる設計原則のために、本質的にクラックするのが困難です。ただし、壊れないシステムはありません。ワークステーションまたはLinuxサーバーを最新の標準と同等に強化しないと、さまざまな種類の攻撃やデータ侵害の犠牲になる可能性があります。そのため、サーバーのセキュリティを次のレベルに引き上げるのに役立つ50のLinux強化のヒントを概説しました。

プロフェッショナル向けのLinux強化セキュリティのヒント

セキュリティは、コンピューティングの世界の不可欠な部分になっています。その結果、個人のワークステーションとサーバーのセキュリティを強化する必要があります。したがって、Linuxマシンのセキュリティを強化するために、以下のヒントを読み続け、可能な限り取り入れてください。

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

ホスト情報を文書化することは、長期的には非常に有益になる可能性があります。長期にわたって同じシステムを維持するつもりなら、ある時点で物事が混乱する可能性があります。ただし、インストールしたその日からワークステーションまたはサーバーを文書化すると、システムインフラストラクチャ全体と採用されているポリシーをしっかりと把握できます。

システムに関する以下の情報をドキュメントに含めてください。サーバーの要件に基づいて、自由に追加してください。

  • システム名
  • インストール日
  • 資産番号(ビジネス環境でホストにタグを付ける値)
  • IPアドレス
  • MACアドレス
  • カーネルバージョン
  • 管理者の名前

2。 BIOSを保護し、USBブートを無効にする

他のユーザーが設定にアクセスしたり変更したりできないように、適切なパスワードを使用してBIOSを保護する必要があります。最新のメインボードのBIOSメニューにアクセスするのは非常に簡単なので、エンドユーザーは既存の設定を上書きして機密性の高い構成を操作できます。

さらに、ユーザーは起動可能なシステムを使用してホストデータにアクセスすることもできます。これは、サーバーの整合性に脅威を与える可能性もあります。次のコマンドを使用して、USBデバイスを完全に無効にすることができます。

#echo'install usb-storage / bin / true'>> /etc/modprobe.d/disable-usb-storage.conf 

USBブートは、BIOSメニューからオフにすることもできます。ただし、他のユーザーがアクセスできないパーソナルワークステーションを実行している場合、これは必須ではありません。

---

3。ディスクストレージを暗号化する

ディスクストレージを暗号化すると、長期的には非常に有益であることがわかります。盗難や第三者の侵入があった場合のデータ漏洩を防ぎます。幸いなことに、管理者がこの作業を簡単に行えるようにするさまざまなLinux暗号化ツールがあります。

さらに、最新のLinuxディストリビューションでは、管理者がインストールプロセス中にLinuxファイルシステムを暗号化することができます。ただし、暗号化はパフォーマンススループットに影響を与える可能性があり、データの回復が困難になる可能性があることを知っておく必要があります。

4。データ通信を暗号化する

ネットワークを介して送信されるデータは、オープンソースのセキュリティツールを使用して簡単にキャプチャおよび分析できるため、Linuxの強化プロセスではデータの暗号化を最優先する必要があります。多くのレガシーデータ通信ツールは適切な暗号化を採用していないため、データが脆弱なままになる可能性があります。

リモートデータ転送には、常にssh、scp、rsync、sftpなどの安全な通信サービスを使用する必要があります。 Linuxでは、ユーザーは、fuseやsshfsなどの特別なツールを使用してリモートファイルシステムをマウントすることもできます。 GPG暗号化を使用して、データを暗号化して署名してみてください。データ暗号化サービスを提供する他のLinuxツールには、OpenVPN、Lighthttpd SSL、Apache SSL、Let’sEncryptなどがあります。

5。レガシーコミュニケーションサービスを避ける

多くのレガシーUnixプログラムは、データ送信中に本質的なセキュリティを提供しません。これらには、FTP、Telnet、rlogin、およびrshが含まれます。 Linuxサーバーと個人システムのどちらを保護している場合でも、これらのサービスの使用を永久に停止してください。

このタイプのデータ転送タスクには、他の方法を使用できます。たとえば、OpenSSH、SFTP、FTPSなどのサービスは、データ送信が安全なチャネルを介して行われるようにします。それらのいくつかは、SSLまたはTLS暗号化を使用してデータ通信を強化します。以下のコマンドを使用して、NIS、telnet、rshなどのレガシーサービスをシステムから削除できます。

#yum Erase xinetd ypserv tftp-server telnet-server rsh-server#apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server 

RHELやCentosなどのRPMベースのディストリビューション、またはyumパッケージマネージャーを使用するシステムには、最初のコマンドを使用します。 2番目のコマンドはDebian/Ubuntuベースのシステムで機能します。

6。カーネルとパッケージを最新の状態に保つ

サーバーのセキュリティを維持するには、常に最新のセキュリティ更新プログラムをできるだけ早く適用する必要があります。これにより、古いパッケージまたはカーネルモジュールで脆弱性が発見された場合に、攻撃対象領域を減らすことができます。ありがたいことに、システムの更新は非常に簡単で、かなり高速に実行できます。

#yum update#apt-get update &&apt-get upgrade 

yumコマンドを使用してRHEL/Centosシステムを更新し、aptコマンドを使用してUbuntu/Debianベースのディストリビューションを更新します。さらに]、Linux cronジョブを利用して、このプロセスを自動化できます。 cronジョブの詳細については、Linuxcrontabに関するガイドをご覧ください。

7。 SELinuxを有効にする

SELinuxまたはSecurityEnhancedLinuxは、カーネルレベルでアクセス制御するためのさまざまなメソッドを実装するセキュリティメカニズムです。 SELinuxはRedHatによって開発され、多くの最新のLinuxディストリビューションに追加されています。これは、カーネルの変更とユーザースペースツールのセットと考えることができます。以下のコマンドを使用して、システムでSELinuxが有効になっているかどうかを確認できます。

#getenforce 

強制が返される場合は、システムがSELinuxによって保護されていることを意味します。結果が許容的であると表示された場合、それはシステムにSELinuxが搭載されているが、強制されていないことを意味します。 SELinuxが完全に無効になっているシステムでは無効になります。以下のコマンドを使用してSELinuxを強制できます。

#setenforce 1 

8。システムパッケージを最小化する

システムパッケージを最小化すると、システムの全体的なセキュリティを大幅に向上させることができます。ソフトウェアのバグはセキュリティに対する主な障壁の1つであるため、パッケージが少ないということは、脆弱性の表面が小さくなることを意味します。さらに、サーバーには通常、不要なブロートウェアがない場合にパフォーマンスが大幅に向上します。

#yum list installed#yum list #yum remove  

Linuxで上記のyumコマンドを使用して、システムにインストールされているソフトウェアを一覧表示し、実際には不要なソフトウェアを削除できます。 Debian / Ubuntuベースのシステムを実行している場合は、以下のコマンドを使用してください。

#dpkg --list#dpkg --info #apt-get remove  

9。分割ネットワークサービス

サーバーで従来のモノリシックネットワークサービスを使用している場合、攻撃者は単一のサービスを悪用するとすぐにインフラストラクチャ全体にアクセスできるようになります。たとえば、LAMPスタックを実行している場合、攻撃者がApacheサービスのバグを悪用するとどうなりますか?彼は最終的に他のサービスをエスカレートし、完全なシステム制御を取得する可能性があります。

ただし、ネットワークサービスを分割し、サービスごとに1つのネットワークを使用すると、攻撃の成功率は低くなります。これは、侵入者が完全なシステムアクセスを取得する前に、各ネットワークを悪用する必要があるためです。以下の手順に従って、従来のLAMPスタック構成を分割できます。

  • NFSファイルサーバーを構成する
  • MySQLデータベースサーバーを構成する
  • Memcachedキャッシングサーバーを構成する
  • Apache +php5Webサーバーを構成します
  • 静的データ用にLighttpdサーバーを設定する
  • リバースプロキシ用にNginxサーバーを構成する

10。ユーザーアカウントとパスワードポリシーを維持する

Unixシステムには通常、複数のユーザーアカウントがあります。システムは、それを実行するユーザーと同じくらい安全です。したがって、信頼できる人だけが特定のシステムを実行できるようにしてください。 useraddを使用できます / usermod マシンに新しいユーザーアカウントを追加および維持するためのコマンド。

常に強力なパスワードポリシーを適用します。強力なパスワードは、8文字を超え、少なくとも文字、数字、および特殊文字の組み合わせである必要があります。ただし、ユーザーは自分のパスワードを覚えることができるはずです。さらに、パスワードが辞書攻撃の影響を受けないことを確認してください。 pam_cracklib.soと呼ばれるLinuxPAMモジュールを使用できます。 これを行うため。

11。パスワードの有効期限を設定する

もう1つの一般的なLinux強化方法は、すべてのユーザーアカウントのパスワードの有効期限を有効にすることです。 変更を利用すると、ユーザーパスワードの有効期限を簡単に設定できます。 Linuxのコマンド。システムは、既存のパスワードの有効期限が切れると、ユーザーに新しいパスワードを設定するように求めます。

#chage -l mary#chage -M 30 mary#chage -E "2020-04-30" 

最初のコマンドは、ユーザーmaryの現在のパスワードの有効期限を一覧表示します。 2番目のコマンドは、30日後の有効期限を設定します。 3番目のコマンドを使用して、YYYY-MM-DD形式を使用してこの日付を設定することもできます。

12。 LinuxPAMモジュールを適用する

ユーザーが弱いパスワードを設定または使用できないようにすることで、パスワード強度を高めることができます。パスワードクラッカーは簡単にブルートフォースを実行し、不正アクセスを取得する可能性があります。さらに、Ubuntu/DebianとRHEL/Centosにそれぞれ次の行を追加して、パスワードの再利用を制限します。

#echo'パスワード十分pam_unix.souse_authtokmd5シャドウremember=12'>>/etc/pam.d/common-password#echo'パスワード十分pam_unix.souse_authtokmd5シャドウremember=12'>> / etc / pam.d/system-auth 

これで、ユーザーは過去12週間以内に使用されたパスワードを再利用できなくなります。また、以下のヒントを使用して、弱いパスフレーズを完全に禁止してください。

#apt-get install libpam-cracklib#Ubuntu/Debianにcracklibサポートをインストール

行を追加–

#echo'パスワードが必要ですpam_cracklib.soretry =2 minlen =10 difok =6'>> /etc/pam.d/system-auth 

RHEL/Centosにcracklibをインストールする必要はありません。次の行を追加するだけです。

#echo'パスワードが必要/lib/security/pam_cracklib.soretry =2 minlen =10 difok =6'>> /etc/pam.d/system-auth 

13。失敗後のログイン試行のロック

管理者は、一定回数の試行が失敗した後、ユーザーがサーバーにログインできないことを確認する必要があります。これにより、パスワード攻撃が軽減され、システム全体のセキュリティが向上します。 Linuxのfaillogコマンドを使用して、失敗したログイン試行を確認できます。

#faillog#faillog -m 3#faillog -l 1800 

最初のコマンドは、/ var / log/faillogデータベースからのユーザーの失敗したログイン試行を表示します。 2番目のコマンドは、許可されたログイン失敗の最大試行回数を3に設定します。3番目のコマンドは、許可されたログイン試行の失敗回数の1800秒または30分後にロックを設定します。

#faillog -r-u<ユーザー名>

ユーザーがログインを禁止されたら、このコマンドを使用してユーザーのロックを解除します。 rootユーザーのログイン試行の最大失敗回数は多くする必要があります。そうしないと、ブルートフォース攻撃によってロックされたままになる可能性があります。

14。空のパスワードを確認する

ユーザーは、システムの全体的なセキュリティの中で最も弱いリンクです。管理者は、システム上のユーザーが空のパスフレーズを持っていないことを確認する必要があります。これは、Linuxを適切に強化するための必須の手順です。 Linuxで次のawkコマンドを使用して、これを確認します。

#awk -F:'($ 2 ==""){print}' / etc / shadow 

サーバーに空のパスワードを持つユーザーアカウントがある場合に表示されます。 Linuxサーバーの強化を強化するには、空のパスフレーズを使用するすべてのユーザーをロックします。以下のコマンドを使用して、Linuxターミナルからこれを行うことができます。

#passwd -l <​​username> 

15。スーパーユーザーとしてのログインを無効にする

サーバーのセキュリティを維持するために、管理者はrootとして頻繁にログインしないでください。代わりに、低レベルの特権を必要とするsudoexecuteLinuxターミナルコマンドを使用できます。次のコマンドは、sudo権限を持つ新しいユーザーを作成する方法を示しています。

#adduser  sudo 

以下のコマンドを使用して、既存のユーザーにsudo権限を付与することもできます。

#usermod -a -G sudo  

16。 sudoユーザーの電子メール通知を設定する

ユーザーがsudoを使用するたびに、サーバー管理者が電子メールで通知されるように、電子メール通知を設定できます。 / etc / sudoersファイルを編集し、お気に入りのLinuxテキストエディタを使用して次の行を追加します。

#nano / etc / sudoers 
 mailto "[email protected]" mail_always on 

電子メールを自分のメールまたは監査スタッフのメールに置き換えます。これで、誰かがシステムレベルのタスクを実行するたびに、通知が届きます。

17。安全なGRUBブートローダー

現在、いくつかのLinuxブートローダーが利用可能です。ただし、GRUBはその多様な機能セットにより、ほとんどの管理者にとって依然として最上位の選択肢です。さらに、これは多くの最新のLinuxディストリビューションのデフォルトのブートローダーです。 Linuxの強化手順を真剣に受け止めている管理者は、GRUBメニューに強力なパスワードを設定する必要があります。

#grub-md5-crypt 

ターミナルでこれを入力すると、grubがパスワードの入力を求めます。設定するパスワードを入力すると、パスワードを使用して暗号化されたハッシュが生成されます。次に、このハッシュをgrub構成メニューに入れる必要があります。

#nano /boot/grub/menu.lstor# nano /boot/grub/grub.conf 

タイムアウトとスプラッシュ画像を設定する行の間に以下の行を追加して、計算されたハッシュを追加します。

 password –md5  

18。ルート以外のユーザーのUIDを検証する

UIDまたはユーザーIDは、カーネルによってシステムのユーザーに割り当てられる非負の数です。 UID 0は、スーパーユーザーまたはルートのUIDです。 root以外のユーザーがこのUID値を持っていないことを確認することが重要です。それ以外の場合は、システム全体をルートに見せかけることができます。

#awk -F:'($ 3 =="0"){print}' / etc / passwd 

このawkプログラムを実行すると、このUID値を持つユーザーを見つけることができます。出力には、ルートに対応するエントリが1つだけ含まれている必要があります。

19。不要なサービスを無効にする

システムの起動中に、多くのサービスとデーモンが開始されます。必須ではないものを無効にすると、Linuxの強化と起動時間の改善に役立ちます。最近のほとんどのディストリビューションはinitスクリプトの代わりにsystemdを使用しているため、systemctlを使用してこれらのサービスを見つけることができます。

#systemctl list-unit-files --type =service#systemctl list-dependenciesgraphical.target 

これらのコマンドは、そのようなサービスとデーモンを表示します。以下のコマンドを使用して、特定のサービスを無効にすることができます。

#systemctl disable service#systemctl disable httpd.service 

20。 X Window Systems(x11)を削除します

X Window Systemsまたはx11は、Linuxシステムの事実上のグラフィカルインターフェイスです。個人のシステムではなくLinuxを使用してサーバーに電力を供給している場合は、これを完全に削除できます。不要なパッケージをたくさん削除することで、サーバーのセキュリティを強化するのに役立ちます。

#yum groupremove "X Window System" 

このyumコマンドは、RHELまたはCentosシステムからx11を削除します。代わりにDebian/Ubuntuを使用している場合は、次のコマンドを使用してください。

#apt-get remove xserver-xorg-core 

21。 X Window Systems(x11)を無効にする

x11を完全に削除したくない場合は、代わりにこのサービスを無効にすることができます。このようにして、システムはGUIではなくテキストモードで起動します。お気に入りのLinuxテキストエディタを使用して/etc/ default/grubファイルを編集します。

#nano / etc / default / grub 

以下の行を見つけてください–

 GRUB_CMDLINE_LINUX_DEFAULT="静かなスプラッシュ"

次に、次のように変更します–

 GRUB_CMDLINE_LINUX_DEFAULT ="text" 

最後に、–

を使用してGRUBファイルを更新します。
#update-grub 

最後のステップは、GUIシステムをロードしないようにsystemdに指示することです。これを行うには、以下のコマンドを実行します。

#systemctl enable multi-user.target --force#systemctl set-default multi-user.target 

22。リスニングポートを確認する

ネットワーク攻撃はサーバーで非常に一般的です。安全なサーバーを維持したい場合は、リスニングネットワークポートを時々検証する必要があります。これにより、ネットワークに関する重要な情報が提供されます。

#netstat -tulpn#ss -tulpn#nmap -sT -O localhost#nmap -sT -O server.example.com 

上記のコマンドのいずれかを使用して、着信要求をリッスンしているポートを確認できます。 Linuxの重要なnmapコマンドの詳細な説明を提供する以前のガイドがあります。

23。 IPアドレスを調査する

ネットワークに疑わしいIPが見つかった場合は、標準のLinuxコマンドを使用して調査できます。次のコマンドは、netstatとawkを使用して、実行中のプロトコルの概要を表示します。

#netstat -nat | awk'{print $ 6}' |並べ替え| uniq -c | sort -n 

以下のコマンドを使用して、特定のIPに関する詳細情報を検索します。

#netstat -nat | grep  | awk'{print $ 6}' |並べ替え| uniq -c | sort -n 

すべての一意のIPアドレスを表示するには、次のコマンドを使用します。

#netstat -nat | awk'{print $ 5}' |カット-d:-f1 | sed -e'/ ^ $ / d'| uniq 

上記のコマンドをwcにフィードして、一意のIPアドレスの総数を取得します。

#netstat -nat | awk'{print $ 5}' |カット-d:-f1 | sed -e'/ ^ $ / d'| uniq | wc -l <​​/ pre> 

ネットワークセキュリティについて詳しく知りたい場合は、さまざまなLinuxネットワークコマンドに関するガイドをご覧ください。

24。 IPtablesとファイアウォールを構成する

Linuxは、iptablesの形式で、不要なネットワーク要求に対する優れた組み込みの保護を提供します。これは、Linuxカーネルによって提供されるNetfilterメカニズムへのインターフェースです。 iptablesを使用すると、特定のIPアドレスまたはその範囲を簡単にブロックできます。

#iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP 

上記のコマンドを使用して、特定のIPアドレスに対するすべてのネットワーク要求をブロックできます。このツールの詳細については、Linuxiptablesのマニュアルを参照してください。他の強力なファイアウォールをインストールして使用することもできます。

25。カーネルパラメータの設定

Linuxカーネルには多くのランタイムパラメータがあります。それらのいくつかを簡単に微調整して、Linuxの強化を改善することができます。 sysctlコマンドを使用すると、管理者はこれらのカーネルパラメーターを構成できます。カーネルを微調整してセキュリティを強化するために、/ etc/sysctl.confファイルを変更することもできます。

たとえば、sysctl構成の最後に次の行を追加して、カーネルパニックの10秒後にシステムを再起動できるようにします。

#vim /etc/sysctl.conf 
 kernel.panic =10 

以下の行を追加して、mmapベース、ヒープ、スタック、およびVDSOページのアドレスをランダム化します。

 kernel.randomize_va_space =2 

次の行は、カーネルにICMPエラーを無視させます。

 net.ipv4.icmp_ignore_bogus_error_responses =1 

このようなルールを大量に追加して、カーネル要件に合わせてパーソナライズできます。

26。 SUIDとSGIDのアクセス許可を無効にする

SUIDとSGIDは、Linuxファイルシステムでの特殊なタイプのファイル権限です。 SUID権限を持つことで、他のユーザーが実行可能ファイルをそれらのファイルの所有者であるかのように実行できるようになります。同様に、SGID権限は、所有者と同様のディレクトリ権限を付与しますが、ディレクトリ内のすべての子ファイルの所有権も付与します。

安全なサーバーでこれらの権限を自分以外のユーザーに持たせたくないので、これらは悪いことです。 SUIDとSGIDが有効になっているファイルを見つけて、それらを無効にする必要があります。次のコマンドは、SUIDおよびSGID権限が有効になっているすべてのファイルをそれぞれ一覧表示します。

#find / -perm / 4000#find / -perm / 2000 

これらのファイルを適切に調査し、これらの権限が必須かどうかを確認してください。そうでない場合は、SUID/SGID特権を削除します。以下のコマンドは、それぞれSUID/SGIDを削除します。

#chmod 0755 / path / to / file#chmod 0664 / path / to / dir 

27。ディスクパーティションの分割

Linuxファイルシステムは、ユースケースに基づいてすべてをいくつかの部分に分割します。ファイルシステムの重要な部分をディスクストレージの異なるパーティションに分割できます。たとえば、次のファイルシステムは異なるパーティションに分割する必要があります。

  • / usr
  • /ホーム
  • / var&/ var / tmp
  • / tmp

また、ApacheやFTPサーバーのルートなど、サービスごとに個別のパーティションを作成する必要があります。これは、システムの機密部分を分離するのに役立ちます。したがって、悪意のあるユーザーがシステムの一部にアクセスしたとしても、システム全体を自由に移動することはできません。

28。安全なシステムパーティション

Linuxサーバー強化タスクを実行する場合、管理者は基盤となるシステムパーティションに特別な注意を払う必要があります。悪意のあるユーザーは、/ tmp、/ var / tmp、/ dev / shmなどのパーティションを利用して、不要なプログラムを保存および実行する可能性があります。幸い、/ etc / fstabファイルにいくつかのパラメーターを追加することで、パーティションを保護するための手順を実装できます。 Linuxテキストエディタを使用してこのファイルを開きます。

#vim / etc / fstab 

/tmpの場所を含む行を見つけます。ここで、デフォルトの後に、パラメーターnosuid、nodev、noexec、およびroをコンマ区切りのリストとして追加します。

次の機能を提供します–

  • nosuid –このパーティションでのSUID権限を禁止します
  • nodev-このパーティションの特別なデバイスを無効にする
  • noexec –このパーティションのバイナリの実行権限を無効にします
  • ro –読み取り専用

29。ディスククォータを有効にする

ディスククォータは、システム管理者によって設定された制限であり、他のユーザーのLinuxファイルシステムの使用を制限します。 Linuxのセキュリティを強化する場合は、サーバーにディスククォータの実装が必須です。

#vim / etc / fstabLABEL =/ home / home ext2 defaults、usrquota、grpquota 1 2 

上記の行を/etc/ fstabに追加して、/homeファイルシステムのディスククォータを有効にします。すでに行/homeがある場合は、それに応じて変更します。

#quotacheck -avug 

このコマンドは、すべてのクォータ情報を表示し、ファイルaquota.userおよびaquota.groupを/homeに作成します。

#edquota  

このコマンドは、クォータ制限を割り当てることができるエディタでのクォータ設定を開きます。ディスククォータサイズとiノードの数にソフト制限とハード制限の両方を設定できます。以下のコマンドを使用して、ディスククォータの使用状況に関するレポートを表示します。

#repquota / home 

30。 IPv6接続を無効にする

IPv6またはインターネットプロトコルバージョン6は、TCP/IPプロトコルの最新バージョンです。拡張機能リストと多くのユーザビリティの利点が付属しています。ただし、ほとんどのサーバーでは、IPv4が依然として選択されています。したがって、IPv6をまったく使用していない可能性があります。このような場合は、これを完全にオフにする必要があります。

不要なネットワーク接続を削除することで、サーバーのセキュリティがより強固になります。したがって、IPv6をオフにすると、適切なLinux強化効果が得られます。カーネルレベルからIPv6接続を無効にするには、以下の行を/etc/sysctl.confに追加します。

#vim /etc/sysctl.conf 
 net.ipv6.conf.all.disable_ipv6 =1net.ipv6.conf.default.disable_ipv6 =1net.ipv6.conf.lo.disable_ipv6 =1 

最後に、以下のコマンドを実行して、サーバーに変更をロードします。

#sysctl -p 

31。 Wordで書き込み可能なファイルを維持する

単語書き込み可能なファイルは、誰でも書き込むことができるファイルです。これは、ユーザーが実行可能ファイルを効果的に実行できるようにするため、非常に危険な場合があります。さらに、適切なスティッキービットを設定しない限り、Linuxの強化は絶対確実ではありません。スティッキービットは、設定すると、ユーザーが他の人のディレクトリを削除できないようにする単一のビットです。

したがって、スティッキービットが設定された誰でも書き込み可能なファイルがある場合は、所有されていなくても、誰でもこれらのファイルを削除できます。これは別の深刻な問題であり、サーバーのセキュリティに大きな打撃を与えることがよくあります。幸い、以下のコマンドを使用して、このようなファイルをすべて見つけることができます。

#find / path / to / dir -xdev -type d \(-perm -0002 -a!-perm -1000 \)-print 

path引数を、そのようなファイルを含む可能性のあるディレクトリに置き換えます。ファイルシステムのルート「/」から開始することもできますが、実行には長い時間がかかります。リストされたら、ファイルを徹底的に調査し、必要に応じて権限を変更します。

32。所有者ファイルを維持する

Noownerファイルは、所有者またはグループが関連付けられていないファイルです。これらは、多くの望ましくないセキュリティの脅威をもたらす可能性があります。したがって、管理者はこれらを特定するために必要な措置を講じる必要があります。適切なユーザーに割り当てることも、完全に削除することもできます。

次のfindコマンドを使用して、ディレクトリに存在するnoownerファイルを一覧表示できます。 Linuxでのfindコマンドの詳細については、このガイドを確認してください。

#find / path / to / dir -xdev -type d \(-perm -0002 -a!-perm -1000 \)-print 

結果を徹底的に調べて、サーバーに不要な所有者ファイルがないことを確認します。

33。サーバーログの確認

ほとんどのUnixシステムは、Syslog標準を使用して、カーネル、ネットワーク、システムエラーなどに関する有用な情報をログに記録します。これらのログは/var/logの場所にあります。 Linuxでは、いくつかのターミナルサーバーコマンドを使用して表示できます。たとえば、次のコマンドは、カーネルに関する最近のログエントリを表示します。

#tail /var/log/kern.log 

同様に、認証情報については/var/log/auth.logを参照してください。

#less /var/log/auth.log 

/var/log/boot.logファイルは、システムの起動プロセスに関する情報を提供します。

#less /var/log/boot.log 

/ var / log/dmesgからハードウェアとデバイスの情報を調べることもできます。

#less / var / log / dmesg 

/ var / log / syslogファイルには、認証ログを除くシステム内のすべてのログ情報が含まれています。サーバーの概要を把握するために、サーバーを検査する必要があります。

#less / var / log / syslog 

最後に、journalctlを使用してsystemdジャーナルを検査できます。大量の有用なログが生成されます。

34。ログローテーションパッケージを使用する

Linuxシステムはログを収集し、管理者のために保存します。時間の経過とともに、これらのログのサイズは大きくなり、ディスク領域が大幅に不足する可能性さえあります。 logrotateパッケージは、システムログをローテーション、圧縮、およびメール送信できるため、この場合に非常に便利です。 Linuxの強化に関しては、その役割に疑問を抱くかもしれませんが、疑いの余地のない利点があります。

logrotateのサービス固有の構成ファイルは、/ etc/logrotate.dディレクトリーにあります。グローバルlogrotate構成は、/ etc/logrotate.confを介して行われます。ここでは、ログを保持する日数、ログを圧縮するかどうかなど、さまざまなパラメータを設定できます。

35。 Logwatch/Logcheckをインストールする

ログファイルには通常多くの情報が含まれていますが、それらの多くはLinuxの強化とは無関係です。ありがたいことに、管理者はLogwatchやLogcheckなどのパッケージを使用して、疑わしいログを簡単に監視できます。ログに予想される一般的なエントリを除外し、異常なエントリにのみ注意を向けます。

Logwatchは、ログ管理をはるかに簡単にする非常に強力なログアナライザーです。サーバー上のすべてのアクティビティの統合レポートを提供するため、オールインワンソリューションを探している管理者に適しています。

#sudo apt-get install logwatch#yum install -y logwatch 

上記のコマンドを使用して、Ubuntu/DebianシステムとRHEL/Centosシステムにそれぞれインストールできます。 Logcheckは、logwatchに比べてかなり簡単です。疑わしいログが発生するとすぐに管理者にメールを送信します。 –

でインストールできます
#sudo apt-get install logcheck#yum install -y logcheck 

36。 IDSソリューションをインストールする

サーバーに最適なLinux強化方法の1つは、IDS(侵入検知ソフトウェア)を使用することです。私たちの編集者は、この目的のためにAdvanced Intrusion Detection Environment(AIDE)を強くお勧めします。これはホストベースのIDSであり、いくつかのメッセージダイジェストアルゴリズム、ファイル属性、正規表現のサポート、圧縮のサポートなど、多くの堅牢な機能を提供します。

#apt-get install aide#yum install -y aide 

上記のコマンドを使用して、Ubuntu/DebianおよびRHEL/Centosにインストールできます。さらに、Linuxのセキュリティを維持したい場合は、ルートキットチェッカーもインストールする必要があります。ルートキットは、システムの制御を引き継ぐように設計された有害なプログラムです。ルートキット検出の一般的なツールには、Chkrootkitとrkhunterがあります。

37。 Firewire/Thunderboltデバイスを無効にする

できるだけ多くの周辺機器を無効にすることをお勧めします。これにより、インフラストラクチャに直接アクセスした攻撃者からサーバーを保護できます。以前、USBデバイスを無効にする方法を示しました。ただし、悪意のあるユーザーは引き続きFirewireまたはThunderboltモジュールを接続する可能性があります。

Firewireは、IEEE1394ハードウェアインターフェイスの総称です。ビデオカメラなどのデジタル機器を接続するために使用されます。次のコマンドを使用して無効にします。

#echo "blacklist firewire-core">> /etc/modprobe.d/firewire.conf 

同様に、Thunderboltインターフェイスは、システムと、ハードディスクストレージ、RAIDアレイ、ネットワークインターフェイスなどの高速周辺機器との間の接続を提供します。以下のコマンドを使用して無効にできます。

#echo "blacklist thunderbolt">> /etc/modprobe.d/thunderbolt.conf 

38。 IPSソリューションをインストールする

IPSまたは侵入防止ソフトウェアは、ブルートフォース攻撃からネットワークサーバーを保護します。かなりの数の悪意のあるユーザーやボットがリモートサーバーにアクセスしようとしているため、適切なIPSを設定すると、長期的には役立ちます。

Fail2Banは、Unixライクなシステムで最も人気のあるIPSソリューションの1つです。 Pythonを使用して記述されており、すべてのPOSIX準拠プラットフォームで使用できます。邪魔なネットワークリクエストを常に探し、できるだけ早くブロックします。以下のコマンドを使用してFail2Banをインストールします。

#apt-get install -y fail2ban#yum install -y fail2ban 

DenyHostsは、Linux強化のためのもう1つの一般的なIPSソリューションです。それはあなたのsshサーバーを侵入的なブルートフォースの試みから保護します。次のコマンドを使用して、DebianまたはCentosサーバーにインストールします。

#apt-get install -y denyhosts#yum install -y denyhosts 

39。 OpenSSHサーバーを強化する

OpenSSHは、パブリックネットワークを介した安全な通信を提供するネットワーキングユーティリティで構成されるソフトウェアスイートです。 The OpenSSH server has become the de-facto application for facilitating ssh connections. However, the bad guys also know this and they frequently target OpenSSH implementations. So, hardening this application should be a top concern for all Linux sysadmin.

For example- always use keys over password when initiating a new session, disable superuser login, disable empty passwords, limit user access, set up firewalls on port 22, set idle timeouts, use TCP wrappers, limit incoming requests, disable host-based authentication, and so on. You may also employ advanced Linux hardening methods like chrooting OpenSSH.

40。 Utilize Kerberos

Kerberos is a computer network authentication protocol that allows access to computerized infrastructures based on tickets. It uses very hard to break cryptographic logic which makes systems supported by Kerberos very secure. Admins can protect their system from eavesdropping attacks and similar passive networking attacks very easily if they use the Kerberos protocol.

Kerberos is being developed by MIT and provides several stable releases. You can download the application from their website. Consult the documentation to see how it works and how you can set it up for your usage.

41。 Harden Host Network

Admins should employ strong network policies in order to protect their secure servers against malicious hackers. We have already outlined the necessity of using intrusion detection systems and intrusion prevention systems. However, you can harden your host network further by doing the following tasks.

# vim /etc/sysctl.conf
net.ipv4.ip_forward=0# disbale IP forwardingnet.ipv4.conf.all.send_redirects=0net.ipv4.conf.default.send_redirects=0# disable send packet redirectsnet.ipv4.conf.all.accept_redirects=0net.ipv4.conf.default.accept_redirects=0# disable ICMP redirectsnet.ipv4.icmp_ignore_bogus_error_responses# enable bad error message protection

We’ve added comments using the hash symbol to outline the purpose of these network parameters.

42。 Utilize AppArmor

AppArmor is a Mandatory Access Control (MAC) mechanism that makes it possible to restrict the usage of system resources based on programs. It allows admins to mandate policies on a program-level rather than users. You can simply create profiles that control the access to network, sockets, file permissions, and so on for your host applications.

Recent Debian/Ubuntu systems come with AppArmor pre-installed. The pre-existing AppArmor profiles are stored in the /etc/apparmor.d directory. You can modify these policies or even add your own policies during the Linux hardening process. Use the below command to view the AppArmor status in your system.

# apparmor_status

43。 Secure Web Server

Linux servers are widely used for powering web applications. If you’re using your server for this purpose, you need to harden your server components appropriately. Some of these the PHP runtime, Apache HTTP server, and the Nginx reverse proxy server. Secure your Apache server by adding the below lines in the configuration file.

# vim /etc/httpd/conf/httpd.conf
ServerTokens ProdServerSignature OffTraceEnable OffOptions all -IndexesHeader always unset X-Powered-By
# systemctl restart httpd.service

We’ve prepared a standalone guide on the Nginx server a while ago. Follow the suggestions in that guide to secure your Nginx server. Head over to this documentation for learning the best PHP security practices.

44。 Configure TCP Wrappers

TCP wrappers are a host-based network filtering system that allows or denies access to your host services based on pre-set policies. However, for it to work, your host service must be compiled against the libwrap.a library. Some common TCP wrapperd Unix daemons include sshd, vsftpd, and xinetd.

# ldd /sbin/sshd | grep libwrap

This command will notify if a service is supported by TCP wrappers or not. The TCP wrappers system enforces access control using two configuration files, the /etc/hosts.allow and /etc/hosts.deny. For example, add the following lines to /etc/hosts.allow for allowing all incoming requests to the ssh daemon.

# vi /etc/hosts.allowsshd :ALL

Add the following to /etc/hosts.deny for rejecting all incoming requests to the FTP daemon.

# vi /etc/hosts.denyvsftpd :ALL

To see more information about the configuration options, consult the tcpd man page, or visit this documentation from FreeBSD.

45。 Maintain Cron Access

Linux provides robust automation support by means of cron jobs. In short, you can specify routine tasks using the cron scheduler. Visit our earlier guide on cron and crontab to learn how cron works. Nevertheless, admins must make sure that ordinary users are unable to access or put entries in the crontab. Simply put their usernames in the /etc/cron.deny file to do this.

# echo ALL>>/etc/cron.deny

This command will disable cron for all users in your server except root. To allow access for a specific user, add his username to the /etc/cron.allow file.

46。 Disable Ctrl+Alt+Delete

The Ctrl+Alt+Delete key combinations allow users to force reboot many Linux distributions. This can be particularly problematic if you’re managing a secure server. Admins should disable this hotkey in order to maintain proper Linux hardening. You can run the following command to disable this in systemd-based systems.

# systemctl mask ctrl-alt-del.target

If you’re on legacy systems that use init V instead of systemd, edit the /etc/inittab file and comment out the following line by appending a hash before it.

# vim /etc/inittab
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

47。 Enable NIC Bonding

NIC or Network Interface Card bonding is a form of link aggregation in Linux. Multiple network interfaces are joined in this method for gaining better resource availability and throughput. If you’re maintaining busy Linux servers, you can use this method for reducing the workload on a single interface and distribute them across multiple interfaces.

The whole process of NIC bonding differs between Debian and RHEL/Centos systems. We will cover them in a standalone guide soon. For now, simply remember that you can achieve better reliability by enabling network bonding.

48。 Restrict Core Dumps

Core dumps are memory snapshots that contain crash information of executables. These are created when binaries stop working or crash in simple terms. They contain too much sensitive information about the host system and may threaten your Linux security if fallen into the wrong hands. Thus, it is always a good idea to restrict core dumps on production servers.

# echo 'hard core 0'>> /etc/security/limits.conf# echo 'fs.suid_dumpable =0'>> /etc/sysctl.conf# sysctl -p
# echo 'ulimit -S -c 0> /dev/null 2>&1'>> /etc/profile

Run the above commands to restrict cor dumps on your server and increase Linux hardening.

49。 Enable Exec Shield

The Exec Shield project was developed by Red Hat for protecting Linux systems against automated remote attacks. It performs particularly well against various buffer overflow-based exploits. You can enable exec shield for your Linux server by running the below commands.

# echo 'kernel.exec-shield =1'>> /etc/sysctl.conf# echo 'kernel.randomize_va_space =1'>> /etc/sysctl.conf

This method will work on both Debian and RHEL systems.

50。 Create Regular Backups

No matter how many Linux hardening methods you apply, you need to be always prepared for unforeseen problems. Backing up your workstation or server can prove extremely beneficial in the long run. Thankfully, a large number of backup utility for Linux exists to make system backups easier.

Moreover, you must automate the backup process and store your system data safely. Employing disaster management and recovery solutions can be also useful when it comes to data management.

終わりの考え

Although Linux is much more secure when compared to home operating systems, admins still need to maintain a set of Linux hardening policies. We have compiled this guide with many of the best practices used by Linux security experts. You should try to employ as many of them as possible. However, do not apply these without understanding their effect on your system. You need to have a foolproof plan as well as a good understanding of server security to keep your system safe from malicious users. Hopefully, we provided you the essential tips you were looking for.


Linux
  1. Linuxコマンドラインに関する8つのヒント

  2. Linux用の10のベストインスタントメッセージングアプリ

  3. LinuxでのWordpressセキュリティのベストプラクティス

  1. Hyper –Linuxに最適なターミナルアプリ

  2. 最高のVPSは何ですか:WindowsまたはLinux?

  3. 最高の Web Linux サーバー

  1. Linuxでtopコマンドを使用するためのヒント

  2. データサイエンスで最高のLinuxディストリビューションはどれですか?

  3. Linux または Windows - セキュリティの問題