Linux および Unix サーバーのセキュリティを強化する方法

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける最も重要なリンクです。 Linux は比較的安全なインターネット サーバーであると考えられています。オープン ソース オペレーティング システムであるため、Linux システムにセキュリティ ホールが見つかると、インターネット上の世界中のボランティアが積極的に修復を行います。しかし、システム管理者は情報を入手して適切なタイミングで修正を実行できないことが多く、ハッカーに悪用される機会を与えてしまいます。ただし、これらのシステム自体のセキュリティ上の脆弱性と比較すると、不適切な構成によって発生するセキュリティ問題の方が多く、適切な構成によって回避できます。サーバー上で実行されるサービスが増えるほど、不適切な構成が発生する機会が増え、セキュリティ上の問題が発生する可能性が高くなります。

ご存知のとおり、ネットワーク セキュリティは非常に重要なトピックであり、Linux と Unix はサーバーで実行される最も人気のあるオペレーティング システムです。次の記事では、Linux/Unix サーバー システムのセキュリティを強化するために、セキュリティの問題が発生するのを防ぐための適切な構成を強化します。

1. システムセキュリティログファイル

オペレーティング システム内のログ ファイルは、ネットワーク侵入があったかどうかを検出するための重要な手がかりとなります。システムがインターネットに直接接続されており、多数のユーザーが Telnet/FTP 経由でシステムにログインしようとしていることがわかった場合は、「#more /var/log/secure grep declined」を実行してシステムへの攻撃を確認し、Telnet/rlogin の代わりに SSH を使用するなどの適切な対策を講じることができます。

2. 起動とログインのセキュリティ

1. BIOS セキュリティ

BIOS パスワードを設定し、起動順序を変更して、フロッピー ディスクからシステムを起動できないようにします。

2.ユーザーパスワード

ユーザー パスワードは、Linux セキュリティの基本的な出発点です。多くの人があまりにも単純なユーザー パスワードを使用していますが、これは侵入者にドアを開けているのと同じです。理論的には、十分な時間とリソースがある限り、解読できないユーザー パスワードはありませんが、適切に選択されたパスワードは解読が困難です。適切なユーザー パスワードとは、ユーザーだけが覚えて簡単に理解できる文字列であり、決してどこかに書き留めてはいけません。

3.デフォルトアカウント

オペレーティング システム自体によって開始され、不要なすべてのデフォルト アカウントを無効にする必要があります。これは、システムを初めてインストールするときに行う必要があります。Linux には多数のデフォルト アカウントが用意されており、アカウントの数が増えるほど、システムは攻撃に対して脆弱になります。

次のコマンドを使用してアカウントを削除できます。

#userdel ユーザー名

または、次のコマンドを使用してグループ ユーザー アカウントを削除します。

# グループ削除ユーザー名

4.パスワードファイル

chattr コマンドは、次のファイルに変更不可能な属性を追加し、権限のないユーザーが権限を取得できないようにします。

# チャット +i /etc/passwd

# チャット +i /etc/shadow

# チャット +i /etc/グループ

# チャット +i /etc/gshadow

5. Ctrl+Alt+Delete を無効にしてマシンを再起動する

/etc/inittab ファイルを変更し、「 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 」の行をコメント アウトします。次に、/etc/rc.d/init.d/ ディレクトリ内のすべてのファイルの権限をリセットし、次のコマンドを実行します。

# chmod -R 700 /etc/rc.d/init.d/*

この方法では、上記のすべてのスクリプト ファイルを読み取り、書き込み、または実行できるのは root のみになります。

6. suコマンドの制限

誰も root として su できないようにしたい場合は、/etc/pam.d/su ファイルを編集し、次の 2 行を追加します。

認証は十分です /lib/security/pam_rootok.so デバッグ

認証が必要 /lib/security/pam_wheel.so グループ=isd

現時点では、isd グループのユーザーのみが root として su を実行できます。この後、ユーザー admin が root として su を実行できるようにするには、次のコマンドを実行します。

# ユーザーmod -G10 管理者

7.ログイン情報を削除する

デフォルトでは、ログイン プロンプトには Linux ディストリビューション、カーネル バージョン名、およびサーバー ホスト名が含まれます。セキュリティ要件が高いマシンの場合、これでは情報が漏洩しすぎてしまいます。 /etc/rc.d/rc.local を編集し、システム情報を出力する次の行をコメントアウトできます。

# これにより、起動のたびに /etc/issue が上書きされます。したがって、変更が必要な場合は

# ここで /etc/issue に作成します。そうしないと、再起動時に失われます。

# エコー "" > /etc/issue

# echo "$R" >> /etc/issue

# echo "カーネル $(uname -r) が $a $(uname -m) に存在します" >> /etc/issue

# cp -f /etc/issue /etc/issue.net

# エコー >> /etc/issue

次に、次の操作を実行します。

# rm -f /etc/issue

# rm -f /etc/issue.net

# /etc/issue をタッチする

# /etc/issue.net をタッチします

3. ネットワークアクセスを制限する

1. NFS アクセス

NFS ネットワーク ファイル システム サービスを使用する場合は、/etc/exports に最も制限の厳しいアクセス権限が設定されていることを確認する必要があります。つまり、ワイルドカードを使用せず、ルート書き込み権限を許可せず、読み取り専用ファイル システムとしてのみマウントできるようにします。 /etc/exports ファイルを編集し、次の 2 行を追加します。

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

/dir/to/export はエクスポートするディレクトリ、host.mydomain.com はこのディレクトリにログインするマシンの名前、ro は読み取り専用システムとしてマウントすることを意味し、root_squash は root によるこのディレクトリへの書き込みを禁止します。変更を有効にするには、次のコマンドを実行します。

# /usr/sbin/exportfs -a

2. Inetd設定

まず、/etc/inetd.conf の所有者が root であり、ファイルの権限が 600 に設定されていることを確認します。設定が完了したら、「 stat 」コマンドを使用して確認できます。

# chmod 600 /etc/inetd.conf

次に、/etc/inetd.conf を編集して、次のサービスを無効にします。

ftp telnet シェル ログイン exec talk ntalk imap pop-2 pop-3 finger auth

ssh/scp がインストールされている場合は、Telnet/FTP を無効にすることもできます。変更を有効にするには、次のコマンドを実行します。

#killall -HUP inetd

デフォルトでは、ほとんどの Linux システムはすべてのリクエストを許可しており、TCP_WRAPPERS を使用するとシステム セキュリティを簡単に強化できます。/etc/hosts.deny および /etc/hosts.allow を変更して、アクセス制限を強化できます。たとえば、/etc/hosts.deny を「ALL: ALL」に設定すると、デフォルトですべてのアクセスを拒否できます。次に、許可されたアクセスを /etc/hosts.allow ファイルに追加します。たとえば、「sshd: 192.168.1.10/255.255.255.0 gate.openarch.com」は、IP アドレス 192.168.1.10 とホスト名 gate.openarch.com が SSH 経由で接続できることを意味します。

設定が完了したら、tcpdchk を使用して次の内容を確認できます。

# tcpdchk

tcpchk は TCP_Wrapper 構成チェック ツールであり、tcp ラッパー構成をチェックし、見つかった潜在的または既存の問題を報告します。

3.ログイン端末設定

/etc/securetty ファイルは、ルート ログインを許可する tty デバイスを指定します。このファイルは /bin/login プログラムによって読み取られ、その形式は許可された名前のリストです。/etc/securetty を編集して、次の行をコメント アウトできます。

#端末1

#tty2

#tty3

#tty4

#tty5

#tty6

現時点では、root は tty1 端末でのみログインできます。

4.システムおよびバージョン情報を表示しないでください。

リモート ログイン ユーザーにシステム情報とバージョン情報を表示させたくない場合は、/etc/inetd.conf ファイルを次のように変更します。

telnet ストリーム tcp nowait ルート /usr/sbin/tcpd in.telnetd -

-h を追加すると、telnet はシステム情報を表示せず、「login:」のみを表示します。

4. 攻撃の防止

1. ping をブロックする 誰もシステムに ping を実行できない場合、セキュリティは自然に向上します。これを行うには、/etc/rc.d/rc.local ファイルに次の行を追加します。

エコー 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

2. IPスプーフィングを防止する

IP スプーフィング攻撃を防ぐには、host.conf ファイルを編集して次の行を追加します。

注文バインド、ホスト

マルチオフ

偽装なし

3. DoS攻撃の防止

システムのすべてのユーザーに対してリソース制限を設定すると、DoS タイプの攻撃を防ぐことができます。プロセスの最大数やメモリ使用量など。たとえば、/etc/security/limits.conf に次の行を追加できます。

  • * ハードコア 0
  • * ハードRSS 5000
  • * ハード nproc 20

次に、/etc/pam.d/login ファイルを編集して、次の行が存在するかどうかを確認する必要があります。

セッションが必要 /lib/security/pam_limits.so

上記のコマンドは、デバッグ ファイルを無効にし、プロセス数を 50 に制限し、メモリ使用量を 5 MB に制限します。

上記の設定を行うと、Linux サーバーは既知のセキュリティ問題やネットワーク攻撃のほとんどに対して耐性を持つようになりますが、優れたシステム管理者は、ネットワーク セキュリティの傾向に注意を払い、露出したセキュリティの脆弱性や潜在的なセキュリティの脆弱性を常に修正する必要があります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • UNIX/LINUX SHELL 正規表現構文の詳細な説明と使用法
  • Unix/Linux システムにおける nobody ユーザーと nologin の詳細な紹介
  • おすすめコレクション: 便利な Unix/Linux コマンド スキル
  • Supervisor のインストールと構成の詳細な説明 (Linux/Unix プロセス管理ツール)
  • Linux/Unix で Vim を再起動せずに .vimrc ファイルを再読み込みする手順
  • Linux シェル入門: Linux、OS X、Unix のシェル環境をマスターする
  • Linux/Unix で Perl モジュールをインストールする 2 つの方法
  • Unix/Linuxフォークの隠れたオーバーヘッド

<<:  Mysql マスタースレーブ同期 Last_IO_Errno:1236 エラー解決

>>:  jsはテーブルドラッグオプションを実装します

推薦する

Dockerを使用してプライベートGitLabを構築する2つの方法

最初の方法: docker インストール1. オープンソース版のイメージを取得する2. 対応するデー...

JavaScript キャンバスでカラフルな太陽のハロー効果を実現

この記事では、カラフルな太陽のハロー効果を実現するためのJavaScriptキャンバスの具体的なコー...

Nginx におけるサーバーとロケーションのマッチングロジックの詳細な理解

サーバーマッチングロジックNginx は、リクエストを実行するサーバー ブロックを決定するときに、サ...

シンプルなスネークゲームを実現するネイティブjs

この記事では、スネークゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...

単一テーブルのMySQLバックアップとリストアに関する簡単な説明

A. MySQLバックアップツールxtrabackupのインストール1. Percona 公式 xt...

Vue+element+springboot でファイルダウンロードの進行状況バー表示機能を実装する例

目次1. 需要背景2. 最適化計画3. 具体的な実施3.1 フロントエンドコード3.2 背景コード4...

非常に詳細な MySQL8.0.22 のインストールと設定のチュートリアル

みなさんこんにちは。今日は、MySQL 8.0.22 のインストールと構成について学習します。注意深...

Layuiテーブル行のデータを動的に編集する

目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...

MySQL エラー: 接続数が多すぎる場合の解決策

MySQLデータベースの接続が多すぎますこのエラーは明らかに、mysql_connect の後に m...

HTML+CSS ボックスモデルの例 (円、半円など) 「border-radius」はシンプルで使いやすい

多くの友人は、フロントエンドを学習するときに、ボックス モデルがデフォルトで正方形であることに気付き...

NginxはGzipアルゴリズムを使用してメッセージを圧縮します

HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...

Vue 計算プロパティ実装トランスクリプト

この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

HTMLページ作成に関する私の経験の簡単な要約

Word of Mouth に入社して 3 ~ 4 か月が経ちました。仕事の中で一番の収穫は、ビジュ...

jQueryは動的タグイベントを実装します

この記事では、タグイベントを動的に追加するためのjQueryの具体的なコードを参考までに紹介します。...