VPSの設定突入!
キリのないDjangoでの開発を一旦やめて、
本番サーバの契約を行いました。
サーバの設定を行なっておりますが、
納得のいかない状況だと再インストールを繰り返しているので、
お約束作業のメモです。
サーバ仕様
CentOS7.3
再インストール前にSSHキー認証を設定していた場合
# ssh-keygen -R (IP-addres)
SSHでログイン
root@(IP-Address)
yumのアップデート
# yum update
日本語化
# yum -y install ibus-kkc vlgothic-*
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf
# echo $LANG
「ja_JP.UTF-8」と出ればOK
(参考サイト)
本来は最初にSSH関連を行いますが、よくハマるポイントを先に行います。
なぜって・・・ダメな時はOSの再インストールするからですよw
Python3.6のインストール
こいつが意外と厄介
デフォルトでpython2.7系列が入ってますが、
python3系をエイリアス化すると、yumが全く使えなくなります。
少々不便でも、python3と打つようにしておきます。
こいつを先に持ってきたのも、よくしくじって訳のわからんことになり再インストールすることになるからですw
日本語化より先にやってもいいような気がしますが、見慣れた文字で流れる画面を見たいので・・・。
# yum install https://centos7.iuscommunity.org/ius-release.rpm
# vi /etc/yum.repos.d/ius.repo
enabled=1 → enabled=0
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/ius.repo
# yum --enablerepo=ius install python36u python36u-libs python36u-devel python36u-pip
# cd /bin
# ln -s python3.6 python3
# ln -s pyvenv-3.6 pyvenv
# ln -s pip3.6 pip
# python -V
Python 2.7.5
# python3 -V
Python 3.6.2
とりあえずOKなので、通常のセキュリティ関連の作業に戻ります。
<参考サイト>
SSHの設定
- 作業用ユーザの作成
- 鍵認証の設定
作業用ユーザの作成
# useradd (設定したいユーザ名)
# passwd (上で設定したユーザ名)
root権限を与える
# usermod -G wheel (上で設定したユーザ名)
# visudo
/wheel で検索
%wheel ALL=(ALL) ALL
をコメントアウトというが、#が付いていた試しがない。
別画面でターミナルを開き、上記で設定したuserにてログインできるか確認
ssh (user)@(IP-address)
鍵認証の設定
VPS側にて公開キーの保管場所を作る
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
PC側でキーペアを生成
新しいターミナルを開き、キーペアの生成
色々聞かれるが全てエンター
VPSに転送
$ scp ~/.ssh/id_rsa.pub (user)@(IP-address):~/.ssh/authorized_keys
パスワードを聞かれるので、先ほど作ったユーザーのパスワードを入力
VPSに戻り、
$ ls -la .ssh
authorized_keysが入っていることを確認
SSHの設定(セキュリティの向上)
- ポート番号の変更
- パスワードログインの禁止
- rootログインの禁止
ポート番号の変更
VPS側にて、先ほどのユーザーにrootの権限を与える
$ sudo -s
パスワードを求められたら先ほど設定したパスワードを入力
設定を変更するので、変更するファイルのバックアップを取る。
$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
ポート番号の変更
#Port 22 → Port (変更したいポート番号)
※1024 ~ 65535 まで任意の値を設定できる
パスワードログインの禁止
PasswordAuthentication yes
↓
PasswordAuthentication no
rootログインの禁止
#PermitRootLogin yes
↓
PermitRootLogin no
終わったら変更を保存
sshを再起動
# sudo systemctl restart sshd
別のタブより、
$ ssh -p (Port) (user)@(IP-address)
でログインできればOK
設定前のログインもチェック
$ ssh (user)@(IP-address)
$ ssh root@(IP-address)
どちらもできなければOK
ファイアーウォールの設定
設定ファイルのバックアップ
sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.org
設定の変更
sudo vi /etc/firewalld/zones/public.xml
<追加>
<port protocol="tcp" port="(Port Number)"/>
<service name="http"/>
<service name="mysql"/>
</zone>
再起動
sudo systemctl start firewalld
sudo systemctl enable firewalld
確認
sudo firewall-cmd --list-all
↑にて先ほど設定したポートが追加されていればOK
とりあえずそんな感じ。
WEBサーバ→Nginx
メールサーバ
あたりを設定してDjangoの設定をして見ますか。。。