UTMを頑張って作る③sslsplitの導入

sslsplitの導入先について

以下2パターンがある。
①pfSense本体に導入する
②別のマシンにsslsplitを導入する

pfSense本体に導入する場合

前準備

コンパイラなどを導入するため、パッケージ導入の制限を解除する。
vi /usr/local/etc/pkg/repos/pfSense.conf
FreeBSD: { enabled: yes }
vi /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: { enabled: yes } ※こっちはyesにする必要ないかも
パッケージを更新して、git gmake gcc libnet などを導入する。
pkg update
pkg install git
pkg install gmake
pkg install gcc
pkg install libnet
sslsplitをgitする。
git clone https://github.com/droe/sslsplit.git

コンパイル・インストール

cd sslsplit
make CC=gcc
make CC=gcc install
※なんかccが見つからないといわれるので、CC=gcc とした

pfSense側でポートフォワードの設定をする。

sslsplitには8443番で通信を待機させる予定なので、
監視対象セグメントから外に出る宛先ポート番号443の通信を、ローカルホストの8443番にリダイレクトさせる。

ProxyARPの設定

ミラーパケットの送信元となるインターフェースに、ミラーパケットを送信したい時があるが、そのままsslplitを起動すると多分エラーが出る。
例えば、以下のような条件でsslsplitを起動すると上手くいかない(lanのIPは192.168.10.1)
-I lan -T 192.168.10.1
pfSenseのProxyARPの設定を用いて、lanの別のIPを設定してやれば、とりあえず動く(理屈はしらないけど動く)
上記ではインターフェースLAN(192.168.10.1)の別IP 192.168.10.254 を設定している。
上記を踏まえて以下条件でsslsplitを起動してやると、たぶんうまくいく。
-I lan -T 192.168.10.254

別のマシンにsslsplitを導入する場合

以下のような構成をイメージ。
(Internet)
       |
[pfSense]---[sslsplit(ubuntu)]
       |
[clientPC]

pfSense側で通信を曲げる設定をする

ルーティングの設定から、ゲートウェイを作成する。


Interfaceはsslsplit(ubuntu)が繋がっているものを選ぶ
Gatewayはsslsplit(ubuntu)のIPアドレスを記載する。

次に、pfSenseのFWルールで以下のようなルールを追加する。
通信元:クライアントがいるセグメント
宛先ポート:今回は443のみにした。
Gateway: 先ほど定義したものを選択する。

[sslsplit(ubuntu)]のIPに変更する

ubuntuにsslsplitをインストールする

sudo apt install sslsplit -y

iptablesの設定

宛先ポート番号443番の通信を、自分自身の8443番宛にリダイレクトさせる
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptablesの設定を保存する
$ sudo netfilter-persistent save

共通の作業

プロキシ用の証明書の導入

pfsense webui > System > Certificate > Add > nameを入力し、必要に応じ設定を変えて(デフォでOK)Save
作成できたら、証明書一覧の右側のアイコンから、ExportCAとExportKeyで証明書をダウンロードする。
ダウンロードした証明書をWinSCPなどを用いてsslspilitのカレントディレクトリにアップロードし、クライアント端末にはxxx.crt を信頼できる証明書にインストールする。

sslsplitの起動

以下のようなコマンドで起動してみる。
sslsplit -k 証明書.key -c 証明書.crt -P -D -I ミラーパケットが出るインターフェース名 -T ミラーパケットの宛先IP -l connections.log autossl 0.0.0.0 待ち受けポート番号
具体的にはこんな感じ。(re1 はLANインターフェースが割り当てられている)
sslsplit -k sslsplit.key -c sslsplit.crt -P -D -I re1 -T 192.168.10.254 -l connections.log autossl 0.0.0.0 8443
あるいは、設定ファイルを作成して読み込んで起動もできる
vi sslsplit_settings.conf
  CAKey /root/sslsplit/sslsplit.key
  CACert /root/sslsplit/sslsplit.crt
  Passthrough yes
  Daemon yes
  MirrorIf re1
  MirrorTarget 192.168.10.254
  ConnectLog connections.log
  Chroot /root
  ProxySpec autossl 0.0.0.0 8443

sslsplit -f ./sslsplit_settings.conf

コメント