要塞マシンの紹介
要塞マシンとは
要塞マシン、つまり特定のネットワーク環境では、外部および内部のユーザーの攻撃や破壊からネットワークとデータを保護するために、さまざまな技術的手段を使用して、ネットワーク環境の各コンポーネントをリアルタイムで収集および監視します。ステータス、セキュリティインシデント、および責任の集中アラーム、タイムリーな処理、および監査のためのネットワークアクティビティ。
機能面では、コアシステムの運用・保守とセキュリティ監査の管理・制御の2つの主要機能を統合し、技術的実現では、端末コンピュータのネットワークやサーバーリソースへの直接アクセスを遮断することで、プロトコルプロキシ方式を採用しています。引き継ぐために。ネットワークとサーバーへの端末コンピュータのアクセス。鮮明に言えば、端末コンピュータのターゲットへのアクセスには、運用および保守のセキュリティ監査後に変換が必要です。たとえば、運用および保守のセキュリティ監査はゲートキーパーとして機能し、ネットワークデバイスおよびサーバーへのすべての要求はこのゲートを通過します。したがって、運用および保守のセキュリティ監査は、不正アクセスおよび悪意のある***を傍受し、不正コマンドをブロックし、ターゲットデバイスへのすべての不正アクセスを除外し、内部担当者の誤操作および不正操作を監査および監視して、後で責任を追跡することができます。 。
バスティオンマシンをスプリングボードマシンとも呼びます。シンプルなスプリングボードマシンはシンプルな機能を備えています。コア機能はサーバーへのリモートログインとログ監査ですが、バスティオンマシンには資産管理(CMDB)、監視などの機能もあります。およびユーザー権限。現在、最も優れたオープンソースソフトウェアには、Jumpserver、Teleport、GateOne、CrazyEyeなどがあります。Qizhi、Citrix XenAppなどの商用要塞マシンは、より強力です。
シンプルな要塞マシンを構築する
次に、単純な要塞マシンを構築しようとします。主な機能は、内部ネットワークサーバーにログインして監査をログに記録することです。
要塞マシンを構築するための条件は、マシンにパブリックネットワークIPと内部ネットワークIPがあり、内部ネットワークが他のマシンと通信していることです。
要塞マシンを設計するためのアイデア:
マシンのセキュリティ制限を実行します:ポート制限、ログイン制限(SSH)、ユーザーおよびコマンド制限。
クライアントログ監査。
chrootを実現するには、jailkitをダウンロードしてインストールします。
Jailkitダウンロードリンク:https://olivier.sessink.nl/jailkit/
[root @ jinkai02〜] #cd / usr / local / src /
[root @ jinkai02 src] #wget https://olivier.sessink.nl/jailkit/jailkit-2.21.tar.bz2
[root @ jinkai02 src] #yum install -y bzip2
[root @ jinkai02 src] #tar jvxf jailkit-2.21.tar.bz2
[root @ jinkai02 src] #cd jailkit-2.21
[root @ jinkai02 jailkit-2.21]#。/ configure
[root @ jinkai02 jailkit-2.21] #make && make install
仮想システムのルートディレクトリを作成します。
[root @ jinkai02 jailkit-2.21] #mkdir / home / jail
シェル関連のコマンド、ライブラリファイル
[root @ jinkai02 jail] #jk_init -v -j / home / jail / basicshel
viやvimなどのエディター
[root @ jinkai02 jail] #jk_init -v -j / home / jail /編集者
ネットワーク関連
[root @ jinkai02 jail] #jk_init -v -j / home / jail / netutils
SSHログイン関連、これらの手順は一般的なコマンドを/ home / jailにコピーすることです
[root @ jinkai02 jail] #jk_init -v -j / home / jail / ssh
テストユーザーを追加します。
[root @ jinkai02 jail] #mkdir / home / jail / usr / sbin
[root @ jinkai02 jail] #cp / usr / sbin / jk_lsh / home / jail / usr / sbin / jk_lsh //仮想システムシェルをコピー
[root @ jinkai02 jail] #useradd zhangsan
[root @ jinkai02刑務所] #passwd zhangsan
ユーザーzhangsanのパスワードを変更します。
新しいパスワード:
無効なパスワード:パスワードは辞書チェックに合格しませんでした-辞書の単語に基づいています
新しいパスワードを再入力します。
passwd:すべての認証トークンが正常に更新されました。
[root @ jinkai02 jail] #jk_jailuser -m -j / home / jail zhangsan
//仮想システムにユーザーを作成します
[root @ jinkai02 jail] #cat etc / passwd
root:x:0:0:root:/ root:/ bin / bash
zhangsan:x:1000:1000 :: / home / zhangsan:/ usr / sbin / jk_lsh
zhangsanの行の/ usr / sbin / jk_lshを/ bin / bashに変更して、仮想システムユーザーにログインします。
[root @ jinkai02 jail] #vim etc / passwd
xshellを使用して仮想ユーザーにログインします。
警告!リモートSSHサーバーがX11転送要求を拒否しました。
最終ログイン:192.168.111.1から2020年12月26日土曜日16:56:49
bash:/ usr / bin / id:そのようなファイルやディレクトリはありません
bash:/ usr / bin / id:そのようなファイルやディレクトリはありません
[zhangsan @ jinkai02〜] $
ログインに成功したら、確認しましょう
[zhangsan @ jinkai02〜] $ ll /
bash:ll:コマンドが見つかりません
[zhangsan @ jinkai02〜] $ ls -l /
合計0
lrwxrwxrwx。1ルートルート712月2608:43 bin-> usr / bin
drwxr-xr-x。2ルートルート44Dec 26 08:43 dev
drwxr-xr-x。2ルートルート240Dec 2608:50など
drwxr-xr-x。3ルートルート22Dec 2608:46ホーム
lrwxrwxrwx。1ルートルート9Dec 26 08:43 lib64-> usr / lib64
drwxr-xr-x。7ルートルート70Dec 26 08:45 usr
[zhangsan @ jinkai02〜] $タブキーを2回押します
116の可能性をすべて表示しますか?(yまたはn)
!cd do fgrep let readarray ssh unalias
./ chmod done fi ln readonly suspend unset
:ローカルリターン同期のコマンドエコー
[compgen egrep function logout rm tar vi
[[complete elif getopts ls rmdir test vim
]] compopt else grep mapfile rsync then wait
エイリアス続行有効化gunzipmkdir scp time wget
bash coproc esac gzip mktemp sed times while
bg cp eval hash more select touch zcat
bind cpio exec help mv set trap {
休憩日終了履歴popdsh true}
printfシフトタイプの場合は組み込みのddエクスポート
発信者はプッシュされたshoptタイプセットでfalseを宣言します
case dirs fc jobs pwd sleep ulimit
cat disown fg kill read source umask
これらは、仮想ユーザーが実行できるコマンドです。
SSHログインを制限する:
vim / etc / ssh / sshd_config
PasswordAuthentication no yesがnoに変更され、パスワードログインは許可されません
ファイアウォールルールを追加します。
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
制限付きログインIP:
vim /etc/hosts.allow
sshd:192.168.111.0/24 1.1.1.1 2.2.2.2
vim /etc/hosts.deny
sshd:すべて
上記で許可されているものはログインできますが、他のすべてはログインできません
次に、ログ監査機能を実行する必要があります。この手順では、ログインしているすべてのマシンで操作する必要があります。
ここでは、jinkai01を踏み台として、jinkai01をクライアントとして使用し、jinkai01を操作しています。
[root @ jinkai01〜] #vim /etc/hosts.allow
sshd:192.168.100.137
[root @ jinkai01〜] #vim /etc/hosts.deny
sshd:ALL
このとき、xshellを使用してjinkai01ウィンドウを再度開き、ログインできないことがわかりました。
[root @ jinkai01〜] #mkdir / usr / local / records
[root @ jinkai01〜] #chmod 777!$
chmod 777 / usr / local / records
[root @ jinkai01〜] #chmod + t!$
chmod + t / usr / local / records
[root @ jinkai01〜] #vim / etc / profile
以下を追加します
if [!-d / usr / local / records / $ {LOGNAME}]
その後
mkdir -p / usr / local / records / $ {LOGNAME}#ログイン名に従って同じ名前のサブフォルダーを作成します
chmod 300 / usr / local / records / $ {LOGNAME}#Grant300パーミッション
されます
export HISTORY_FILE = "/ usr / local / records / $ {LOGNAME} / bash_history"#コマンド履歴を記録するファイルを指定します
export PROMPT_COMMAND = '{date "+%Y-%m-%d%T ##### $(who am i | awk" {print \ $ 1 \ "\" \ $ 2 \ "\" \ $ 5} ") #### $(history 1 | {read x cmd; echo "$ cmd";}) ";} >> $ HISTORY_FILE '#特定のレコードコマンド履歴形式
次に、xshellを使用してこのマシンに接続します。上記はログインできないように制限されており、スプリングボードSSHリモートログインを使用できます。
[root @ jinkai02 jail] #ssh 192.168.111.136
[email protected]のパスワード:
最終ログイン:2020年12月26日土曜日17:27:45から192.168.111.137
[root @ jinkai01〜] #ls / usr / local / records /
root // rootログインユーザー用のフォルダが生成されました
[root @ jinkai01〜] #ls / usr / local / records / root /
bash_history
[root @ jinkai01〜] #cat / usr / local / records / root / bash_history
2020-12-26 22:18:34 ##### root pts / 1(192.168.111.137)#### ls / usr / local / records /
2020-12-26 22:18:47 ##### root pts / 1(192.168.111.137)#### ls / usr / local / records / root /
すべてのリモート操作はファイルに記録されます
2020-12-26 22:20:32 ##### root pts / 1(192.168.111.137)#### w
2020-12-26 22:22:57 #####ルートポイント/1(192.168.111.137)#### ls
2020-12-26 22:23:04 ##### root pts / 1(192.168.111.137)#### cat / etc / passwd
jinkai01で通常のユーザーを作成します
[root @ jinkai01〜] #useradd admin
[root @ jinkai01〜] #passwd admin
ユーザーadminのパスワードを変更します。
新しいパスワード:
無効なパスワード:パスワードの一部にユーザー名が含まれています
新しいパスワードを再入力します。
passwd:すべての認証トークンが正常に更新されました。
[root @ jinkai01〜]#
踏み台マシンjinkai02に管理者としてログインします
[root @ jinkai02 jail] #ssh [email protected]
[email protected]のパスワード:
[admin @ jinkai01〜] $ ls
[admin @ jinkai01〜] $ w
22:26:19アップ5:20、2ユーザー、負荷平均:0.00、0.01、0.05
LOGIN @ IDLE JCPUPCPUからのユーザーTTY
root pts / 0 192.168.111.1 17:07 1:39 0.06s 0.04s bash
admin pts / 1 192.168.111.137 22:26 3.00s 0.00s 0.00sw
[admin @ jinkai01〜] $ ls -l / usr / local / records / admin /
ls:ディレクトリ/ usr / local / records / admin /を開くことができません:権限が不十分です
上記でファイルの300権限が設定されており、ファイルを読み取ることができません
jinkai01に戻って履歴を見る
[root @ jinkai01〜] #cat / usr / local / records / admin / bash_history
2020-12-26 22:26:06 ##### admin pts / 1(192.168.111.137)####
2020-12-26 22:26:17 ##### admin pts / 1(192.168.111.137)#### ls
2020-12-26 22:26:19 ##### admin pts / 1(192.168.111.137)#### w
2020-12-26 22:27:17 ##### admin pts / 1(192.168.111.137)#### ls -l / usr / local / records / admin /
2020-12-26 22:29:30 ##### admin pts / 1(192.168.111.137)#### cat / usr / local / records / admin /
ここでは、要塞マシンの機能を簡単に実現できますが、この方法は不完全であり、クラックされる可能性があります。より完全な要塞マシン機能を実現したい場合でも、いくつかの特別なツールまたはソフトウェアが必要です。