#はじめに
先日、ServersMan@VPSを新規で契約しました!
契約手順を記載してみたので、ServersMan@VPSに興味のある方は是非読んでみてください。
さくらのクラウドからServersMan@VPSに乗り換えてみる
今回は、CentOS7の初期設定をしていきたいと思います。
#環境
ServersMan@VPS
CentOS7
#パッケージのアップデート
パッケージを全て最新にします。
# yum update -y
#日本語対応
初期設定値はデフォルトの言語(英語)になっています。
# echo $LANG
C
# date
Mon May 14 20:47:28 JST 2018
設定ファイルを変更します。
vim
で設定ファイルを編集し、source
で反映させます。
# vim ~/.bash_profile
# source ~/.bash_profile
編集内容は、最終行に2行追加するだけです。
LANG=ja_JP.UTF-8
export LANG
再度確認すると、日本語になっていることが分かります。
# echo $LANG
ja_JP.UTF-8
# date
2018年 5月 14日 月曜日 20:56:07 JST
#ユーザ作成
ユーザ名をryujiとして作成し、sudo権限を追加します。
# useradd ryuji
# passwd ryuji
# usermod -G wheel ryuji
作成したユーザに切り替えて、sudoコマンドを実行してみます。
# su - ryuji
$ sudo visudo
sudoで失敗した場合は、rootユーザでvisudo
を実行し、
以下の設定がコメントアウトされていたら、外してみてください。
#%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
#公開鍵認証
パスワード認証ではセキュリティが弱いため、公開鍵認証でログイン出来るようにしていきます。
サーバ側
# su - ryuji
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
接続元PC側(Macを使用しています)
ssh-keygen
コマンドを実行すると、名前などを設定できますが
デフォルトとで問題ない為、全てEnterキーを押します。
scp
コマンドでサーバに公開鍵を、authorized_keysという名前に変更して登録します。
$ ssh-keygen -t rsa -v
$ chmod 600 .ssh/id_rsa.pub
$ scp -P 【ポート番号】~/.ssh/id_rsa.pub ryuji@【IPアドレス】:~/.ssh/authorized_keys
公開鍵認証でログイン出来るように設定します。
念のため、ファイルをコピーしてから編集し、service
で反映させます。
root権限で行います。
# mkdir -m 777 /home/ryuji/backup
# cp -ip /etc/ssh/sshd_config /home/ryuji/backup
# vim /etc/ssh/sshd_config
# service sshd restart
#PubkeyAuthentication yes
PubkeyAuthentication yes
ログイン出来れば完了です。
ssh ryuji@IPアドレス
#SSH設定
ここまでの設定によって、一般ユーザで公開鍵認証が可能になっているため
不要なログイン方法を禁止し、セキュリティを強化していきます。
※設定反映後、新規のターミナルでログインができる事を確認出来るまでは、開いているターミナルを閉じないでください。
ログインができなくなる可能性があります。
# vim /etc/ssh/sshd_config
# service sshd restart
root権限でログイン禁止
#PermitRootLogin yes
PermitRootLogin no
パスワードでログイン禁止
#PasswordAuthentication yes
PasswordAuthentication no
#SSHのポート番号を変更
ServersMan@VPSでは、SSHのポート番号がデフォルト(22番)ではなかったので、変更は不要でした。
変更したい場合は、次のように任意のポート番号に書き換えましょう。
# vim /etc/ssh/sshd_config
# service sshd restart
#Port 22
Port 【任意のポート番号】
#ファイアーウォールの設定
CentOS7では、iptables の代わりに firewalldを使用するのが一般的です。
なのですが・・・
ServersMan@VPSでは、iptablesがインストールされており、
自動起動の設定までされていたので、iptablesで設定します。
設定内容は、ドットインストールで紹介されていたのもを使用しています。
# cp -ip /etc/sysconfig/iptables /home/ryuji/backup/
# vim /etc/sysconfig/iptables
# service iptables restart
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:SERVICES - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 【変更したSSHポート番号】 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
-A SERVICES -p tcp --dport 9200 -j ACCEPT
-A SERVICES -p tcp --dport 5601 -j ACCEPT
COMMIT
ざっくり説明すると
サーバ内から外への通信は全て許可
外からサーバ内への通信は全て拒否し、httpやSSHなどの通信は個別に許可しています。
iptables -L
で設定内容を確認できます。
#ヒストリサイズの変更(任意、個人的におすすめ)
hisoryコマンドをよく使うので、履歴を記憶できる上限を増やしておきます。
# cp -ip /etc/profile /home/ryuji/backup
# vim /etc/profile
# source /etc/profile
#HISTSIZE=1000
HISTSIZE=10000
#SELinux無効化(任意)
SELinuxを利用すると細かいアクセス制御が可能になるそうです。
ただし、SELinuxが原因でうまく動作しないことが多いため、無効化していることが多いです。
設定を確認したところ、ServersMan@VPSでは、
初期設定で無効(Disabled)になっていたので、変更は不要でした。
# getenforce
Disabled
#次回
LAMP環境を、Ansibleを使用してインストールしてみたいと思います!
Ansible を初めて使ってLAMP環境を作成してみる