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はテーブルドラッグオプションを実装します

推薦する

HTML テーブルインライン形式の詳細な説明

インライン形式<colgroup>...</colgroup>属性名 属性値...

CocosCreator MVCアーキテクチャの詳細な説明

概要この記事では、ゲームクライアントでよく使用される MVC アーキテクチャについて紹介します。ゲー...

mysql 解凍パッケージの基本インストールチュートリアル

新しいコンピューターに変更したので、すべての環境を新しいコンピューター上で設定する必要があります。ふ...

Viteの新しい体験の詳細な説明

Vite とは何ですか? (フロントエンドの新しいおもちゃです) Vite は、ネイティブ ES モ...

HTML のブロックレベル要素と行レベル要素、特殊文字、ネスト規則

基本的な HTML Web ページ タグのネスト ルールを紹介する場合、最初に説明する必要があるのは...

docker tagとdocker pushの使い方の詳しい説明

Dockerタグの詳しい説明docker tag コマンドの使い方と、ローカルイメージを daocl...

MySQL 5.7 でパスワードを忘れた場合の解決方法の詳細な説明

環境: [root@centos7 ~]# uname -r 3.10.0-514.el7.x86_...

GitHub のサードパーティ認証方式を Vue で実装する例

目次OAuth アプリの作成コードを取得するaccess_tokenを取得するユーザー情報を取得する...

Centos7.3 に mysql5.7.18 をインストールするための詳細なチュートリアル

1 Linuxディストリビューションのバージョンを確認する[root@typecodes ~]# c...

mysqldump でデータベースをバックアップするときに特定のライブラリを除外する例

例: mysqldump –all-databases を使用すると、すべてのライブラリがエクスポー...

HTMLページの文字セットを指定する2つの方法

1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...

MySQLデータベースのロック機構の分析

同時アクセスの場合、非反復読み取りやその他の読み取り現象が発生する可能性があります。高い同時実行性に...

JavaScript ドラッグタイム ドラッグケースの詳細な説明

目次DragEvent インターフェースデータ転送インターフェースの概要DataTransfer の...

WeChatアプレットAmapマルチポイントルート計画プロセス例の詳細な説明

電話Amap API を呼び出す方法は? Amap が https://lbs.amap.com/a...

Linux システムで MySQL の文字セットを UTF8 に変更する手順

目次1. データベース内の MySQL ステータスを確認します。 2. 設定ファイルを変更します。 ...