12のLinuxセキュリティのヒント

画像 私たちは危険な時代に生きています。ほぼ毎日、新しい脆弱性が発見され、それに基づいてエクスプロイトが作成され、巨大な組織が依存する通常のLinuxホームコンピューターとサーバーが攻撃される可能性があります。



セキュリティに注意を払い、システムを定期的に更新することもできますが、通常これでは十分ではありません。 したがって、本日は、CentOS 7の例でLinuxベースのシステムのセキュリティを向上させるための12のヒントを共有します。



端子保護



システムのセキュリティを強化するために、特定の端末の使用をrootユーザーに制限することにより、システムへのコンソールアクセスを保護できます。 これを行うには、スーパーユーザーが/etc/securetty



使用できる端末を指定し/etc/securetty







必須ではありませんが、スーパーユーザーが1つの端末からのみログインし、残りを他のユーザーに残すことをお勧めします。



パスワードリマインダー



今日では、複雑なパスワードが絶対に必要です。 ただし、パスワードが定期的に変更される場合はさらに優れています。 忘れがちなので、パスワードの有効期間やパスワードの変更時期を思い出させるために、何らかのシステムメカニズムを使用するとよいでしょう。



このようなリマインダーを整理する方法は2つあります。 1つ目はchage



コマンドを使用すること、2つ目は必要なデフォルト値を/etc/login.defs



に設定することです。



chage



コマンドの呼び出しは次のようになります。



 $ chage -M 20 likegeeks
      
      





ここでは、 -M



を使用して、パスワードの有効期限を日数で設定します。



キーなしでこのコマンドを使用すると、必要な値を入力するようになります。



 $ chage likegeeks
      
      





2番目の方法は、/ /etc/login.defs



ファイルを変更することです。 興味のある値がどのように見えるかの例を次に示します。 必要なものに変更できます。



 PASS_MAX_DAYS 10 PASS_MIN_DAYS 0 PASS_WARN_AGE 3
      
      





管理者の役割を果たしている場合は、ユーザーに複雑なパスワードを使用するように奨励する必要があることに注意してください。 これはpam_cracklibを使用して実行できます。



このプログラムをインストールした後、/ /etc/pam.d/system-auth



/ /etc/pam.d/system-auth



/ /etc/pam.d/system-auth



移動して、次のように入力できます。



 password required pam_cracklib.so minlen=12 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1
      
      





須藤通知



sudo



、一方では生活を楽にし、他方では、取り返しのつかない結果をもたらす可能性のあるLinuxセキュリティの問題を引き起こす可能性があります。 sudo



設定は/etc/sudoers



ファイルに保存されます。 このファイルを使用すると、通常のユーザーがスーパーユーザーに代わって特定のコマンドを実行することを防ぐことができます。 さらに、上記のファイルに以下を追加することにより、使用時にsudo



に電子メールを送信させることができます。



 mailto yourname@yourdomain.com
      
      





また、 mail_always



プロパティをon



設定する必要があります。



 mail_always on
      
      





SSH保護



Linuxのセキュリティについて話している場合は、SSHサービスについても検討する必要があります。 SSHは重要なシステムサービスであり、システムにリモートで接続できます。また、問題が発生した場合に状況を保存する唯一の方法である場合があるため、SSHの無効化については説明しません。



ここではCentOS 7を使用しているため、SSH構成ファイルはetc/ssh/sshd_config



ます。 攻撃者が使用するスキャナーまたはボットは、デフォルトのポート22を使用してSSHに接続しようとします。



標準のSSHポートを、たとえば5555



などの別の未使用のポートに変更するのが一般的です。 SSHポートは、構成ファイルで目的のポート番号を設定することで変更できます。 たとえば、次のように:



 Port 5555
      
      





さらに、 PermitRootLogin



パラメーター値をno



変更することにより、rootユーザーへのSSHログインを制限できます。



 PermitRootLogin no
      
      





そして、もちろん、パスワード認証を無効にし、代わりに公開鍵と秘密鍵を使用する価値があります。



 PasswordAuthentication no PermitEmptyPasswords no
      
      





次に、SSHタイムアウトについて説明します。 タイムアウトの問題は、いくつかのパラメーターを設定することで解決できます。 たとえば、次の設定は、接続をサポートするパケットが指定された秒数後に自動的に送信されることを意味します。



 ServerAliveInterval 15 ServerAliveCountMax 3 TCPKeepAlive yes
      
      





これらのパラメーターを設定することにより、接続時間を延長できます。



 ClientAliveInterval 30 ClientAliveCountMax 5
      
      





SSHの使用を許可するユーザーを指定できます。



 AllowUsers user1 user2
      
      





グループレベルで権限を割り当てることもできます。



 AllowGroup group1 group2
      
      





Google認証システムを使用したSSH保護



さらに信頼性の高いSSH保護を実現するには、たとえば、Google認証システムを使用するなど、2要素認証を使用できます。 これを行うには、まず適切なプログラムをインストールする必要があります。



 $ yum install google-authenticator
      
      





次に、インストールを検証するために実行します。



 $ google-authenticator
      
      





また、携帯電話にGoogle認証システムアプリをインストールする必要があります。



ファイル/etc/pam.d/sshd



を編集して、以下を追加します。



 auth required pam_google_authenticator.so
      
      





あとは、 /etc/ssh/sshd_config



ファイルに次の行を追加して、このSSHをすべて報告するだけです。



 ChallengeResponseAuthentication yes
      
      





次に、SSHを再起動します。



 $ systemctl restart sshd
      
      





SSHを使用してログインしようとすると、確認コードの入力を求められます。 その結果、システムへのSSHアクセスは以前よりもはるかによく保護されます。



Tripwireによるファイルシステムの監視



Tripwireは、Linuxセキュリティを強化するための優れたツールです。 これは侵入検知システム(HIDS)です。



Tripwireの目標は、ファイルシステムのアクティビティを追跡し、ファイルを変更したユーザーと、これらの変更がいつ発生したかを追跡することです。



Tripwireをインストールするには、EPELリポジトリにアクセスする必要があります。 これは簡単なタスクであり、次のコマンドで解決できます。



 wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm $ rpm -ivh epel-release-7-9.noarch.rpm
      
      





EPELリポジトリをインストールした後、Tripwireをインストールできます。



 $ sudo yum install tripwire
      
      





次に、キーファイルを作成します。



 $ tripwire-setup-keyfiles
      
      





キーファイルの複雑なパスワードを入力するように求められます。 その後、/ /etc/tripwire/twpol.txt



ファイルを変更してTripwireを構成できます。 各行には意味のあるコメントが付いているため、このファイルを操作するのは難しくありません。



プログラムの構成が完了したら、初期化する必要があります。



 $ tripwire --init
      
      





システムのスキャン中の初期化には、ファイルのサイズに応じて時間がかかります。



保護されたファイルへの変更はすべて侵入とみなされ、管理者はこれについて通知されます。管理者は、発信元を疑わないファイルを使用してシステムを復元する必要があります。



このため、Tripwireを使用して必要なシステム変更を確認する必要があります。 これを行うには、次のコマンドを使用します。



 $ tripwire --check
      
      





そして、Tripwireに関する別の推奨事項を次に示します。 twpol.txt



およびtwcfg.txt



保護しtwcfg.txt



。 これにより、システムのセキュリティが向上します。



Tripwireには多くのオプションと設定があります。 次のようにヘルプを表示できます。



 man tripwire
      
      





Firewalldを使用する



Firewalldはiptables



代替品であり、このプログラムはLinuxネットワークのセキュリティを改善します。 Firewalldを使用すると、現在の接続を停止せずに設定を変更できます。 ファイアウォールは、再起動せずにルールを追加および変更できるサービスとして機能し、ネットワークゾーンを使用します。



firewalld



が現在実行されているかどうかを確認するには、次のコマンドを入力します。



 $ firewall-cmd --state
      
      











次のように、事前定義されたネットワークゾーンを表示できます。



 $ firewall-cmd --get-zones
      
      











これらの各ゾーンには一定の信頼度があります。



この値は次のように更新できます。



 $ firewall-cmd --set-default-zone=<new-name>
      
      





次のようにして、特定のゾーンに関する詳細情報を取得できます。



 $ firewall-cmd --zone=<zone-name> --list-all
      
      





次のコマンドを使用して、サポートされているすべてのサービスのリストを表示できます。



 $ firewall-cmd --get-services
      
      











次に、新しいサービスをゾーンに追加するか、既存のサービスを削除できます。



 $ firewall-cmd --zone=<zone-name> --add-service=<service-name> $ firewall-cmd --zone=<zone-name> --remove-service=<service-name>
      
      





任意のゾーンで開いているすべてのポートに関する情報を表示できます。



 $ firewall-cmd --zone=<zone-name> --list-ports
      
      





次のように、ゾーンにポートを追加して削除できます。



 $ firewall-cmd --zone=<zone-name> --add-port=<port-number/protocol> $ firewall-cmd --zone=<zone-name> --remove-port=<port-number/protocol>
      
      





以下を構成およびポート転送できます。



 $ firewall-cmd --zone=<zone-name> --add-forward-port=<port-number> $ firewall-cmd --zone=<zone-name> --remove-forward-port=<port-number>
      
      





Firewalldは非常に高度なツールです。 最も注目すべき点は、たとえば、設定を変更するときに、サービスを再起動または停止せずに正常に機能することです。 これにより、同様の状況でサービスを再起動する必要がある場合、 iptables



ツールと区別されます。



firewalldからiptablesへの移行



一部の人々は、firewalld firewalld



よりもiptables



ファイアウォールを好んでいます。 firewalld



を使用しているが、 iptables



に戻りたい場合、これは非常に簡単です。



最初にfirewalld



無効にします。



 $ systemctl disable firewalld $ systemctl stop firewalld
      
      





次に、 iptables



インストールします。



 $ yum install iptables-services $ touch /etc/sysconfig/iptables $ touch /etc/sysconfig/ip6tables
      
      





これで、 iptables



サービスを開始できます。



 $ systemctl start iptables $ systemctl start ip6tables $ systemctl enable iptables $ systemctl enable ip6tables
      
      





このすべての後、コンピューターを再起動します。



コンパイラーの制限



攻撃者は自分のコンピューターでエクスプロイトをコンパイルし、関心のあるサーバーにアップロードできます。 当然、このアプローチでは、サーバー上のコンパイラの存在は役割を果たしません。 ただし、最新のサーバー管理システムの場合のように、作業にコンパイラーを使用しない場合は、コンパイラーを制限することをお勧めします。



開始するには、パッケージからすべてのコンパイラバイナリをリストし、それらのアクセス許可を設定します。



 $ rpm -q --filesbypkg gcc | grep 'bin'
      
      











新しいグループを作成します。



 $ groupadd compilerGroup
      
      





次に、コンパイラバイナリグループを変更します。



 $ chown root:compilerGroup /usr/bin/gcc
      
      





そしてもう1つ重要なことです。 これらのバイナリファイルのアクセス許可を変更する必要があります。



 $ chmod 0750 /usr/bin/gcc
      
      





これで、 gcc



を使用しようとするユーザーはエラーメッセージを受け取ります。



ファイル変更防止



不変ファイルは、root権限があっても、どのユーザーでも上書きできません。 ユーザーは、イミュニティフラグが設定されるまでそのようなファイルを変更または削除できません。イミュニティフラグはルートユーザーのみが削除できます。



この機能は、システムを混乱させる可能性のあるエラーから、スーパーユーザーとしてあなたを保護することに気付くのは簡単です。 このアプローチを使用すると、構成ファイルまたはその他のファイルを必要に応じて保護できます。



ファイルを無効にするには、 chattr



コマンドを使用します。



 $ chattr +i /myscript
      
      











immunity属性は、次のコマンドで削除できます。



 $ chattr -i /myscript
      
      











この方法でファイルを保護できますが、この方法でバイナリシステムファイルを処理した場合、イミュニティフラグをクリアするまでそれらを更新できないことに注意してください。



aureportを使用したSELinuxの管理



多くの場合、SELinuxの強制アクセス制御はデフォルトでオフになっています。 これはシステムのパフォーマンスに影響を与えず、SELinuxでの作業は非常に困難です。 ただし、セキュリティを強化するために、SELinuxを有効にし、 aureport



を使用してこのメ​​カニズムの管理をaureport



できます。



aureport



ユーティリティを使用すると、監査ログファイルに基づいてレポートを作成できます



 $ aureport --avc
      
      











実行可能ファイルのリストは、次のコマンドで表示できます。



 $ aureport -x
      
      











aureport



を使用して、完全な認証レポートを作成できます。



 $ aureport -au -i
      
      











失敗した認証試行に関する情報を表示することもできます。



 $ aureport -au --summary -i --failed
      
      











または、成功した認証試行の要約:



 $ aureport -au --summary -i --success
      
      











aureport



ユーティリティは、SELinuxでの作業を大幅に簡素化します。



シーラートを使用する



aureport



加えて、 aureport



と呼ばれる優れたLinuxセキュリティツールを使用できます。 次のようにインストールできます。



 $ yum install setools
      
      





これで、/ /var/log/audit/audit.log



ファイルからアラートを発行し、SELinuxによって特定された問題に関する追加情報を提供するツールができました。



次のように使用できます。



 $ sealert -a /var/log/audit/audit.log
      
      











ここで最も興味深いのは、アラートで、対応する問題を解決する方法に関するヒントを見つけることができることです。



まとめ



ここに記載されているヒントが、Linuxのインストールをより安全にするのに役立つことを願っています。 しかし、情報を保護することになると、これらまたは他の手段を適用することによって、今はあなたを脅かすものはないと仮定することは不可能です。 セキュリティソフトウェアには、常に注意と注意を払う必要があります。



親愛なる読者! Linuxのセキュリティを改善するための単純だが明らかな方法を知っていますか?



All Articles