\r\n\r\n

初級シスアドのための10個の集中的なリナックスのヒント

linuxのシステム管理者が最初の一歩を踏み出すとき、システムの安全性を確保するために必要なOS強化のヒントはここにある...。

Linuxシステムは、安全で堅牢な管理ツールを提供するように設計されています。しかし、どんなに優れたシステムを設計しても、その安全性はユーザー次第です。

初心者が自分のマシンに最適なセキュリティポリシーを見つけるには、通常数年かかると言われています。そこで今回は、Linuxのハードニングの基本的なコツをご紹介します。ぜひお試しください。

1 強力なパスワードポリシーの実施

パスワードは、ほとんどのシステムで主要な認証方法となっています。ホームユーザーであれ、プロフェッショナルであれ、信頼できるパスワードの施行は必須です。まず、空のパスワードを無効にする。今でも使っている人がいるなんて信じられませんよね。

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

rootユーザーで上記のコマンドを実行し、どのアカウントのパスワードが空なのかを確認します。もし、誰かが空のパスワードを持っていることを発見したら、すぐにそのユーザーをロックアウトしてください。することができます。

passwd -l USERNAME

また、ユーザーが古いパスワードを使用できないようにするために、パスワードエージングを設定することもできます。

chage -l USERNAME

このコマンドは、現在の有効期限を表示します。30 日後にパスワードが失効するように設定するには、次のコマンドを使用します。ユーザーは、Linuxパスワードマネージャーを使用して、オンラインアカウントを保護することができます。

chage -M 30 USERNAME

2 基本データのバックアップ

データのことを真剣に考えているならば、定期的にバックアップを取ることです。これなら、たとえシステムがクラッシュしても、すぐにデータを復旧させることができます。しかし、Linuxのハード化には、適切なバックアップ方法を選択することが重要です。

ホームユーザーであれば、ハードディスクにデータをクローンすれば十分ですが、企業では高速リカバリを実現する複雑なバックアップシステムが必要です。

iii. レガシーな通信手段の回避

Linuxは様々な遠隔通信方式をサポートしています。しかし、telnet、rlogin、ftpのようなレガシーなUnixサービスは、深刻なセキュリティ問題を引き起こす可能性があります。だから、避けるようにしてください。それらを完全に削除することで、それらに関連するセキュリティ問題を軽減することができます。

apt-get --purge remove xinetd nis tftpd tftpd-hpa telnetd \> rsh-server rsh-redone-server

このコマンドは、Ubuntu/Debianのマシンから、広く使われているが時代遅れのサービスをいくつか削除するものです。RPMベースのシステムを使用している場合は、代わりに以下の方法を使用してください。

yum erase xinetd ypserv tftp-server telnet-server rsh-server

4 セキュアなopenssh

Linuxのリモート通信は、SSHプロトコルが推奨されています。OpenSSH サーバー(sshd)が安全に設定されていることを確認してください。SSHサーバーの設定については、こちらで詳しく説明しています。

etc/ssh/sshd_config ファイルを編集し、ssh のセキュリティポリシーを設定します。ここでは、誰でもできる一般的なセキュリティポリシーを紹介します。

PermitRootLogin no # disables root loginMaxAuthTries 3 # limits authentication attemptsPasswordAuthentication no # disables password authenticationPermitEmptyPasswords no # disables empty passwordsX11Forwarding no # disables GUI tran**issionDebianBanner no # di**ales verbose bannerAllowUsers *@XXX.X.XXX.0/24 # restrict users to an IP range

5 cronの使用を制限する

CRONは、Linux用の堅牢なジョブスケジューラです。管理者がLinuxでcrontabを使用してタスクをスケジュールすることができます。そのため、CRONジョブを実行できるユーザーを制限することが非常に重要です。次のコマンドを使用すると、あるユーザーの有効なcronjobをすべて見つけることができます。

crontab -l -u USERNAME

各ユーザーのジョブをチェックして、CRONを利用している人がいないかどうかを確認します。自分以外のすべてのユーザーがcrontabを使用できないようにしたい場合は、次のコマンドを実行してください。

echo $(whoami) >> /etc/cron.d/cron.allow# echo ALL >> /etc/cron.d/cron.deny

6 強制パムモジュール

Linux-PAM(Pluggable Authentication Modules)は、アプリケーションやサービスに対して強力な認証機能を提供します。システムのログインを保護するために、様々なPAMポリシーを使用することができます。例えば、次のコマンドは、パスワードの再利用を制限します。

# CentOS/RHELecho 'password sufficient pam_unix.so use_authtok md5 shadow remember=5' >> \> /etc/pam.d/system-auth# Ubuntu/Debianecho 'password sufficient pam_unix.so use_authtok md5 shadow remember=5' >> \> /etc/pam.d/common-password

また、過去5週間以内に使用されたパスワードの使用を制限している。さらに、セキュリティの追加レイヤーを提供するPAMポリシーも数多く存在する。

7 未使用のパッケージを削除する

使っていないパッケージを削除することで、マシンへの攻撃を減らすことができます。そのため、ほとんど使用しないパッケージは削除することをお勧めします。以下のコマンドで、現在インストールされているすべてのパッケージを確認することができます。

yum list installed # CentOS/RHEL apt list --installed # Ubuntu/Debian

未使用のパッケージvlcを削除したい場合、rootユーザで以下のコマンドを実行します。

yum remove vlc # CentOS/RHELapt remove vlc # Ubuntu/Debian

8 セキュリティカーネルパラメータ

また、Linuxのハードニングとして有効なのが、カーネルパラメータの保護です。これらのパラメータは、sysctlを使用するか、設定ファイルを変更することで設定できます。ここでは、一般的な構成を紹介します。

kernel.randomize_va_space=2 # randomnize address base for mmap, heap, and stackkernel.panic=10 # reboot after 10 sec following a kernel panicnet.ipv4.icmp_ignore_bogus_error_resp***es # protects bad error messagesnet.ipv4.ip_forward=0 # disables IP forwardingnet.ipv4.icmp_ignore_bogus_error_resp***es=1 # ignores ICP errors

これらは基本的な設定であり、カーネルを設定するさまざまな方法は、経験から学ぶことができます。

9 iptablesの設定

Linux カーネルは、netfilterapi を介してネットワークパケットの堅牢なフィルタリング方法を提供します。iptablesを使用して、このAPIと対話し、ネットワークリクエストのカスタムフィルタを設定することができます。ここでは、セキュアなユーザーのための基本的なiptablesのルールを紹介します。

-A INPUT -j REJECT # reject all inbound requests-A FORWARD -j REJECT # reject traffic forwarding-A INPUT -i lo -j ACCEPT-A OUTPUT -o lo -j ACCEPT # allow traffic on localhost# allow ping requests-A OUTPUT -p icmp -j ACCEPT # allow outgoing pings# allow established/related connecti***-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# allow DNS lookups-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT# allow http/https requests-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT-A OUTPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT# allow SSH access-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT

10 モニタリングログ

ログは、Linuxマシンをより深く理解するために利用することができます。お使いのシステムには、アプリケーションやサービスのログファイルが複数保存されています。ここでは、基本的なものの概要を説明します。

  • /variable/log/authentication log - 認証の試行に関するログを記録します。
  • /variables/log/daemon.log - バックグラウンド・アプリケーションのログを記録します。
  • /var/log/debug - デバッグデータの記録
  • /variables/logs/kernel logs - カーネルデータのログを記録します。
  • /var/log/syslog --- システムデータのログを取る。
  • /var/log/faillog - ログインに失敗したログを記録します。

初心者のための最高のリナックス集中ヒント

Linuxシステムのセキュリティ確保は、思っているほど難しくはありません。このガイドで紹介されているいくつかのヒントを参考にして、セキュリティを強化してください。経験を積めば、Linuxを保護する方法をより多く習得することができます。

  • 2021-03-28 14:39 に公開
  • 閲覧 ( 39 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ