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コンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

MySQL パスワードに特殊文字が含まれている場合とコマンドラインからログインする場合

サーバーでは、データベースにすばやくログインするために、通常は mysql -hhost -uuse...

史上最も便利な Zookeeper サーバーの構築方法 (推奨)

ZooKeeperとはZooKeeper は、分散アプリケーションに効率的で可用性の高い分散調整サ...

vue3のテレポート瞬間移動機能の使い方を詳しく解説

vue3テレポート瞬間移動機能の使用は参考用です。具体的な内容は次のとおりです。テレポートは通常、瞬...

Javascript Bootstrapのグリッドシステム、ナビゲーションバー、カルーセルの詳細な説明

目次ブートストラップと関連コンテンツの紹介グリッドシステムネストされた列列オフセット列の並べ替えナビ...

Vue はタブ ラベルを実装します (ラベルが自動スクロールを超える)

作成されたタブラベルがページの表示領域を超えると、タブラベルの距離だけ自動的にスクロールされます。ま...

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

Reactプロジェクトで画像を導入するいくつかの方法

imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...

Dockerのセキュリティについて Docker-TLS暗号化通信の問題

目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...

VMware および CentOS システムのインストール方法 - ルート パスワードをリセットする

今日のタスク1. Linuxディストリビューションの選択2.vmwareが仮想マシン(centos)...

JavaScript で虫眼鏡の特殊効果を実現

達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...

Nginx リバース プロキシを使い始める

目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...

MySQLアカウントのパスワード変更方法(概要)

序文:データベースを日常的に使用すると、パスワードが単純すぎて変更する必要がある場合、パスワードの有...

Zabbix redis 自動ポート検出スクリプトは json 形式を返します

自動検出を行う際には、ポートなどの情報を取得してjson形式で返すスクリプトが必ず存在します。Red...