flaskで作成したアプリをデプロイするときの、私が行うサーバ(conoha + centos7.1)の初期設定方法について書いていきます。
VPC起動
サーバとしてconohaのVPSを使います。
conohaのコンソール画面からVPSを起動します。
今回はcentos7.1で作成しました。
VPSが作成されたら ip を確認しておきます。
ユーザーの作成
まず、rootでssh接続して作業用のユーザーを作成します。
$ ssh root@<ipアドレス> -p 22
# pass入力
$ adduser develop
$ passwd develop
# pass入力
$ gpasswd -a develop wheel # developをwheelに追加
# suでdevelopユーザーに変更できるか確認
# developユーザーでsudoできるか確認
$ su develop
# pass入力
$ sudo echo 'aaa'
aaa
ここからはdevelopユーザーで設定を行なっていきます。
sshの設定見直し
セキュリテイ的にssh接続のみ許可するように変更します。
$ sudo vi /etc/ssh/sshd_config
# 以下を設定
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
$ sudo systemctl restart sshd
# sshの設定
$ cd ~/
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh/
$ ssh-keygen -t rsa -b 2048
Enter file in which to save the key (/home/develop/.ssh/id_rsa): <生成されるキーのファイル名> #今回はconoha
Enter passphrase (empty for no passphrase): <pass入力> # なんでも
Enter same passphrase again: <もう一度pass入力>
# AuthorizedKeysFileで設定したファイル名に公開鍵の名前変更
$ mv conoha.pub authorized_keys
$ chmod 600 authorized_keys
# ローカルPCに秘密鍵をコピー
$ cat conoha
# 出てきた内容をコピーする
ローカルPCでの作業に移ります。
$ cd ~/.ssh
$ vi conoha # 先ほどのキーの中身をコピー
$ chmod 600 conoha
# ssh_configを編集
$ vi config
Host conoha
HostName <ipアドレス>
User develop
Port 22
IdentityFile ~/.ssh/conoha
# sshの設定が完了したら一旦接続できるか確認をします。
$ ssh conoha
# pass入力
# 入れたらok
再びサーバーに戻ります。
$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no # rootへのssh接続禁止
PasswordAuthentication no # パスワード入力によるログイン禁止
$ sudo systemctl restart sshd
ローカルのPCからsshでrootとパスワードログインできないことを確認します。
$ ssh root@<ipアドレス> -p 22
$ ssh develop@<ipアドレス> -p 22
iptables設定
iptablesを設定していきます。
centos7のfirewall使ってもいいと思うのですが、不慣れなので参考にした資料にあるようにiptablesをインストールしてそちらを使います。
$ sudo yum install iptables-services
/etc/sysconfig/iptables
を編集します。
僕の場合は下記のように編集してみました。
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8022 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
ブラウザでアクセスできるように、80を解放しました。
また、sshの接続先のポートを22から変更しています。今回は8022にしました。
というのも、22へのウイルスの攻撃が多いからです。22ポートを開いて数分でどこからともなくアクセスが来ます。
基本的なセキュリティ対策を行なっていれば問題はないですが、私の場合は念のため8022など別のポートに変えています。
それに伴いshhで使うポートの設定を変更します。
$ sudo vi /etc/ssh/sshd_config
Port 8022
$ sudo systemctl restart iptables
$ sudo systemctl restart sshd
ローカルに戻ってssh/config
のPort
を編集して8022にします。
再起動しても問題ないように、iptablesを自動起動の設定に追加します。
このときiptablesを使っているのでfirewallを切り、自動起動も切ります。
$ sudo systemctl stop firewalld
$ sudo systemctl mask firewalld
$ sudo systemctl enable iptables
$ systemctl list-unit-files --type=service
# iptabelsがenableになっているか確認
ただ、僕がわからないのでiptables使っていますが、友人曰くcentos7系ならfirewalldを使った方が今後はいいよと言われました。
別の機会に設定方法を勉強してみたいと思います。
基本的な設定はこれで以上です。
ここから各種ソフトのインストールや設定をdevelop
ユーザーで行なっていきます。