My System
ホストOS
種類:Lubuntu 18.04
目的:暗号化されたファイルをクラウドストレージと同期
主なアプリ:
- VirtualBox 5.1
- Tresorit Business 3.0.526
ゲストOS(1)
種類:Lubuntu 18.04
目的:主にメール処理及び文書作業
主なアプリ:
- FireFox Web Browser
- Iridium Browser
- Tor Browser
- Thunderbird
- Mutt
- Pidgin
- p7zip-full
- vim
- medit
- KeePassX
- CherryTree
- pass
- gnome-screenshot
- typora
- Nethogs
- pwgen
ゲスト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
システム概略図
一般業務のためのシステムの概略は、次の図のとおり。