Squidを使ったHTTPS復号プロキシの構築+Splunkでのログ取り込み
CentOS7上にSSL Bump機能を持つSquidProxyサーバの構築+Splunkでのログ取り込みの手順メモ
CentOS 7のインストール
CentOS7を最小インストールする
パッケージのアップデートを行う
yum update
GUIで操作できるよう、パッケージをインストールする。
yum -y groupinstall "GNOME Desktop"
GUIで起動するように設定し、再起動する。
systemctl set-default graphical.target
reboot
CentOS7を選んだ理由として、Squidのオプションに以下2つがデフォルトで入っているため
・ --with-openssl
・ --enable-ssl-crtd
Squidのインストール
Squidのインストール
yum install squid
自己証明書を作成する
cd /etc/pki/CA/private
openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -keyout oreoreCA.pem -out oreoreCA.pem
ブラウザにインポートするための証明書を作成する。
openssl x509 -in oreoreCA.pem -outform DER -out oreoreCA.der
証明書データベース用ディレクトリを作成し、データベースを初期化する
/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db
所有者をsquidユーザに変更
chown -R squid:squid /var/lib/ssl_db
SELINUXコンテキストの変更
chcon -R -t squid_cache_t /var/lib/ssl_db
Squidの設定を変更する。
vi /etc/squid/squid.conf
Recommended minimum configuration:の下に以下を記載する。
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/pki/CA/private/oreoreCA.pem always_direct allow all ssl_bump client-first all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER cache_dir aufs /var/spool/squid 100 16 256 logformat elff %{%Y-%m-%d}tg %{%H:%M:%S}tg.%03tu %tr %>a %[un - - - - "%{Referer}>h" %03>Hs %Ss %rm %mt %>rs %>rd %>rP %>ru - - "%{User-Agent}>h" %<la %<st %>st - %>p %Sh %<a "%{Cookie}>h" access_log /var/log/squid/access_elff.log elff
8. ブラウザにプロキシ設定を行う。
プロキシサーバを127.0.0.1:3128に設定する。
oreoreCA.derを認証局証明書に追加する。
SplunkでSquidログの取り込み設定
splunk のインストール
rpm -ivh <splunk_package_name>.rpm
/opt/splunk/etc/apps/search/local/以下のファイルに追記する。
inputs.conf
[monitor:///var/log/squid] disabled = false index = proxy whitelist = access_elff* sourcetype = squid_elff
props.conf
[squid_elff] SHOULD_LINEMERGE=true NO_BINARY_CHECK=true CHARSET=UTF-8 disabled=false KV_MODE = none TZ=UTC REPORT-squid_elff = squid_elff
transforms.conf
[squid_elff] REGEX = ^([^ ]+\s[^ ]+)\s+(?<duration>\d+)\s+(?<src_ip>[^\s]+)\s+(?<user>[^\s]+)\s+(-)\s+(-)\s+(-)\s+(?<category>[^\s]+)\s+"(?<http_referrer>[^\s]+)"\s+(?<status>\d+)\s+(?<vendor_action>[^\s]+)\s+(?<http_method>[^\s]+)\s+(?<http_content_type>[^\s]+)\s+([^\s]+)\s+(?<url_host>[^\s]+)\s+(?<dest_port>[^\s]+)\s+(?<url>(\w+://)?[a-zA-Z0-9\-.:]+(?<uri_path>[^\s\?"]+)(?<uri_query>\??[^\s"]*))\s+([^\s]+)\s+([^\s]+)\s+"(?<http_user_agent>.*)"\s+([^\s]+)\s+(?<bytes_in>\d+)\s+(?<bytes_out>\d+)\s+([^\s]+)\s+(?<src_port>\d+)\s+(?<dest_status>[^\s]+)\s+(?<dest_ip>[^\s]+)\s+"(?<cookie>.*)"