Linux サーバーのセキュリティを強化する 25 のヒント
Linux はデフォルトで安全であると誰もが言い、ある程度の延長には同意しています (議論の余地のあるトピックです)。ただし、Linux にはデフォルトでセキュリティ モデルが組み込まれています。より安全なシステムを作成するには、必要に応じて調整してカスタマイズする必要があります。 Linux は管理が難しいですが、柔軟性と構成オプションがより優れています。
運用環境内のシステムをハッカーやクラッカーの手から保護することは、システム管理者にとって困難な作業です。これは、「Linux ボックスを保護する方法」または「Linux ボックスを強化する」に関連する最初の記事です。この記事では、Linux システムを保護するための役立つ 25 のヒントとテクニックを説明します。以下のヒントとテクニックが、システムの安全性をさらに高めるのに役立つことを願っています。
1. 物理システムのセキュリティ
BIOS の CD/DVD、外部デバイス、フロッピー ドライブからの起動を無効にするように BIOS<を設定します。。次に、BIOS パスワードを有効にし、GRUB もパスワードで保護して、システムへの物理的アクセスを制限します。
- Linux サーバーを保護するために GRUB パスワードを設定する
2. ディスクパーティション
災害が発生した場合に備えて、より高いデータセキュリティを確保するには、異なるパーティションを用意することが重要です。異なるパーティションを作成することで、データを分離およびグループ化できます。予期せぬ事故が発生した場合、そのパーティションのデータのみが破損し、他のパーティションのデータは残ります。次の個別のパーティションが必要であることを確認し、サードパーティのアプリケーションを /opt の下の個別のファイル システムにインストールする必要があることを確認してください。
/
/boot
/usr
/var
/home
/tmp
/opt
3. パッケージを最小限にして脆弱性を最小限に抑える
本当にあらゆる種類のサービスをインストールしますか?パッケージの脆弱性を避けるために、無駄なパッケージのインストールを避けることをお勧めします。これにより、1 つのサービスの侵害が他のサービスの侵害につながるリスクを最小限に抑えることができます。脆弱性を最小限に抑えるために、サーバーから不要なサービスを見つけて削除または無効にします。 「chkconfig」 コマンドを使用して、ランレベル 3 で実行されているサービスを見つけます。
/sbin/chkconfig --list |grep '3:on'
不要なサービスが実行されていることがわかったら、次のコマンドを使用してそれらを無効にします。
chkconfig serviceName off
「yum」 ツールや「apt-get」 ツールなどのRPM パッケージ マネージャーを使用して、システムにインストールされているすべてのパッケージを一覧表示し、次を使用してそれらを削除します。次のコマンド。
yum -y remove package-name
sudo apt-get remove package-name
- 5 chkconfig コマンドの例
- RPM コマンドの 20 の実践例
- Linux パッケージ管理のための 20 の Linux YUM コマンド
- 25 パッケージ管理を管理するための APT-GET および APT-CACHE コマンド
4. リスニングネットワークポートを確認する
「netstat」ネットワーク コマンドを使用すると、開いているすべてのポートと関連プログラムを表示できます。上で述べたように、「chkconfig」コマンドを使用して、システムから不要なネットワーク サービスをすべて無効にします。
netstat -tulpn
- Linux でのネットワーク管理のための 20 の Netstat コマンド
5. セキュアシェル(SSH)を使用する
Telnet および rlogin プロトコルは、セキュリティ侵害となる暗号化形式ではなく、プレーン テキストを使用します。 SSH は、サーバーとの通信中に暗号化テクノロジーを使用する安全なプロトコルです。
必要な場合を除き、root として直接ログインしないでください。コマンドを実行するには「sudo」を使用します。 sudo は /etc/sudoers ファイルで指定されており、VI エディタで開く「visudo」ユーティリティでも編集できます。
デフォルトのSSH 22 ポート番号を他のより高いレベルのポート番号に変更することもお勧めします。メインのSSH設定ファイルを開き、次のパラメータをいくつか作成して、ユーザーのアクセスを制限します。
vi /etc/ssh/sshd_config
rootログインを無効にする
PermitRootLogin no
特定のユーザーのみを許可する
AllowUsers username
SSH プロトコル 2 バージョンを使用する
Protocol 2
- SSH サーバーを保護して保護するための 5 つのベスト プラクティス
6. システムを常に最新の状態に保つ
最新リリースのパッチ、セキュリティ修正、カーネルが入手可能な場合は、それらを使用してシステムを常に最新の状態に保ちます。
yum updates
yum check-update
7. Cronジョブのロックダウン
Cron には独自の組み込み機能があり、ジョブを実行できるユーザーとジョブを実行したくないユーザーを指定できます。これは、/etc/cron.allow および /etc/cron.deny というファイルを使用して制御されます。 cron を使用してユーザーをロックするには、cron.deny にユーザー名を追加し、ユーザーに cron の実行を許可するには cron.allow ファイルに追加します。すべてのユーザーの cron の使用を無効にしたい場合は、「ALL」行を cron.deny ファイルに追加します。
echo ALL >>/etc/cron.deny
- 11 Linux での Cron スケジュールの例
8. USB スティックの検出を無効にする
データの盗難を防止するために、システム内のUSB スティックの使用をユーザーに制限したいことがよくあります。ファイル「/etc/modprobe.d/no-usb」を作成し、以下の行を追加してもUSBストレージは検出されません。
install usb-storage /bin/true
9.SELinuxをオンにする
セキュリティ強化 Linux (SELinux) は、カーネルで提供される強制的なアクセス制御セキュリティ メカニズムです。 SELinux を無効にするということは、システムからセキュリティ メカニズムを削除することを意味します。システムがインターネットに接続されており、一般の人がアクセスしている場合は、削除する前によく考えてください。
SELinux には 3 つの基本的な動作モードが用意されています。
- 強制: これは、マシン上で SELinux セキュリティ ポリシーを有効にして強制するデフォルト モードです。
- パーミッシブ: このモードでは、SELinux はシステムにセキュリティ ポリシーを強制せず、警告とアクションのログ記録のみを行います。このモードは、SELinux 関連の問題のトラブルシューティングの点で非常に役立ちます。
- 無効: SELinux がオフになっています。
コマンドラインから「system-config-selinux」、「getenforce」、または「」を使用して、SELinux モードの現在のステータスを表示できます。セステータス」コマンド。
sestatus
無効になっている場合は、次のコマンドを使用して SELinux を有効にします。
setenforce enforcing
また、「/etc/selinux/config」ファイルから管理することもでき、有効または無効にすることができます。
10. KDE/GNOME デスクトップの削除
専用の LAMP サーバー上でKDE やGNOME などのX Window デスクトップを実行する必要はありません。サーバーのセキュリティとパフォーマンスを向上させるために、それらを削除または無効にすることができます。シンプルを無効にするには、ファイル「/etc/inittab」を開き、実行レベルを 3 に設定します。システムから完全に削除したい場合は、以下のコマンドを使用してください。
yum groupremove "X Window System"
11.IPv6をオフにする
IPv6 プロトコルを使用していない場合は、これを無効にする必要があります。これは、ほとんどのアプリケーションやポリシーは IPv6 プロトコルを必要とせず、現在サーバーでは必要ないためです。 。ネットワーク構成ファイルに移動し、次の行を追加して無効にします。
vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no
12. ユーザーによる古いパスワードの使用を制限する
これは、ユーザーが同じ古いパスワードを使用することを禁止したい場合に非常に便利です。古いパスワード ファイルは /etc/security/opasswd にあります。これはPAM モジュールを使用して実現できます。
RHEL/CentOS/Fedora の下にある「/etc/pam.d/system-auth」 ファイルを開きます。
vi /etc/pam.d/system-auth
Ubuntu/Debian/Linux Mint にある 「/etc/pam.d/common-password」 ファイルを開きます。
vi /etc/pam.d/common-password
次の行を「auth」セクションに追加します。
auth sufficient pam_unix.so likeauth nullok
次の行を「パスワード」セクションに追加して、ユーザーが自分の最後の 5 個のパスワードを再使用できないようにします。
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5
サーバーには最後の 5 個のパスワードのみが記憶されます。最近 5 個の古いパスワードのいずれかを使用しようとすると、次のようなエラーが表示されます。
Password has been already used. Choose another.
13. ユーザーのパスワード有効期限を確認する方法
Linux では、ユーザーのパスワードは暗号化された形式で「/etc/shadow」ファイルに保存されます。ユーザーのパスワードの有効期限を確認するには、「chage」コマンドを使用する必要があります。パスワードの有効期限の詳細情報と最終パスワード変更日が表示されます。これらの詳細は、ユーザーがいつパスワードを変更する必要があるかを決定するためにシステムによって使用されます。
有効期限や時刻などの既存ユーザーの経過情報を表示するには、次のコマンドを使用します。
#chage -l username
任意のユーザーのパスワードの有効期限を変更するには、次のコマンドを使用します。
#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
パラメーター
- -M 最大日数を設定します
- -m 最小日数を設定します
- -W 警告の日数を設定します。
14. アカウントを手動でロックおよびロック解除する
ロックとロック解除の機能は非常に便利で、システムからアカウントを削除する代わりに、1 週間または 1 か月間アカウントをロックできます。特定のユーザーをロックするには、次のコマンドを使用できます。
passwd -l accountName
注 : ロックされたユーザーは、引き続き root ユーザーのみが使用できます。ロックは、暗号化されたパスワードを (!) 文字列に置き換えることによって実行されます。誰かがこのアカウントを使用してシステムにアクセスしようとすると、次のようなエラーが表示されます。
su - accountName
This account is currently not available.
ロックされたアカウントのロックを解除したり、ロックされたアカウントへのアクセスを有効にするには、次のコマンドを使用します。これにより、暗号化されたパスワードを含む文字列 (!) が削除されます。
passwd -u accountName
15. より強力なパスワードの強制
多くのユーザーがソフト パスワードまたは弱いパスワードを使用しており、 そのパスワードが辞書ベースまたはブルート フォース攻撃によってハッキングされる可能性があります。 「pam_cracklib」 モジュールは、ユーザーに強力なパスワードの設定を強制する PAM (Pluggable Authentication Modules) モジュール スタックで利用できます。以下のファイルをエディタで開きます。
こちらもお読みください:
vi /etc/pam.d/system-auth
そして、クレジット パラメータを (lcredit、ucredit、dcredit、および/または ocredit としてそれぞれ小文字) として使用して行を追加します。 、大文字、数字など)
/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1
16. iptables (ファイアウォール) を有効にする
サーバーへの不正アクセスを保護するためにLinux ファイアウォールを有効にすることを強くお勧めします。 iptables のルールを適用して、受信パケット、送信パケット、および転送パケットをフィルタリングします。特定のudp/tcp ポート番号で許可または拒否する送信元アドレスと宛先アドレスを指定できます。
- 基本的な IPTables ガイドとヒント
17. Inittab で Ctrl+Alt+Delete を無効にする
ほとんどの Linux ディストリビューションでは、「CTRL-ALT-DELETE」 を押すとシステムが再起動されます。したがって、誰かが誤ってこれを行った場合、少なくとも運用サーバーでこのオプションを有効にすることは得策ではありません。
これは「/etc/inittab」ファイルで定義されており、そのファイルをよく見ると以下のような行があることがわかります。デフォルトでは、行はコメントアウトされていません。コメントアウトする必要があります。この特定のキー シーケンス シグナリングはシステムをシャットダウンします。
Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
18. アカウントに空のパスワードがないか確認する
アカウントのパスワードが空であるということは、そのアカウントが Web 上の誰に対しても不正にアクセスできるように開かれていることを意味しており、これは Linux サーバー内のセキュリティの一部です。したがって、すべてのアカウントに強力なパスワードが設定されており、誰もアクセスを許可されていないことを確認する必要があります。空のパスワード アカウントはセキュリティ上のリスクがあり、簡単にハッキングされる可能性があります。空のパスワードを持つアカウントが存在するかどうかを確認するには、次のコマンドを使用します。
cat /etc/shadow | awk -F: '($2==""){print $1}'
19. ログイン前に SSH バナーを表示する
SSH 認証の前に、法的バナーやセキュリティ警告を含むセキュリティ バナーを用意しておくことをお勧めします。このようなバナーを設定するには、次の記事をお読みください。
- SSH 警告メッセージをユーザーに表示する
20. ユーザーのアクティビティを監視する
多数のユーザーを扱う場合は、各ユーザーのアクティビティとユーザーが消費するプロセスの情報を収集し、後で、またはパフォーマンスやセキュリティに何らかの問題が発生した場合にそれらを分析することが重要です。しかし、ユーザーのアクティビティ情報をどのように監視して収集できるか。
「psacct」 と 「acct」 という 2 つの便利なツールがあり、システム上のユーザー アクティビティとプロセスを監視するために使用されます。これらのツールはシステムのバックグラウンドで実行され、システム上の各ユーザー アクティビティと、Apache、MySQL、SSH などのサービスによって消費されるリソースを継続的に追跡します。 FTP など。インストール、設定、使用方法の詳細については、以下の URL を参照してください。
- psacct または acct コマンドを使用してユーザー アクティビティを監視する
21. ログを定期的に確認する
ログを専用のログ サーバーに移動します。これにより、侵入者がローカル ログを簡単に変更するのを防ぐことができます。以下は、一般的な Linux のデフォルトのログ ファイル名とその使用法です。
- /var/log/message – システム ログ全体または現在のアクティビティ ログが利用できる場所。
- /var/log/auth.log – 認証ログ。
- /var/log/kern.log – カーネル ログ。
- /var/log/cron.log – Crond ログ (cron ジョブ)。
- /var/log/maillog – メール サーバーのログ。
- /var/log/boot.log – システム起動ログ。
- /var/log/mysqld.log – MySQL データベース サーバーのログ ファイル。
- /var/log/secure – 認証ログ。
- /var/log/utmp または /var/log/wtmp : ログイン記録ファイル。
- /var/log/yum.log: Yum ログ ファイル。
22. 重要ファイルのバックアップ
実稼働システムでは、災害復旧のために重要なファイルのバックアップを作成し、それらを安全保管庫、リモートサイト、またはオフサイトに保管する必要があります。
23.NICボンディング
NIC ボンディングには 2 種類のモードがあり、ボンディング インターフェイスで説明する必要があります。
- mode=0 – ラウンドロビン
- mode=1 – アクティブおよびバックアップ
NIC ボンディングは、単一障害点を回避するのに役立ちます。 NIC ボンディングでは、2 つ以上のネットワーク イーサネット カードを結合し、他のカードと通信するためのIPアドレスを割り当てることができる 1 つの仮想インターフェイスを作成します。サーバー。何らかの理由で 1 枚のNIC カードがダウンしたり利用できなくなった場合でも、当社のネットワークは利用可能になります。
こちらもお読みください : Linux での NIC チャネル ボンディングの作成
24. /boot を読み取り専用にしておきます
Linux カーネルとその関連ファイルは、/boot ディレクトリにあり、デフォルトでは読み取り/書き込みとなっています。これを読み取り専用に変更すると、重要なブート ファイルが不正に変更されるリスクが軽減されます。これを行うには、「/etc/fstab」ファイルを開きます。
vi /etc/fstab
以下の行を一番下に追加し、保存して閉じます。
LABEL=/boot /boot ext2 defaults,ro 1 2
将来カーネルをアップグレードする必要がある場合は、変更を読み取り/書き込みにリセットする必要があることに注意してください。
25. ICMP またはブロードキャスト リクエストを無視する
「/etc/sysctl.conf」 ファイルに次の行を追加して、ping またはブロードキャスト リクエストを無視します。
Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1
Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1
次のコマンドを実行して、新しい設定または変更をロードします。
#sysctl -p
上記のリストで重要なセキュリティまたはセキュリティ強化のヒントを見逃している場合、またはリストに含める必要があるその他のヒントがある場合。コメントボックスにコメントを書き込んでください。 TecMint は、改善のための議論だけでなく、コメント、提案の受信にも常に関心を持っています。