タグ: GCP

検索結果: 1件

article-thumbnail

CentOS7の初期環境構築

【概要】CentOS7を初期環境構築する時のドキュメントです。ここではSELINUXの停止、ZSH、peco、ユーザー作成と設定、SSHポートの変更、タイムゾーンの設定等を行います。サーバー構築に慣れていない場合はpecoを入れてコマンド実行履歴を確認できるのでお勧めです。[目次]・SSH接続・初期設定・zsh・シェル・peco・vim設定・ユーザー・グループ作成と設定・セキュリティとユーザー設定・サーバーのタイムゾーンを日本時間に合わせる【SSH接続】1. 作成したCentOS7インスタンスにSSH接続する・公開鍵を登録した場合インスタンス作成時に公開鍵を登録している場合、インスタンス情報を「.ssh/config」に設定します。Host インスタンス名HostName インスタンスのグローバルIPUser rootHostはわかりやすいようにインスタンス名にしています。HostNameはインスタンスのグローバルIPを設定します。クラウドの場合、コンソール画面に表示されています。GCPでは下記のサンプル画面からわかります。下記のコマンドでSSH接続します。ssh インスタンス名・公開鍵の登録をしていない場合i. SSH接続をする基本的にインスタンス構築時には「root」ユーザーで接続します。ssh root@グローバルIPこの場合、上記のコマンドを打った後にインスタンス構築時に設定したパスワードを入力します。ii. インスタンスに「~/.ssh」ディレクトリを作成するcd ~/mkdir .sshchmod 700 .sshiii. authorized_keysを作成するcd .sshtouch authorized_keyschmod 600 authorized_keysvi authorized_keysインスタンスに自身の公開鍵(id_rsa.pub)を登録します。注意点としてはパーミッションを変更しないと機能しません。「公開鍵を登録した場合」の項目のように.ssh/configを設定するとSSH接続が楽になります。上記のどちらかの方法でインスタンスにSSH接続します。Cf. グローバルIPをSSH接続先で調べる方法グローバルIPがコンソール画面からわからない場合、コンソール画面からSSH接続する方法GCPやさくらのクラウド等ではあります。よって、コンソール画面からSSH接続し、下記のコマンドを入力すればグローバルIPがわかります。curl inet-ip.info【初期設定】1. 各グループパッケージの確認とアップデートを行うyum groups list2. yumをアップデートするyum update「y」で全てのパッケージをアップデートします。RPM-GPG-KEY-CentOS-7も「y」で進めます。パスは「/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7」です。3. SELinuxの設定SELinuxとはセキュリティ関連のLinuxカーネル制御機能です。ただ、制御は難しい為、ここではSELinuxを無効化します。さくらクラウド等では最初からdisabledになっている事が多いです。しかし、物理サーバーでCentOS7をインストールする所から始めると最初はenforcingになっています。vi /etc/sysconfig/selinux変更内容SELINUXdisabled「SELINUXenforcing」を「SELINUXdisabled」にします。4. rebootするyumのアップデートとSELinux設定を反映する為にrebootします。reboot・SELinuxの設定確認getenforce下記のように出力されれば無効化されています。Disabled【zsh・シェル・peco・vim設定】[zshの設定]1. zshをインストールyum install -y zshインストールされたzshのパスを確認するwhich zsh出力結果/usr/bin/zsh2. SHELLをzshに変更chsh -s /usr/bin/zshCf. Amazon Linux 2でのSHELL変更※ Amazon Linux 2では chshコマンドがない為、下記のコマンドでインストールする必要があります。yum install util-linux-user「util-linux-user」をインストールした後、「chsh -s /usr/bin/zsh」コマンドを実行します。[oh-my-zshの設定]1. oh-my-zshのインストールする為にwget、git等をインストールするyum install -y wget git curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker2. oh-my-zshをインストールwget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh[vimの設定]・vimをインストールするyum -y install vim-enhanced[pecoの設定]1. pecoをインストールするcd ~/wget https://github.com/peco/peco/releases/download/v0.5.3/peco_linux_amd64.tar.gz2. pecoの圧縮ファイルを解凍tar xvfz peco_linux_amd64.tar.gz3. 解凍したディレクトリに移動cd peco_linux_amd644. pecoを「/usr/local/bin/.」に移動mv peco /usr/local/bin/.5. pecoをrootのグループとユーザーに変更cd /usr/local/binchown root.root peco6. pecoのPATH確認which peco[pecoの設定]1. .zshrcの設定下記のコマンドで.zshrcを編集します。vi ~/.zshrci. pecoをzshにて使用できるようにする下記を追記します。function peco-select-history() {local tacif which tac /dev/null; thentac"tac"elsetac"tail -r"fiBUFFER$(history -n 1 | eval $tac | peco --query "$LBUFFER")CURSOR$#BUFFERzle clear-screen}zle -N peco-select-historybindkey '^r' peco-select-historysetopt nonomatchii. oh-my-zshのテーマを変更する「ZSH_THEME」の項目を変更する事でoh-my-zshのテーマを変更します。ZSH_THEME"dallas"ここでは「dallas」を設定していますが、その他にもテーマがあるので気になる方は調べてみて下さい。iii. vimコマンドのalias設定「vi」コマンドで「vim」を使用するようにしたい為、aliasを設定しています。しかし、「vi」と「vim」を別々に使用したい、またはaliasが不要な場合はここの設定は不要です。下記を追記します。alias vi"vim"2. 「~/.zshrc」の変更を反映する・コマンドで反映する方法source ~/.zshrc・一度ログアウトし、再ログインする事で反映する再ログインすると最初にshellを読み込みに行く為、設定が反映されます。上記どちらの方法でも、確認が取れれば成功です。【ユーザー・グループ作成と設定】[概要]ここではサンプルとして「ec2-user」ユーザーを作成します。「ec2-user」ユーザーに権限を持たせて最低限の環境構築が行えるようにします。[詳細]1. ec2-userを作成するパスワードを使用せずに「root」ユーザーになる為に、セカンダリグループに「wheel」グループを追加します。・ec2-userグループを作成groupadd -g 500 ec2-user・ec2-userを作成useradd -G wheel -u 500 -g 500 ec2-user・ec2-userのパスワード設定passwd ec2-userこのドキュメントでは最終的にパスワード認証でのSSH接続を拒否する設定にします。しかし、パスワードは極力強い設定にしておきましょう。2. oh-my-zshを使用するzsh SHELLはrootユーザーで済んでいます。よって、oh-my-zshのインストールを行います。・ec2-userになるsu - ec2-user・oh-my-zshを取得wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh・一度ログアウトしてoh-my-zshが適応されたか確認する「control + d」でec2-userをログアウトします。3. SHELLをzshに変更するi. zshのパス確認which zsh出力結果例/bin/zshii. SHELLをzshに変更chsh -s /bin/zshiii. zshを反映する一度「ec2-user」ユーザーをログアウトしてzshを反映させます。4. pecoとSHELLを設定する・.zshrcの設定を変更vi ~/.zshrc・変更内容i. ZSHのテーマをfishyに変更ZSH_THEME"fishy"rootユーザーでは「dallas」テーマにしました。ec2-userでは「fishy」にします。理由はrootユーザーとec2-userで見た目が違うと、自身が今どのユーザーであるかを直感的にわかるからです。気に入っているテーマがあればどちらのユーザーも同じでも良いと思います。ii. pecoをzshにて使用できるようにする下記を追記します。function peco-select-history() {local tacif which tac /dev/null; thentac"tac"elsetac"tail -r"fiBUFFER$(history -n 1 | eval $tac | peco --query "$LBUFFER")CURSOR$#BUFFERzle clear-screen}zle -N peco-select-historybindkey '^r' peco-select-historysetopt nonomatchiii. vimコマンドのalias設定「vi」コマンドで「vim」を使用するようにしたい為、aliasを設定しています。しかし、「vi」と「vim」を別々に使用したい、またはaliasが不要な場合はここの設定は不要です。下記を追記します。alias vi"vim"5. ec2-userに公開鍵の設定i. 「~/.ssh」ディレクトリを作成するcd ~/mkdir .sshchmod 700 .sshii. authorized_keysを作成するcd ~/.sshtouch authorized_keyschmod 600 authorized_keysvi authorized_keys自身の公開鍵(id_rsa.pub)を登録します。【セキュリティとユーザー設定】0. 前提この設定はrootユーザーで行います。よって、「sudo su -」等のコマンドでrootユーザーになっておいて下さい。1. sudoをパスワードなしで使用できるようにするec2-userにてsudoの実行をパスワードなしで許可する設定にします。下記のどちらかのコマンドを実行します。どちらのコマンドを実行しても実行対象のファイルは同じファイルになります。・パターン1visudo・パターン2vi /etc/sudoers変更内容# Same thing without a password%wheelALL(ALL)NOPASSWD: ALL最初は「%wheelALL(ALL)NOPASSWD: ALL」の文頭に「#」のコメントアウトが記述されているので「#」を削除します。・ec2-userがrootユーザーにパスワードなしでなれるかを確認するi. ec2-userになるsu - ec2-userii. ec2-userからrootユーザーになるsudo su -これでパスワードなしでrootユーザーになれれば成功です。2. rootユーザーでのログイン関係を変更する変更点は下記の2点です。・rootユーザーでのSSH接続ができないようにする・全ユーザーのSSH接続におけるパスワード認証を拒否するvi /etc/ssh/sshd_config変更内容PermitRootLogin noPasswordAuthentication no上記は変更前から設定されている場合もあります。「PermitRootLogin」と「PasswordAuthentication」の項目はあるので探して変更して下さい。3. SSH接続の設定変更を適応するsystemctl restart sshd.service・注意点これでルートユーザーでのSSH接続とパスワード認証によるSSH接続ができなくなりました。このあと確認を行うのですが、現在接続しているSSH接続は切らないようにして下さい。理由は、もし作成したユーザー(ここではec2-user)の設定が間違っていた場合、ローカルでの接続が困難になります。クラウドの場合は、コンソール画面からSSH接続できますが、物理サーバーの場合はCentOS7の再インストールから始めなければなりません。よって、現在の接続は切らないようにして下さい。4. ローカルからCentOS7にec2-userで接続できるか確認する・.ssh/config設定vi ~/.ssh/configmacに下記のように.ssh/configを設定します。Host インスタンス名 HostName インスタンスのグローバルIP User ec2-user・ターミナルの新規タブでローカルからサーバーに接続するssh インスタンス名これで接続できれば成功です。5. ポート変更SSH接続のデフォルトのポートは22番です。つまり、22番ポートは誰もが知っているSSHポートとなります。22番を使い続けるのはハッキングされる可能性が高まります。デフォルトのSSHポート番号を変更する事で多くの方が使用している番号から変わる為、対策となります。i. rootユーザーになるsudo su -ii. SSH接続ポートの変更vi /etc/ssh/sshd_config変更内容# Port 22Port 10022ここでは10022ポートを使用しますが、他の番号でも大丈夫です。ただし、今後インストールするアプリケーションにもデフォルトのポートがあります。例えば、Nginxでは80番ポート、MySQLでは3306ポート。下記のウィキペディアにポート番号の一覧が記載されているので、参考にし、競合しないようにして下さい。TCPやUDPにおけるポート番号の一覧iii. 変更を反映systemctl restart sshd.service6. Firewallを設定している場合のポート開放SSH接続で10022番ポートを使用する場合、Firewallに10022ポートを開ける設定をします。ただ、GCPやAWSといったクラウドの場合はパケットフィルタで設定します。パケットフィルタを使用しない場合の対応としてまとめているのでパケットフィルタで対応する場合はこちらの項目は飛ばして下さい。・ポート解放設定firewall-cmd --zonepublic --add-port10022/tcp --permanent・設定反映firewall-cmd --reload※ 標準のSSH(22)を開放する場合のコマンドfirewall-cmd --add-servicessh --permanent7. ポート変更に伴い、macの.ssh/configを再設定するCentOS7のSSHポートを10022に変更した為、macの.ssh/configも変更する必要があります。vi ~/.ssh/config下記のように.ssh/configの対象サーバー設定に「Port10022」の設定を追加します。Host インスタンス名 HostName インスタンスのグローバルIP User ec2-user Port 100228. 再度SSH接続できるか確認するssh インスタンス名これで接続できれば設定完了です。【サーバーのタイムゾーンを日本時間に合わせる】下記はサーバーの時刻を東京のに合わせるコマンドです。timedatectl set-timezone Asia/Tokyoアプリケーションやcron等にも時刻は影響します。ここでは時刻を東京にしていますが、使用するアプリケーションに合わせて時刻を設定して下さい。【まとめ】これで最低限の設定は完了です。この後にPHPやNGINX等の設定を行います。この設定をしておくと今後のサーバー構築もしやすいと思います。サーバー構築初心者の方に特にお勧めなので、是非試してみて下さい。

カテゴリ: CentOS 2020-09-09 01:14:22