CentOS サーバーのセキュリティ構成戦略

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく使われるセキュリティ対策を整理しました。

最小限の権限 + 最小限のサービス = 最大限のセキュリティ

1. デフォルトの SSH 接続ポート 22 を変更し、ポート手順でファイアウォール Firewalld を追加します。

1) デフォルトの SSH ポートを 22 に変更します。

vi /etc/ssh/sshd_config

這里寫圖片描述

2) ファイアウォールがこのポートを通過できるようにする

firewall-cmd --state [firewalld が実行中かどうか]
ファイアウォール-cmd --permanent --list-port [ポートリストを表示]
ファイアウォール-cmd --permanent --zone=public --add-port=48489/tcp [ポートを追加]
ファイアウォール-cmd --permanent --remove-port=48489/tcp [ポートを削除]

3) SSHサービスを再起動し、現在接続されているSSHポートを終了します。

サービスsshdを再起動

4) 次に、putty ssh接続ソフトウェアを介して接続します。デフォルトのポート22を使用してSSHに入ることはできません。目的を達成すればOKです〜

2. ルートアカウントによる直接ログインを無効にする

Linux のデフォルトの管理者名は root です。SSH に直接ログインするには、ROOT パスワードのみを知っておく必要があります。 SSH からの Root の直接ログインを無効にすると、サーバーのセキュリティが向上します。これは、次の操作を実行することで実現できます。

1) 新しいアカウントを作成し、アカウントのパスワードを設定する

ユーザー追加 ityangs
パスワード

2) ルートが直接ログインできないようにする

vi /etc/ssh/sshd_config

「#PermitRootLogin yes」を見つけて、先頭の「#」を削除し、短い末尾の「Yes」を「No」に変更して、ファイルを保存します。

這里寫圖片描述

systemctl restart sshd.service [ssh を再起動します。再起動する別の方法です]

3) 次回ログイン

まず、新しく作成したアカウント「ityangs」を使用して、通常のユーザーとしてログインします。

ROOT 権限を取得するには、SSH で次のコマンドを実行します。

suルート

上記のコマンドを実行し、root パスワードを入力して root 権限を取得します。

4) WinSCP で su を使用して root に切り替えるためのヒント (root リモート ssh ログインが禁止されている場合)

ルートユーザーのリモートログインは制限されていますが、重要なデータファイルはすべて 700 個あります。さらに悲しいことに、WinSCP はまったく役に立たないのです。ルート アカウントではログインできず、FTP、SFTP、SCP などのプロトコルではログイン後のユーザーの切り替えがサポートされていないためです。
SCP プロトコルでは、ログイン時にシェルを指定できます。デフォルトおよび推奨されるシェルは /bin/bash ですが、これを sudo su などに変更するなど、複雑な操作を行うように変更することもできます。
しかし、新たな問題が発生します。Sudo にはパスワードが必要ですが、WinSCP にはログイン時に対話型プロセスがありません。ただし、ルート権限で visudo を実行し、次の行を追加することで、sudu パスワードをキャンセルできる人が常に存在します。
ユーザー名 ALL=NOPASSWD: ALL
非 Putty 環境で sudo を使用するには、次の行もコメント アウトする必要があります。
デフォルトの要件
その後保存すると、WinSCP にログインするときにルートの喜びを味わうことができます。

ステップ:

一般ユーザーはサーバーにSSHで接続し、ルート権限に切り替える
visudoを実行し、yourusername ALL=NOPASSWD: ALLの行を追加し、Defaults requirettyをコメントアウトします。

[root@iZ252wo3Z ~]# visudo
ityangs ALL=NOPASSWD: ALL
#デフォルトではttyが必要です [利用できない場合は心配しないでください]

WinSCPのファイルプロトコルをSCPに変更する

這里寫圖片描述

環境-SCP/Shellシェルをsudo suに変更します。

這里寫圖片描述

WinSCPにログインするだけです。

3. DenyHostsをインストールする[攻撃IPを傍受し、ブラックリストを生成し、さらなる攻撃を防ぐ]

DenyHosts (プロジェクト ホームページ: http://denyhosts.sourceforge.net/) は、Linux 上で実行され、SSH ブルート フォース クラッキングを防止するソフトウェアです。http://sourceforge.net/projects/denyhosts/files/ からダウンロードでき、ダウンロードした DenyHosts-2.6.tar.gz ソース コード パッケージを Linux システムにアップロードできます。

インストール手順は次のとおりです
****************************************************************
tar zxvf DenyHosts-2.6.tar.gz #ソースパッケージを解凍します
cd DenyHosts-2.6 #インストールおよび解凍ディレクトリに入る
python setup.py install #DenyHosts をインストールする
cd /usr/share/denyhosts/ #デフォルトのインストールパス
cp denyhosts.cfg-dist denyhosts.cfg #denyhosts.cfgは設定ファイルです
cp daemon-control-dist daemon-control #daemon-controlは起動プログラムです
chown root daemon-control #ルート権限を追加する
chmod 700 daemon-control #実行可能ファイルに変更
ln -s /usr/share/denyhosts/daemon-control /etc/init.d #管理を容易にするために daemon-control をソフトリンクします

インストールは完了です。
/etc/init.d/daemon-control start #denyhosts を開始
chkconfig daemon-control on #起動時にdenghostsが起動するように設定する
******************************************************************

vi /usr/share/denyhosts/denyhosts.cfg #設定ファイルを編集します。設定ファイルの一部のパラメータについては、grep -v "^#" denyhosts.cfg で確認してください。
SECURE_LOG = /var/log/secure #ssh ログ ファイル、Redhat シリーズは /var/log/secure ファイルに基づいて判断します。Mandrake および FreeBSD は /var/log/auth.log に基づいて判断します。
#SUSE は /var/log/messages を使用して判断を行いますが、詳細は設定ファイルで説明されています。
HOSTS_DENY = /etc/hosts.deny #ユーザーログインを制御するファイル
PURGE_DENY = 30m # 禁止されたものをクリアするのにどのくらい時間がかかりますか? 30 分に設定します。
# 'm' = 分
# 'h' = 時間
# 'd' = 日数
# 'w' = 週
# 'y' = 年
BLOCK_SERVICE = sshd #禁止されているサービス名。もちろん、DenyHost は SSH サービスにのみ使用されるわけではありません。
DENY_THRESHOLD_INVALID = 1 #無効なユーザーが失敗できる回数
DENY_THRESHOLD_VALID = 3 #通常のユーザーに許可されるログイン失敗回数
DENY_THRESHOLD_ROOT = 3 #許容されるルートログイン失敗回数
DAEMON_LOG = /var/log/denyhosts #デフォルトでDenyHostsログファイルが保存されるパス

DenyHosts のデフォルト設定を変更したら、変更を有効にするために DenyHosts サービスを再起動します。
/etc/init.d/daemon-control restart #denyhostsを再起動

さて、この記事はこれで終わりです。困っている友人はこれを参考にしてください。

以下もご興味があるかもしれません:
  • Centos8 でローカル Web サーバーを構築するための実装手順
  • CentOS 8 に Postfix メール サーバーをインストールして設定する方法
  • Linux および CentOS (サーバー) に zip および unzip コマンド機能をインストールする
  • Centos7サーバーの基本的なセキュリティ設定手順
  • CentOS8.0 で FTP サーバーをインストールして設定する方法
  • CentOS 7.2 は uniapp プロジェクトを展開するための nginx Web サーバーを構築します
  • NodeJsプロジェクトCentOs Linuxサーバーのオンライン展開の詳細な説明
  • CentOS8.1 で Gitlab サーバーを構築するための詳細なチュートリアル

<<:  Mysqlはストアドプロシージャを通じて文字列を配列に分割します

>>:  TypeScript の Enum が問題となる理由

推薦する

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

Vue3+TypeScriptはaxiosをカプセル化し、リクエスト呼び出しを実装します

まさか、2021年になってもTypeScriptについて聞いたことがない人がいるなんて?プロジェクト...

MySQL データベース グループ クエリの group by ステートメントの詳細な説明

1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...

ウェブデザイン研究における XHTML の応用の概要

<br />一般的に、「標準的な Web ページ」のファイル構成は XHTML CSS ...

uniapp プロジェクトの最適化方法と提案

目次1. 複雑なページデータ領域をコンポーネントにカプセル化する2. 大きな画像の使用を避ける3. ...

静的ページと動的ページの実行メカニズムの説明

1. 静的ページとは、Web ページ内に HTML タグのみが含まれるページです。WEB 開発者がこ...

doctype のマークアップ検証

しかし最近、この方法を使用すると問題が発生することがわかりました。コードを参照してください。コードを...

JavaScript ではおそらく switch 文を使う必要はない

目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...

HTML の POST リクエストにおける a タグの 2 つの使用法の分析

HTML POST リクエストで a タグを使用する 2 つの例を次に示します。 1. ajaxを使...

JavaScriptオブジェクトをマージするさまざまな方法の詳細な説明

目次オブジェクトをマージするさまざまな方法(インターフェースを通じてデータを取得し、それをローカル ...

Centos7 環境でソースコードから mysql5.7.16 をインストールする方法の詳細な説明

この記事では、centos7 環境でソース コードから mysql5.7.16 をインストールする方...

コード例を通してページ置換アルゴリズムの原理を理解する

ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...

モバイルページで縦画面を強制する方法

最近、仕事でモバイルページを作成しました。もともと特別なことではありませんでしたが、非常に奇妙に感じ...

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...