8割解けるCTF「WEST-SEC」

セキュリティ初心者の方でも楽しめるゲーム形式のセキュリティイベント

PaloAltoの設定

1.初期設定、設定の確認

(1)PaloAltoへの接続

①CLIでの接続
SSHで接続してください。
設定は以下にも記載があります。
https://pansetech.net/initial-config/
以下のように、ログイン後は > が表示されていると思います。

admin@PA-VM>

configure で設定モード(Configuration mode)に遷移できますが、pingやSSHをするだけであればその必要はありません。

ア)SSH接続
必要に応じて、PaloAltoからLANセグメントにあるサーバにSSH接続します。以下は、SSH接続先のサーバのIPアドレスが172.16.2.101で、その際のアカウントがpalo_srvの場合です。

admin@PA-VM>ssh host palo_srv@172.16.2.101

この後、パスワードが聞かれるので、正しい情報を入れるとSSH接続によるログインができます。

イ)ping
以下は、172.16.2.101にping接続した際の設定です。

admin@PA-VM> ping host 172.16.2.101
PING 172.16.2.101 (172.16.2.101) 56(84) bytes of data.
64 bytes from 172.16.2.101: icmp_seq=1 ttl=127 time=0.365 ms
64 bytes from 172.16.2.101: icmp_seq=2 ttl=127 time=0.326 ms

ウ)時刻設定
デフォルトだとタイムゾーンがずれているので、設定変更する。

admin@PA-VM> configure
admin@PA-VM# set deviceconfig system timezone Japan
admin@PA-VM# commit

時刻の確認

admin@PA-VM# exit
Exiting configuration mode
admin@PA-VM> show clock
Wed May 10 21:20:38 JST 2023

②GUIでの接続
MGTポートに対して、httpsで接続する。
https://(IPアドレス)

右下から言語を日本語に変更します。

(2)設定の反映

右上にあるcommitボタンを押して、設定を確定をする必要があります。

(3)設定の確認

・現在のファームウェアのバージョン確認
DEVICE>Software 左下のCheck Nowを押して情報を更新します。
CURRENTLY INSTALLEDにチェックが入っているのが現在のバージョンです。
https://pansetech.net/initial-config/#toc12

2.構成の簡単な説明

(1)今回の構成
項番 ポート(ゾーン) IPアドレス 補足
MGT 172.16.1.99/24 SSHやGUIで設定用に接続するポート
WAN 172.16.0.99/24 インターネットに接続
LAN 172.16.2.99/24 LANセグメントで、172.16.2.101のIPアドレスを持つ端末(サーバ)がある。

LANセグメントの端末に接続するには、Paloのポリシーで外部からのMIPの設定をするか、PaloにSSHで接続し、Paloを踏み台としてSSHでこの端末に接続する。

(2)ゾーンの確認

ゾーンは、インターフェースをグループ化するものと考えればいいでしょう。
一般的にはUntrust(=WAN)とTrust(=LAN)のゾーンに分けるでしょう。+DMZなどのいくつかのゾーンが想定されます。
https://pansetech.net/network-config/
ポリシーの設定にもよりますが、一般的には同じゾーン内ではポリシーを許可し、異なるゾーンの場合にポリシー制御をします。
設定は、NETWORK > Zone から行います。タイプは「レイヤ3」が一般的でしょう。

(3)インターフェースの確認

NETWORK > Interfaces から設定および確認をする
ethernet1/1がWANに、ethernet1/2がLANに割り当てられていることが確認できると思います。AWSの場合、固定ではなくDHCPでIPアドレスが割り当てられるので、「IP ADDRESS」の欄は「Dynamic-DHCP Client」です。
設定方法は以下を参照。
https://pansetech.net/network-config/#toc2

(4)ルーティングの確認

NETWORK > 仮想ルータ から設定および確認をする
仮想とあるが、通常のルーティングを設定すると考えればいい。VRFみたいに複数のルーティングテーブルを管理できるという意味で、仮想とついてる。
https://pansetech.net/network-config/#toc3

3.NATの設定

(1)NAPTの設定

インターネットに出るには、プライベートIPアドレスとグローバルIPアドレスのNAPTが必要である。
POLICIES > NAT から設定および確認をする
NATの設定は以下を参照
https://pansetech.net/network-config/#toc4

AWSで設定したときは、「元パケット」のDestinatin Interfaceは「ehternet1/1(つまりWAN)」を指定したが、「any」のままでいい。
変換済パケットで、IPアドレスは「none」のまま。これはAWSの場合は自動でIPが割り当てられるため。

このNAT設定は、ポリシーごとに設定する必要はない。

(2)公開サーバの設定

https://pansetech.net/1to1nat/

4.ポリシー設定

POLICIES > Security から設定および確認をする。

(1)デフォルトポリシー

デフォルトでは、以下のポリシーが設定されている。消すことはできない。

NAME ACTION 説明
intrazone-default Allow 同じゾーン内の通信を許可する。IFが違っても、同じゾーンに設定すれば許可される。
interzone-default Deny 異なるゾーン間の通信を拒否する

以下にも記載されています。
https://pansetech.net/zone-type/#toc2

(2)内部LANのPC(サーバ)からインターネット接続のポリシーを作る

ポート番号80番で指定するなど、いくつかのやり方がある。
お勧めの方法は、アプリケーションをanyにしてサービスをservice-httpと service-httpsにすること。
ポリシー設定は、以下。
https://hirotanoblog.com/paloalto-basic-config/3980/#toc7
アクションで、AllowやDenyの設定とともに、ログの設定ができる。
ログに関しては別途。

Q.このとき、1000番ポートを使った正常なHTTP通信が来たら、PaloAltoとしては許可するのか?

A.拒否する。
application-defaultは、標準ポート(HTTPの場合は80)のみ許可し、それ以外は拒否するため。

Q2.では、1000番ポートを使ったHTTP通信を許可するには?

A.アプリケーションとして、web-browsingを許可し、サービスをAnyまたは1000番ポートを許可する。

さて、ポリシーの通信テストとしては、LANのPC(172.16.2.101)から、たとえば、以下を実行する。

#curl コマンドを使い、-IオプションでHeadだけを取得する。
curl -I https://west-sec.com
(3)内部LANのPC(サーバ)から外部へのping

アプリケーションをping にして、service をapplication-defaultにする。

(4)内部LANのPC(サーバ)から外部へのDNS

アプリケーションをdnsにしてサービスをapplication-defaultにする。他には、udp/53を明示的に許可する方法もある。

通信テストとしては、たとえば、以下

#digコマンドを使い、応答があるかをテストする。
$ dig www.yahoo.co.jp

; <<>> DiG 9.16.38-RH <<>> www.yahoo.co.jp
;; global options: +cmd
;; Got answer:

5.セキュリティ設定

以下に詳しい説明があります。

https://pansetech.net/content-id/#toc2
前提として、最近の攻撃はHTTPSで行われるので、SSL復号が必要。DNSやSNI情報などで、FQDNベースでのURLフィルタは可能であろう。

(1)セキュリティプロファイル

・OBJECTS > Security Profiles > Antivirus で、defaultの設定が確認できる。新規にプロファイルを作成することも可能。
・「事前定義済み」を活用するのも有効。ただ、これは変更ができないので、コピーして利用するといい。
・「追加」、または「コピー」ボタンで作成する。
・セキュリティポリシーのルールに、プロファイルを割り当てる。具体的には、「セキュリティポリシールール」にて、AVやIPSなどのそれぞれで、プロファイルを割り当てる。
・セキュリティプロファイルが複数になると設定が複雑になるので、セキュリティプロファイルグループとしてグループ化しておくと便利。

(2)IPS/脆弱性防御

・シグネチャは毎週更新される
・誤検知の可能性もあるので、アクションとして、デフォルト、許可、Alert ドロップ、クライアントのリセット、サーバのリセット、両方のリエット、ブロックIPがある。
・デフォルトは、5段階の重大度(critical,high,medium,low,information)に応じて、PaloAltoがドロップやAlertなどを設定する。
・ブロックIPは、送信元と宛先IPの組み合わせで、一定時間(調整可能)をブロックする。
・シグネチャ単位で、個別の脅威に対して例外設定もできる。
・アドバンスドThreat Prevention。クラウドと連携して、脅威防御を高める。内容としては、C&Cサーバ通信の防御などが強化されている。設定は、インラインクラウド解析タブで設定する。

(3)アンチウイルス(AntiVirus)

・メールの添付ファイルやダウンロードするファイルなど、「ファイル」を検査する。「通信」を検査するIPSとの大きな違いがここ。
・WildFireは、ファイルとメール本文のURLリンクを検査する。
・WileFireにUploadするのを情報漏えいの観点から嫌がるパターンもある。外から中、中から外など
・実行型ファイルのみであれば、無償ライセンスであっても検査のみはできる。(ブロックはしてくれない)

(4)AntiVirusやURLフィルタリングの設定方法

たとえばAntiVirusやURLフィルタリングを設定する。
①ポリシー一覧から
その方法は、ポリシーにおいて、Profileから設定する。
Profilesのポップアップが出るので、AntivirusのプロファイルやURL Filteringのプロファイルを選択する。
とりあえず、defalutでもいいと思います。

②ポリシーの詳細から
ActionsのProfile Settingからプロファイルを選択します。

③通信テスト
たとえば、以下のように、eicarファイルを取得する。

curl -O http://ctf.liblo.jp/eicar_com.zip
(5)URLフィルタリング

・設定は、セキュリティプロファイルのURLフィルタリングから
・プロファイルを作成しよう
・アクション
 Allow(許可/ログ無)、Alert、Block(ブロック)、Continue(警告表示し、アクセス禁止)、override(警告し、パスワード入力でアクセス許可)
・URLフィルタリングの設定
 コンテナページのみロギングをチェック(デフォルト)があると、ログが多すぎることが無いのでいいだろう。
・ログの見方。ACCでは、デフォルトでURLフィルタのタブが無いので、上記の+からタブを増やしておくといいだろう。または、Moniterから確認する。

(6)DNSセキュリティ

・単にFQDNによるフィルタリングだけではなく、DNSトンネリングなど、DNSを使った攻撃も防げる
・DoH(DNS over HTTPS)やDoT(DNS over TLS)によって、SNIによるURLフィルタリングができなくなります。TLS1.3によるハンドシェークが最初から暗号化されるため。
→DoHやDoTをさせな設定(フィルタリングでブロック)をすることも選択肢。
・URLフィルタリングとDNSセキュリティのどちらかでいいのでは?
 →両方いれるのがセキュリティには望ましいが・・・
 DNSセキュリティならではというと、HTTP以外によるC2Cサーバへの通信もブロックできる。※もともと、FWポリシーで止めている可能性もあるけど。
 DNSセキュリティは、あくまでもFQDNまでなので、URLフィルタに劣ると思う。

(7)アンチスパイウェア

・従来のアンチスパイウェア対策とは異なる。スパイウェアもウイルスの一種なのであるが、マルウェア感染後の、C&Cサーバなどへの通信を検知する。

6.ログの取得と確認

ACCのタブで、概要を確認できる。GUIなで見えるので全体像を確認しやすい。
ネットワークアクティビティや脅威アクティビティなどのタブで切り替える。

(1)ログ取得の設定

ポリシーで設定する。デフォルトでは、Log at Session Endのログを取る。これだとセッションテーブルが消えるまで表示されるまで、ログがあがってこない。
そこで、LogSettingでLog at Session Startにすると、開始時に見える。だが、開始時だけなので、取得できるログが少ない。
リアルタイムで見るには、MONITOR>Sesssion Browser みることができる。

(2)通信ログの確認

MONITOR > Logs > Traffic

(3)セキュリティログの確認

・MONITOR > Logs > Threatに検知したログが表示される。
・詳細を確認するには、クリックではない。クリックすると、フィルタの条件に追加されるだけ。マウスを合わせて、例外という操作で確認ができる。ここで、特定のIPだけこのシグネチャを除外したいなどもできる。または、先頭にある虫眼鏡マークをクリックする。