サーバ設定の実験用途などで試してみたいこともあり、sppdで新しくVPSを借りました。厳密には、まだ仮登録段階ですけど(^_^;)
ということで、まずは初期設定を。
参考:GMOクラウド VPSを借りてまず行う初期設定内容, ファイアウォール構築(iptables)
大まかな流れはguilz.orgさんを参考に、ntpdくらいは別に良いかなーと思っているので動かしたままにしていますが、やってることはほぼそのままです(^_^;)
事前準備:作業用ユーザの作成など
まずは、作業用のユーザが無いことには始まらないので、その辺りの設定を。
sppdのVPSだと初期設定で作業用のユーザも作ってもらえるのですが(そもそもrootでログイン出来ない)、細かい作業などの利便性を考えると自分用にアカウントを作った方がいいかなと。
passwd
useradd your_logname -G wheel
passwd your_logname
visudo
wheelグループにユーザを追加し、sudoersのwheel設定を開けます。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%wheelの設定がコメントアウトされているので、コメントを外します。
visudo
までで使える様にはなるのですが、ついでにpamの設定も弄っておきます。
@@ -3,7 +3,7 @@
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
-#auth required pam_wheel.so use_uid
+auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
ここで初期設定のアカウントはお役御免になるので、気になる方はpasswd -l default_user
でアカウントをロックしてもいいかもしれません。
最低限のセキュリティ設定
sshdのポート変更
まずは何も考えずにsshdのポート変更をしておきます。
@@ -10,7 +10,7 @@
# possible, but leave them commented. Uncommented options change a
# default value.
-#Port 22
+Port 12345
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
ちなみにPermitRootLoginは最初からnoなので設定はそのまま弄っていません(もしyesだったら変更した方が良いと思っています)。
※ここでは12345番に設定していますが、実際は別の値を使っています
ここでservice sshd restart
して、念のためss -l
とかnetstat -l
とかでLISTENポートの確認をしておきます。
因みにポート番号は適当に変換されて、12345番を使っている場合にはitalk
になります。
$ sudo service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
$ ss -l4
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:italk *:*
$ grep italk /etc/services
italk 12345/tcp # Italk Chat System
italk 12345/udp # Italk Chat System
ポート番号が変わったことの確認を兼ねて、最初に作成したユーザでログインしておきます(見ただけじゃ信用しない派です)。
iptablesでのフィルタリング
iptables関連の設定は、事前に加工したものを適当に転送します。
@@ -31,7 +31,7 @@
iptables -A INPUT -i lo -j ACCEPT
# 内部からのアクセスをすべて許可
-iptables -A INPUT -s $LOCALNET -j ACCEPT
+#iptables -A INPUT -s $LOCALNET -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
@@ -135,7 +135,7 @@
# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ許可
# ※SSHサーバーを公開する場合のみ
-iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
+iptables -A INPUT -p tcp --dport 12345 -j ACCEPT_COUNTRY
# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
# ※外部向けDNSサーバーを運用する場合のみ
ひとまずは$LOCALNETの無効化と、SSH関連のポート変更の追従が必要です。
iplist_check.sh
は、guilz.orgさんに倣って/etc/cron.weekly
に放り込みます。一端全て/root
にファイルを転送してから手動でファイル移動です。
cd /root
chmod 700 *.sh
mv iplist_check.sh /etc/cron.weekly
./iptables.sh
chkconfig iptables on
iptables.sh
実行中にここで失敗すると、最悪いきなりOS再インストールなので、SSH接続切れないように…と祈りながら待ちます。不安になっても決して空Enterとかしないように。最初のユーザ追加をした端末をここで空Enterして落としたのは秘密です。
基本パッケージの更新とサーバ類のインストール
さくらのVPSとかだと初期状態で大丈夫だった気がするのですが、EPELなどが無効になっていたので有効にしつつ、パッケージの更新をします。
参考:【メモ】EPELリポジトリをRed Hat Enterprise Linuxで使うには
$ sudo rpm --nosignature -i http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum -y update
この後、使おうと思っているサーバなどのインストール(必要に応じてrepo追加)も合わせてしていますが、ここでは割愛します。
細かい設定は後追い…ということで(^_^;)