前提
このナレッジが必要なのは、マイニングプール構築の場合だけかもしれない。
通常のサービスであれば、
・ロードバランサを使う
・仮想ルータ的なものを使う
・クラウドサービスで提供されているセキュリティ機能を使う
が王道。
LinuxでNATする理由
coindがportを大量に消費する為。
VPSで提供されているロードバランサはport固定が多いんですよね、、、
拡張性を考えると役不足。
なお、コイン毎にNOMPを個別に建てるなら、ここまで考えなくて良い。
ただワタクシは、ひとつのページで全コインの採掘状況を知りたい(こだわり)
NATルータのセキュリティ方針
Interne側のSSHポートを閉じちゃう
オーナー含めて誰もアクセスできない、これ最強。
そもそも、役割分担としてiptable 管理くらいしかしないはず。
SSHそのものをアンインストールしない理由は、ログの回収やパッチアップデート関連作業のため。これらはプライベートアドレスを持った内部サーバから実施すればよい。
管理用ユーザの作成&sudo権限付与
後述する「rootアカウントでのログイン禁止の為に必要」なので作成。
adduser 管理用ユーザ名
gpasswd -a 管理用ユーザ名 sudo
実施後にログアウトして、管理用ユーザとして再ログイン
/etc/ssh/sshd_config の編集
念の為に設定。
・ポートの変更
・rootアカウントでのログイン禁止
は最低限、実施したい。
testuser@nat:~$ more /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 21 <--ココを「任意の数字」に変更
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin yes <--ココを「no」変更
StrictModes yes
定期的なセキュリティパッチ適応
お忘れなく。
iptablesの設定について (セキュリティ編)
インターネット→プライベート
「DNAT」すればよい。
プライベート→インターネット
「SNAT」すればよい。
「MASQUERADE」のほうがセキュアでは?
coindを利用する際、ポート番号は重要な意味を持つ。
よって、通信ポートを変更してしまう「MASQUERADE」はNGとなる。
総括
セキュリティ方針が決まったので、次回から実装編(の予定)
追記
昔、物理サーバをレンタルしていた時に成功した構成だったので、行けると思っていたのですが、、、
現在、メインで利用しているクラウドVPSがNAT禁止だったため、構築断念。
契約先を見直して、いつか再チャレンジします。