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

推薦する

実際のプロジェクトでElementUIを使用する手順の詳細な説明

目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...

LinuxでHomebrewを使用する正しい方法

多くの人が Linux Homebrew を使用しています。これをより良く使用するための 3 つのヒ...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

MySQL 5.7.21 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

Zabbix パスワードをリセットする方法 (ワンステップ)

問題の説明長い間アカウントパスワードを入力して Zabbix にログインしていないため、管理者パスワ...

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何かロジックの再利用簡単に言えば、カスタム フックを使用すると、特定のコンポ...

LinuxカーネルとSVNバージョン間の競合の解決策

現象システムは Linux システムカーネルを正常にコンパイルできましたが、SVN をインストールし...

CentOS に MySQL をインストールしてリモート アクセスを設定する方法

1. MySQLリポジトリソースをダウンロードする$ wget http://repo.mysql....

Vueはリストのシームレスなスクロールを実装します

この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...

MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行...

Vue+Elementバックグラウンド管理フレームワークの統合実践

目次Vue+ElementUI バックグラウンド管理フレームワークでは、ElementUI とは何で...

ミニプログラムはミニプログラムクラウドを使用してWeChatの支払い機能を実装します

目次1. WeChat Payを開く1.1 アフィリエイト加盟店番号1.2 加盟店番号を追加する1....

Vue.jsはシンプルな折りたたみパネルを実装します

この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...

Linux で Spring Boot プロジェクトを開始および停止するためのスクリプトの例

Springboot プロジェクトを開始するには、次の 3 つの方法があります。 1. メインメソッ...