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 が問題となる理由

推薦する

Centos7 のインストールと Mysql5.7 の設定

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

img タグの src 属性値が空の場合の 2 つのリクエストの問題 (IE 以外のブラウザ)

img src 値が空の場合、リクエストが 2 つ行われます。一部の学生は以前に同様の状況に遭遇した...

SQL 面接の質問: 時間差の合計を求める (重複は無視)

ある会社の BI 職の面接を受けたとき、面接で SQL に関する質問がありました。一見すると非常に簡...

Docker ポート マッピングと外部アクセス不可の問題

Docker コンテナはサービスを提供し、ポート 8888 をリッスンします。外部からアクセスできる...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

Windows での MySQL スケジュールバックアップ スクリプトの実装

Windows サーバーでデータベース データを定期的にバックアップする場合は、Windows タス...

Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

Debian の紹介Debian は、広い意味では、フリーなオペレーティング システムの作成に専念...

Linux または Android でファイル システムを追加する属性インターフェイスを解析する方法

最初のもの: 1. 主要なヘッダーファイルを追加します。 #include <linux/of...

フロントエンドJavaScript ES6の詳細について

目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...

Vueシングルページアプリケーションの事前レンダリング方法の例

目次序文vue-cli 2.0 バージョンvue-cli 3.0 バージョン要約する序文vue-cl...

CocosCreatorがスキル冷却効果を実装

CocosCreatorがスキルCD効果を実現多くのゲームにはスキルがあります。プレイヤーがスキルボ...

Linuxの基本コマンドmktempの詳しい説明

mptemp は安全な方法で一時ファイルまたはディレクトリを作成します。このコマンドの適用範囲: R...

CSS が初期読み込み時の白い画面の時間に与える影響

外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...

開発効率を向上させる 20 の JavaScript ヒント

目次1. 配列を宣言して初期化する2. 合計、最小値、最大値を計算する3. 文字列、数値、オブジェク...