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

推薦する

フロントエンドページのスライド検証を実装するための JavaScript + HTML

この記事では、フロントエンドページのスライド検証を実装するためのJavaScript + HTMLの...

子要素の margin-top によって親要素が移動する問題の解決方法

問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...

Docker環境でMySQLを実行し、Binlogを有効にしてマスタースレーブ同期を構成する方法

同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...

CSSアニメーションとSVGを組み合わせてエネルギーの流れの効果を作成する

最終的な効果は次のようになります。アニメーションは2つのステップに分かれていますランニング軌道を開発...

MySQLはイベントを使用してスケジュールされたタスクを完了します

イベントでは、SQL コードを 1 回または一定の間隔で実行することを指定できます。通常、複雑な S...

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

要素テーブルの多層ネスト表示の実践

複数の注文を含むリストが必要です。各注文は一意にすることも、複数の注文を結合することもできます。各注...

HTML の相対パス (Relative Path) と絶対パス (Absolute Path) の詳細な理解

私は 1 年以上 Java Web 開発に携わっており、HTML または JSP ページの作成は避け...

Cronジョブを使用してCpanelでPHPを定期的に実行する方法

cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...

Node.jsはexpress-fileuploadミドルウェアを使用してファイルをアップロードします

目次プロジェクトを初期化するサーバーの作成クライアントを初期化するコンポーネントの記述ファイルアップ...

MySQLインスタンスクラッシュ事例の詳細な分析

[問題の説明]私たちの実稼働環境には、複数の MySQL サーバー (MySQL 5.6.21) の...

MySQLのorder byとlimitを混在させる際の落とし穴の詳細な説明

MySQL では、ソートには order by を、ページングには limit をよく使用します。最...

Vue でメニュー権限制御を実装するためのサンプルコード

バックエンド管理システムで作業している場合、通常、メニュー権限制御に関連する問題に遭遇します。もちろ...

JavaScript配列の一般的なメソッドの概要

目次1. はじめに2. フィルター() 3. マップ() 4. ソート() 5. 減らす() 6. ...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...