My System

ホストOS

種類:Lubuntu 18.04

目的:暗号化されたファイルをクラウドストレージと同期

主なアプリ:

    • VirtualBox 5.1
    • Tresorit Business 3.0.526

ゲストOS(1)

種類:Lubuntu 18.04

目的:主にメール処理及び文書作業

主なアプリ:

ゲストOS(2)

種類:Cyborg Hark

目的:特殊業務専用

パケットフィルタリング

UFW を利用して、すべてコネクションを全て Deny に設定する。

  sudo ufw default deny incoming
  sudo ufw default deny outgoing

外部のネームサーバに対するアクセスを許可

  sudo ufw allow out on [NAT_interface] from any port 53 proto udp

外部のWebサーバに対するアクセスを許可 $ sudo ufw allow out on [NAT_interface] from any port 80 proto tcp

  sudo ufw allow out on [NAT_interface] from any port 443 proto tcp

ホストOSのストレージへのアクセスを許可

  sudo ufw allow out out on [Host-only_interface] from [Host-only_ip] to [HOST-OS_ip] port 445 proto tcp

他のゲストOSのNetShare間のアクセスを許可

  sudo ufw allow in on [Host-only_interface] from any to any port 40818 proto tcp
  sudo ufw allow in on [Host-only_interface] from any to any port 40816 proto udp
  sudo ufw allow out on [Host-only_interface] from any to any port 40818 proto tcp
  sudo ufw allow out on [Host-only_interface] from any to any port 40816 proto udp

備忘

CIFS (Common Internet File System)を選択した理由:

    • SMBは下位にNetBIOSインターフェイスを利用しており、実際のトランスポート層としてはNetBEUIやNBT、IPX/SPXを利用しているが、NetBIOSはネットワーク管理の点から見ると、複数のポートを利用し、ルーティングが困難、ブロードキャストが多い、ほかのインターネット・プロトコルと相性が悪いため、セキュリティ管理の都合上望ましくない。
    • そのため、TCP/IPをダイレクトに利用するCIFSを選択した。

EncFsを選択した理由:

    • ファイルシステムが持つ、記憶装置の劣化を検出する機能を利用できる。
    • ファイルサイズの増大、縮小、削除に応じて記憶装置の空きスペースが調整されるので、固定した記憶領域をあらかじめ確保する必要がない。
    • 元のディレクトリの物理的な位置に依存しない。また、元のディレクトリのサブディレクトリもマウントすることが出来る。
    • fsck 等のファイルシステム修復ツールが利用できる。
    • SSD を使用した場合 TRIM が有効に機能する。
    • 暗号化されたファイルと平文ファイルが一対一で対応しているため、rsync による差分バックアップや Dropbox、Google ドライブ等のオンラインストレージとの同期が効率的に行える。

ゲストOS(Lubuntu)の設定

ユーザのパーミッションの厳格化

初期設定のパーミッションが 755 となっているため、ホームディレクトリに対する他のユーザの権限が「読み込み」及び「実行」となっているため、これを回避する必要がある。

  sudo chmod 0750 /home/$USER

sudo sed -i "s/DIR_MODE=0755/DIR_MODE=0750/g" /etc/adduser.conf

SSHサーバの削除

SSHに関する脆弱性が相次いでいることから、利用する必要性の少ないSSHサーバを削除する。

  sudo apt-get remove --purge openssh-server

もし、SSHサーバを利用する場合は、次を設定する必要がある。

  • sshによるログイン許可するadminグループを作成し、そのグループに所属するユーザのみをSSH経由でログイン可能とする。
  sudo addgroup admin
  sudo usermod -a -G admin $USER 
  sudo dpkg-statoverride --update --add root admin 4750 /bin/su
  • rootログインを禁止
  /etc/ssh/sshd_config
  PermitRootLogin no
  • パスワード認証を禁止
  /etc/ssh/sshd_config
  PasswordAuthentication no
  • PAM認証を禁止
  /etc/ssh/sshd_config
  UsePAM no
  • バナーを禁止
  /etc/ssh/sshd_config
  DebianBanner yes
  • ポートの変更
  /etc/ssh/sshd_config
  Port 2222

ファイアウォールの設定

UFW(Uncomplicated Firewall;難しくないファイアウォール)をインストールし、許可されたポート以外全て閉鎖して有効にする。

  sudo apt-get install ufw
  sudo ufw default deny
  sudo ufw enable

設定状況を確認すると、次のようになる。

  sudo ufw status verbose
  Status: active
  Logging: on (low)
  Default: deny (incoming), allow (outgoing), disabled (routed)
  New profiles: skip

カーネルのセキュリティ設定

/etc/sysctl.conf ファイルに、セキュリティを向上させる設定をする。

IP偽装から保護する。

  net.ipv4.conf.all.rp_filter = 1
  net.ipv4.conf.default.rp_filter = 1

ICMPブロードキャストリクエストを無視する。

  net.ipv4.icmp_echo_ignore_broadcasts = 1

ソースパケットルーティングを禁止する。

  net.ipv4.conf.all.accept_source_route = 0
  net.ipv6.conf.all.accept_source_route = 0
  net.ipv4.conf.default.accept_source_route = 0
  net.ipv6.conf.default.accept_source_route = 0

リダイレクト送信を無視する。

  net.ipv4.conf.all.send_redirects = 0
  net.ipv4.conf.default.send_redirects = 0

SYN攻撃をブロックする。

  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_max_syn_backlog = 2048
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 5

Martiansのログを取る。

  net.ipv4.conf.all.log_martians = 1
  net.ipv4.icmp_ignore_bogus_error_responses = 1

ICMPリダイレクトを無視する。

  net.ipv4.conf.all.accept_redirects = 0
  net.ipv6.conf.all.accept_redirects = 0
  net.ipv4.conf.default.accept_redirects = 0
  net.ipv6.conf.default.accept_redirects = 0

直接のpingを無視する。

  net.ipv4.icmp_echo_ignore_all = 1

上記の設定を sysctl へリロードする。

  sudo sysctl -p

IPなりすましの防止

/etc/host.conf に、IPなりまし防止の設定をする。

  /etc/host.conf
  order bind,hosts
  nospoof on

システムセキュリティの監視

Tiger(セキュリティ監視とシステム侵入検出ができるツール)をインストールする。

  sudo apt-get install tiger

このツールを動作させる。

  sudo tiger

システムログファイルの解析

Logwatch(カスタマイズ可能なログ分析システム)をインストールする。

  sudo apt-get install logwatch libdate-manip-perl

このツールを動作させて、出力データを確認する。

  sudo logwatch | less

Rootkitsの検知

RKHunterとCHKRootkitをインストールする。

  sudo apt-get install rkhunter chkrootkit

RKHunterを実行する。

  sudo rkhunter --update
  sudo rkhunter --propupd
  sudo rkhunter --check

chkrootkitを実行する。

  sudo chkrootkit

IP管理ツールの導入

iptablesの補助アプリケーションであるipsetをインストールする。

  sudo apt-get install ipset

I-BlockList の Bluetack LEVEL 1 のリストを導入をするため、(そのリストがネットワークアドレスであることから)TYPE名を hash:netとして 、SET名を LEVEL1を作成する。

  sudo ipset create LEVEL1 hash:net maxelem 262144

このリストは、p2pフォーマットであるため、次のようなスクリプトでipsetにストアする。

  curl -L "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" |
    gunzip |
    cut -d: -f2 |
    grep -E "^[-0-9.]+$" |
    gawk '{print "add LEVEL1 "$1}' |
    sudo ipset restore -exist

作成したLEVEL1 のセットをiptablesに追加

  iptables -I INPUT -m set --match-set LEVEL1 src -j DROP
  iptables -I OUTPUT -m set --match-set LEVEL1 dst -j DROP

定期的なセキュリティ確認作業

システムのルートキットの存在確認

RKHunterの実行

  sudo rkhunter --update
  sudo rkhunter --propupd
  sudo rkhunter --check

CHKRootKitの実行

  sudo chkrootkit

ポートが開いているシステムの確認

TCP及びSYN接続スキャン

  nmap -v -sT localhost
  sudo nmap -v -sS localhost

システムログファイルの解析

過去7日分のLogwatchレポートの出力

  sudo logwatch --output file --filename ./$(date +%Y%m%d)-logwatch --range 'between -7 days and today'

システムのセキュリティ監査

Tigerの実行

  sudo tiger

Blockリストの更新

  curl -L "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" |
    gunzip |
    cut -d: -f2 |
    grep -E "^[-0-9.]+$" |
    gawk '{print "add LEVEL1 "$1}' |
    sudo ipset restore -exist

メモ

vboxadd.serviceの動作エラー

ゲストOSとして新規 Lubuntu 18.04 を導入したところ、次のコマンドで vboxadd.service の動作状況を確認したところ、動作していなかった。

  sudo systemctl status vboxadd-service

FAQ等を調べたところ、build-essential と module-assistant のパッケージが必要であることがわかったので、これらをインストール及び m-a で prepare してた上で、Geusst Addition CD image にある VBoxLinuxAdditions.run を走らせたところ、正常に動作した。

UFWの設定

次のサイトが参考になった。

How to Configure a Firewall with UFW

https://linode.com/docs/security/firewalls/configure-firewall-with-ufw/

PGPキーの完全移行

公開鍵のエクスポート

  gpg -a --export [public.uid] > public.asc

秘密鍵のエクスポート

  gpg -a --export-secret-key [secret.uid] > secret.asc

公開鍵の信用情報エクスポート

  gpg --export-ownertrust > public_trust

公開鍵のインポート

  gpg --import public.asc

秘密鍵のインポート

  gpg --import --allow-secret-key-import secret.asc

公開鍵の信用情報インポート

  gpg --import-ownertrust public_trust

PGPの Master key の確認と削除

GPG2.1以降の場合:

Master key 本体の所在確認

  ls ~/.gnupg/pricate-keys-v1.d/<KEYGRIP>.key

Master key の <KEYGRIP> を確認及び削除して、sec#(使用不可)となることを確認

  gpg -K --with-keygrip

FireFox の Addon

    • Dark Background and Light Text
    • Evernote Web Clipper
    • Google search link fix
    • No Coin - Block miners on the web!
    • Simple Translate
    • uBlock Origin

Iridium Browser の Extention

    • Dark Mode
    • New Tab Redirect
    • uBlock Origin

Iridium Browser の設定

    • Password and forms - Autofill setting - Off
    • Clear browsing data - clear the following items from the beginning of time
    • Content settings - Cookies - Blocked

.bashrc の修正・追加

history の長さの変更

  HISTSIZE=10
  HISTFILESIZE=20

Transfer.sh の利用

transfer.sh へのファイル転送

  transfer() { if [ $# -eq 0 ]; then echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi
tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; }

pbcopy と pbpaste のエイリアス

  alias pbcopy='xclip -selection clipboard'
  alias pbpaste='xclip -selection clipboard -o'

Maltego に必要な Oracle Java

  echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" >> /etc/apt/sources.list
  echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list
  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
  sudo apt-get update
  sudo apt-get install oracle-java8-installer

システム概略図

一般業務のためのシステムの概略は、次の図のとおり。