##はじめに
ここでは中級者向けにCentOS8のセットアップを解説します。
VPNのおすすめサーバーは以下のサイトが参考になります。1
https://vpshikaku.com/
なお、この記事ではすべてrootで作業しているものとします。
環境は以下の通り
$ cat /etc/redhat-release
CentOS Linux release 8.3.2011
ホスト名の変更
初期設定のままだとわかりにくいので、以下のように変更する
root@vultr:~# hostnamectl set-hostname hoge
root@vultr:~# exit
一度、ログアウトし再度ログインすると、ホスト名が変更できているのが分かる
root@hoge:~#
タイムゾーンの設定
タイムゾーンをJSTに設定します。
$ timedatectl set-timezone Asia/Tokyo && \ timedatectl status
Local time: 水 2021-01-13 13:09:18 JST
Universal time: 水 2021-01-13 04:09:18 UTC
RTC time: 水 2021-01-13 04:09:18
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
各種ソフトウェアのインストール
$ dnf install -y epel-release && \
# EPELリポジトリの追加
dnf upgrade -y && \
dnf groupinstall -y "Development Tools" && \
dnf install -y kernel-devel kernel-headers && \
# 上2つのコマンドで各種ソフトウェアのビルドに必要なツールをインストールする。ubuntuのbuild-essentialsみたいなもの。
dnf install -y vim screen zlib-devel.x86_64 gcc.x86_64 zip unzip make wget tar bind-utils libevent-devel ncurses-devel traceroute && \
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \
dnf upgrade -y && \
dnf install -y htop
dnfでこれらのソフトウェアをインストールする。
なお、私はVim派だ。
tmuxの導入
tmuxとは、普段使っているシェルを拡張するソフトウェアだ。screenコマンドより高性能でモダンなため、今回用いることにする。
最小構成で構築したい場合、インストールしなくても問題ない。
wget https://github.com/tmux/tmux/releases/download/3.2/tmux-3.2.tar.gz
tar -zxvf tmux-3.2.tar.gz
cd tmux-3.2
./configure
make -j2
sudo make -j2 install
Speedtest cliの導入
vpnを動作させたときにクライアントで理想の速度が出ない場合、サーバーの速度(スループット)が低下している場合がある。このような状態でサーバー側の回線速度を計測するのにこのツールを用いる。
個人的にはOoklaよりcloudflare.Speedtestの方が毎回正確な値が出るので重宝しているのだが、こっちは非公式ツールしかないのに注意したい。
このツールも最小構成で構築したい場合はインストールしなくても問題ない。
curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \
yum install -y nodejs && \
npm update -g && \
echo "alias speedtest='npx speed-cloudflare-cli'" >> /root/.bashrc && \
npx speed-cloudflare-cli
プロンプトの色を変更する
echo "export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '" >> /etc/profile.d/prompt.sh && \
echo "export PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\\$ '" >> /root/.bashrc
システム全体の日本語化
$ dnf -y install langpacks-ja && \
localectl set-locale LANG=ja_JP.UTF-8 && \
source /etc/locale.conf
firewallの導入、有効化
さくらVPSでもそうだが、ベンダー側がファイアウォールを用意している場合があるのでそれを使うのもあり。
私はサーバーサイドで有効化していないとfirewallがあることを忘れて詰むことがあるので設定する。
$ yum -y install firewalld && \
systemctl start firewalld && \
systemctl enable firewalld && \
systemctl is-enabled firewalld
enabled
# enabledなら全てうまくいっている。
# 後の設定のために一度ここでrebootしておく
reboot
SELinuxの無効化
私はこれを使いこなせる技術がまだないので無効化しておく。
セキュリティー的に有効化したほうが好ましいので、興味のある方はこの記事を見てほしい。
$ vi /etc/selinux/config
SELINUX=permissive
# 後の設定のために一度ここでrebootしておく
$ reboot
##ssh用ユーザーの作成
# ssh用ユーザーの作成
$ useradd username
# 新規作成したユーザーでsudoの有効化
$ visudo
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# whellにuserを追加
$ usermod -aG wheel username
#作成したユーザーでログイン
$ su username
# 所属グループを確認
$ groups
# sudoの確認
$ sudo passwd username
# Permission Deniedや許可がありませんと出た場合はwhellの追加のどこかでエラーが発生している。
ユーザーをグループに追加するときは-aではなく-aGを行う場合がほとんどだ。
-aは所属グループを書き換えてしまうが、-aGは追記してくれるので既存の所属グループに影響がない。
vi → vim の alias を追加する
echo "alias vi='vim'" >> /root/.bashrc
source ~/.bashrc
##公開鍵認証でSSHする
今どきパスワード認証のサーバーを運用するのは怖いので、公開鍵認証を用いてsshする。
この記事いわく、EdDSAが一番いいらしいのでこれを用いる。2
#クライアント側ssh用ユーザーで作業する
$ cd
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/hogehoge/.ssh/id_ed25519):
#どこに鍵を置くかと聞いている、そのままEnter
Created directory '/home/sk002/.ssh'.
Enter passphrase (empty for no passphrase):
#鍵にパスフレーズを設定するか聞いている、鍵だけで十分なのでそのままEnter
Enter same passphrase again:
#パスフレーズの再入力、そのままEnter
Your identification has been saved in /home/hogehoge/.ssh/id_ed25519.
Your public key has been saved in /home/hogehoge/.ssh/id_ed25519.pub.
The key fingerprint is:
#鍵情報とか
The key's randomart image is:
#鍵情報とか
鍵情報が生成されていることを確認
$ ls .ssh/id_ed25519*
.ssh/id_ed25519 .ssh/id_ed25519.pub
鍵情報の名前を変更
cat .ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
鍵情報のパーミッション変更
$ chmod 0700 ~/.ssh/ && \
chmod 0600 ~/.ssh/authorized_keys
sshdの再起動
$ systemctl restart sshd
scpやSFTPなどを用いて公開鍵をサーバーに飛ばす。
私はChromeのSecure Shellという拡張機能を用いてSFTPを行い、鯖側で生成した認証情報をローカルに持ってくる。
この拡張機能を使うのならば、普段のSSH時の"接続"ボタンの隣にSFTPのボタンがあるので試してほしい。
この拡張機能のSFTPではファイルのダウンロードが get filename.hogeでアップロードはputとコマンドを打つだけでいい。
https://chrome.google.com/webstore/detail/secure-shell/iodihamcpbpeioajjeobimgagajmlibd
$ scp authorized_keys
scp username@exsample.net:/home/user/.ssh/id_ed25519 .
サーバー側のsshd_configの変更
PubkeyAuthentication yes # 公開鍵認証を有効化
PasswordAuthentication no # パスワード認証を無効化
$ systemctl restart sshd
で設定を反映した後、
接続テスト、-iオプションで鍵を指定
$ ssh -i id_ed25519 username@exsample.net
すでにサーバーにログインしている場合にcatなどで鍵情報を表示させてそれでログインするのはおすすめしない。
秘密鍵ファイルの改行情報が失われる場合などで、正常にログインできない。
catでもvimでもうまくいかない場合が多い。
##SSHポート変更
これはSELinuxとfirewallの設定後でないとサーバーにsshできなくなって詰むことがあるので注意したい。
先にファイアウォールを開けておく
###firewall設定変更
# 既存のssh用のfirewallルールファイルをコピーする
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-22222.xml
# ssh-22222.xmlを編集
$ vim /etc/firewalld/services/ssh-22222.xml
以下の内容に変更
<port protocol="tcp" port="22222"/>
#reloadでランタイムルールに設定を反映
$ firewall-cmd --reload
#パーマネントルールにssh-22222を反映
$ firewall-cmd --permanent --add-service=ssh-22222
パーマネントルールにある既存のsshを削除
$ firewall-cmd --permanent --remove-service=ssh
#reloadでランタイムルールにパーマネントルールの設定を反映
$ firewall-cmd --reload
#設定内容一覧表示
$ firewall-cmd --list-all
###sshd_configの変更
$ vim /etc/ssh/sshd_config
# 追加するPort番号は何でもいい
- # Port 22
+ Port 22222
# sshでのパスワード認証を無効化する。
# 事前に公開鍵認証を有効化しておく必要がある。
PasswordAuthentication no
# rootでのログインを禁止する
PermitRootLogin no
$ systemctl restart sshd
SELinuxを有効にしている場合は以下で変更できる。
SELinux有効化時のSSHポート変更
##おわり
お疲れ様です。softetherのセットアップは以下の通りです。
https://qiita.com/honahuku/items/1fdc8c6b6ad49816f1a0
参考文献
firewallのインストール
https://qiita.com/ponsuke0531/items/b90a837fc1e839d905c3
firewall-cmd
https://qiita.com/hana_shin/items/bd9ba363ba06882e1fab
SELinuxの無効化
https://qiita.com/hanaita0102/items/5d3675e4dc1530b255ba
SSHの公開鍵認証の種類について1
https://gigazine.net/news/20200828-ssh-encryption-algorithm/
SSHの公開鍵認証の種類について2
https://qiita.com/wnoguchi/items/a72a042bb8159c35d056
EdDSA(ed25519)について
https://qiita.com/angel_p_57/items/a1dc4e9c0b18a23c5242
ユーザー追加
https://qiita.com/araish/items/b6a408e09f34e0845db1
ユーザーのsudo有効化
https://qiita.com/Esfahan/items/a159753d156d23baf180
ssh公開鍵認証の有効化
https://eng-entrance.com/linux-ssh-key