CentOS7が標準で選べます.
パケット・フィルタリングという機能がVPSに備わっておりこれを無効にする必要があったりします.
【初心者向け】さくらVPSのSSH初期設定で22番以外のポートに繋がらない
SSHポート番号を変更したら繋がらなくなった(さくらVPS CentOS7)
さくらの VPS に CentOS7 を入れて SSH と Firewalld の設定につまづいた話 – TURNIP 2
さくらのVPSにおけるポート開放の落とし穴
sshでサーバーに接続します.
ssh -p 22 [email protected]
IPアドレス(@マーク以下のxxx.xxx.xxx.xxxのところ)はさくらVPSのコンソールからコピーできます. 以下の画像のIPv4テーブルのアドレス項目に記載されているCSV(Character Seperated Value)です.
root@と指定したので, ルート・ログインです. ログインしたらとりあえずyumでパッケージを更新しておきます.
yum -y update
ルート・ユーザーで管理をやるのは問題があるので, 必要な時だけルート権限で実行できるようにします. ユーザー名を決めて以下を入力します. 今回はcentkunとして進めます.
adduser centkun && passwd centkun
とするとプロンプトが表示されるのでパスワードを確認用も含めて2回入力します.
次はsudoerを設定します. suでルート権限が必要な時にルート・ユーザーになるのも良いのですが, sudoの方が個人的に慣れているのでそうします.
usermod -aG wheel centkun
一般ユーザーに切り替えるにはsuコマンドを利用します.
su centkun
SSHの設定のためにsshd_configへのアクセスが必要ですがcentkunではできないことを確認しましょう.
cat /etc/ssh/sshd_config
Permission deniedと出ればオッケーです. このように一般ユーザーにはルートにしか編集や閲覧ができないなどのアクセス制限が課せられています. suやsudoを使うと一時的にその権限を取得できます. 一先ずサーバーから抜けてcentkunで接続し直します.
exit
ssh -p 22 [email protected]
ここでcentkunをsudoerとして登録します. これはCentOSではwheelというグループに登録することです.
一旦suコマンドでルート・ユーザーにになってwheelグループにcentkunを追加します.
su
usermod -aG wheel $USER
exit
これで適当なコマンドでsudoerとしてアクセス権を取得できているか見てみましょう.
sudo ls
centkunのパスワードを実行してカレント・ディレクトリの内容が表示されたらオッケーです. 以後はsudoで権限の切り替えを行います.
ポートとは同一ホスト上(コンピュータのこと)で動いている複数のサービス(常駐のプログラムのこと)を区別するための番号です. httpdやsshdなどによって指定するポートが違っています. ポートには三種類あります.
ポート番号名 | 範囲 | 説明 |
---|---|---|
Well-know Ports | 1~1023 | IANAが管理している. 特定のサービス以外には使えない |
Registered Ports | 1024~49151 | IANAが管理している. 自由に使える |
Dynamic Ports | 49152~65535 | IANAが管理していない. 自由に使える |
通常はSSHのウェルノウン・ポートである22が指定されています. これまであえてpオプションで明示的に指定しました. またこの設定はさくらVPSのダッシュボードからパケット・フィルタリングで有効/無効に設定できます.
SSHのサービスを提供するsshdの設定なのでsshd_configからポート番号を変更します.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
sudo vim /etc/ssh/sshd_config
Port項目をアンコメントして番号を22から1024以降の番号に変更しましょう. 次はfirewalldの設定を行います.
sudo vim /user/lib/firewalld/services/ssh.xml
のportの部分を利用するポート番号へ変更しておきましょう. これで指定ポートがファイアウォールを通り抜けられます.
次はルートでSSHを通じてログイン出来ないようにします.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
sudo vim /etc/ssh/sshd_config
PermitRootLoginをアンコメントしnoに変更します.
sshdの設定(sshd_config)を読み込ませるためにsshdを再起動します.
sudo systemctl restart sshd
そしてfirewalldは起動していないので, 起動します.
systemctl start firewalld
後は接続時のセキュリティの設定(CentOS 7)を参考に設定してみましょう.
firewall-cmd --info-service ssh
を確認してportsで指定した番号が表示されていればOKです.
sudo firewall-cmd --zone=public --list-all
応用:SSH 接続用ポート番号の変更
ネコでもわかる!さくらのVPS講座 ~第七回「ファイアウォール”firewalld”について理解しよう」
さくらVPSにはパケット・フィルタリングという機能があってこれはすでにピットフォール(はまりポイント)として知られているようです.
基本的な設定としてWebやSSHなどのサービスへのWellknow-portは変更しておく必要があるらしい. しかしパケット・フィルタリングが有効になっているとファイアウォールやSELinuxの設定をするとリモート接続できなくなる.
無効にするのが重要らしいがこのパケット・フィルタリングの何が嬉しいのかよく分からないです. とりあえず無効にします.
注意書通りにファイアウォールとセキュリティ設定を行いましょう.
後は接続時のセキュリティの設定(CentOS 7)を参考に設定行います.
ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方では必要なように書いていました.
CentOS 7 で sshd のポート番号を変更する方法によると
という違いがあるようです. 気になる人は設定してみると良いのかもしれません. 現状以下のようにリモートログインしている.
ssh -p 22 [email protected]
これはパスワード認証方式と呼ぶが, パスワード漏洩・推測などのリスクがある. 暗号を使った公開鍵方式を使うと安全性が高まるらしい.
サービスとしてファイアウォールが有効かどうかを確認する.
$ firewall-cmd --state
runningと出れば起動しています. あるいは
$ systemctl status firewalld.service
こちらは情報量が多いですがactive (running)となっていれば起動していることがわかります.
firewall-cmd --list-all
サービスとしてのファイアウォールを管理するにはsystemctlコマンドを使います.
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
さくらVPSはデフォルトではfirewalldが起動していなかったのでstartしておく必要があります.
ネコでもわかる!さくらのVPS講座 ~第七回「ファイアウォール”firewalld”について理解しよう」
CentOS 7 firewalld よく使うコマンド
CentOS 7でSSHのポート番号を変更する(SELinux・firewalld)
以上これで良い, といことはないんでしょうがLinuxの勉強不足でよく分かりません.
以下の画像ようにリンクを辿ります.
最後の画像のリンク先をコピーします. ダウンロードしたバイナリを/usr/local以下に配置します.
sudo wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz
sudo tar -xvf go1.13.5.linux-amd64.tar.gz
mv go /usr/local
.bashrc以下にgoのパスを設定します. goのパスはやや独善的(opinionated)に決定されていますが, プロジェクトの保存場所に迷ったり生成した実行可能バイナリに一々パスを通さなくていいので便利です. ただし実際に配置されるのはwebアプリのバイナリだけなので, こんな複雑なフォルダ構成は必要ない気もしますが・・・.
export PATH=$PATH:/usr/local/go/bin # 1
export GOPATH=$HOME/go/package:$HOME/go/workspace # 2
export PATH=$HOME/go/package/bin:$HOME/go/workspace/bin:$PATH # 3
yumでインストールできます.
sudo yum -y install mariadb-server.x86_64
MariaDBはサービスとして実行されるのでsystemctlを使って起動します.
サーバーはめんどくさいということでしたが, 基本的なことしかしてないためかそれほど迷うことはなかったです.
とりあえずGoとMariaDBはやったので, 次回はデプロイをやりたいです. 公開までもう少しです.
接続時のセキュリティの設定(CentOS 7)
An Introduction to SELinux on CentOS 7 – Part 1: Basic Concepts
How to Set Up a Firewall with FirewallD on CentOS 7
1.6. ENHANCING SYSTEM SECURITY WITH A FIREWALL, SELINUX AND SSH LOGINGS
Androidアプリ開発者を目指しています. 興味あることリスト: https://t.co/ew3bb6grdJ Github: https://t.co/9btqysHqWr Qiita: https://t.co/ZVRhjouauX
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント