bookmark_borderWordPressのパーマリンクにindex.phpが入る

いつの間にかブログのURLが “https://enlico.net/index.php/blog” になっていました。
(前は”https://enlico.net/blog”だった)

投稿の各ページも “https://enlico.net/index.php/(ポスト名)” になっている・・・。

設定→パーマリンク設定から確認すると、カスタム構造が選択されており、「index.php/%postname%/」になっている。

他の設定にしたりindex.phpを消すと、なぜかブログページにアクセスした際に404エラーとなってしまう。

なぜ!?
と色々調べて試したところ、無事解決したので記事を残す。


解決に導いてくれたのはこちらの記事。

WordPressのパーマリンクからindex.phpを消す方法

Apacheの設定ファイル、httpd.confを弄るみたい。

まずはhttpd.conf内からWordpressの.htaccessファイルがあるディレクトリのAllowOverrideを探し、NoneからAllに変更する。

私の環境ではWordpressは/var/www/html/に入っているので、

<Directory "/var/www/html">
・・・
  AllowOverride None
・・・
</Directory>

を探して、NoneとなっているところをAllに変更して保存しました。

変更したら、念のためhttpd.confのバックアップを取っておいてから

service httpd restart

でApacheを再起動。

そして再度ブログページを開いてみると、URLが”https://enlico.net/blog”に変わりました!

投稿の各ページも “https://enlico.net/blog/(ポスト名)”になっており、パーマリンク設定も投稿名「https://enlico.net/sample-post/」が選択されていました。

なぜ変わったのか、いつ変わったのか分からないけれど無事に解決して良かった。

bookmark_borderLet’s Encrypt自動更新

定期的に手動で更新してたけど、面倒くさくなったので自動更新を設定した。

参考にしたのはこちらのサイト。

Cronという仕組みを使うらしい。
まずは以下のコマンドを入力して、自動実行の設定ファイルを開く。

vi /etc/crontab

ここに設定を追記することで、コマンドを自動実行してくれるらしい。
参考にしたサイトでは毎日実行するようにしているが、私は毎月実行するように設定することにした。

Cronの日時指定については、このサイトを参考にして作成。

https://www.yoheim.net/blog.php?q=20190902

記入した設定はこちら。

0 3 1 * * root /usr/bin/cetbot renew

おそらくこれで毎月1日 3:00に更新コマンドを実行するはず。

もしこれでできてなかったら、追記します。

bookmark_borderLet’s Encrypt更新

有効期限が残り30日を切ったので、更新しました。

参考にしたサイトは、以前Let’s Encryptを導入した際と同じサイトです。
過去の記事にサイトのリンク貼ってます。

https://knowledge.sakura.ad.jp/10534/

管理者権限でSSHにログインして、下のコマンドを実行。

certbot renew

何行かぶわーっと英文が表示された後、最後はこのような文が表示されました。

 

再度コマンドを実行すると、まだ更新できないよ~といった文の後にこのように表示されました。

今は手動で更新してるけど、いつか自動更新を導入したいところ。
(いつかっていつだろう・・・)

bookmark_border自サイトの脆弱性を確認された話

どんなWebサイトにもサイバー攻撃は行われている。

・・・という話は聞いたことがありましたが、いざ自分のサイトにも行われているのを目の当たりにして改めてセキュリティの大切さを実感しました。

 

というのもSiteGuardを導入してたった3分程度したところで、知らないIPアドレスからのトラステッド・シグネチャが検出されました。

 

実際何をされたのかというと、サイトの脆弱性を確認されたらしい。。。

どうやって確認するのかというと、WebからShellコマンドを動かせるWebshellが使えるのかどうか確認しているみたい。

具体的にはURLの「?」以降にある「a=fetch&content・・・」がWebshellで実行しようとしたコマンドのよう。
調べても詳しく何を要求するコマンドなのか出てこなかったので、これは推測だけど恐らく「”HelloThinkCMF”のmd5ハッシュ値を返信してexitしてね」という内容だと思う。

ちなみに、たった2日で同じIPアドレスから4回も同じアクセスがありました。

 

いや怖すぎだろ!!

調べるとロシアのIPアドレスらしく、他にも被害に遭われている方の報告が3000件近くありました。
(こういうのもわかるなんて迷惑電話みたい)

 

今日はこの件を調べて一日が終わってしまった・・・OTL
だけどセキュリティに関して調べるのは有益な一日、とも言えるかな。。。

明日こそはコーディングしよう。

bookmark_borderSiteGuard Liteの導入

WAFを入れていなかったので、さくらVPSの利用者は無料で利用できるSiteGuard Liteを導入した。

いつもどおり、さくらのVPS講座を参考にして導入。

https://knowledge.sakura.ad.jp/12348/

WAFってなんぞや?
という方いましたら、こちらも上のサイトに説明が書いてあるので覗いてください。

 

要するに、様々なサイバー攻撃を防いでくれるファイアウォールの一種らしいです。

ファイアウォールなら既に「firewalld」を適用済みですが、WAFを入れることによって「firewalld」では防ぎきれないサイバー攻撃にも対応してくれるとのこと。

 

SiteGuard Liteの導入は手間がかかりそう・・・と思って後回しにしてしまっていましたが、上のリンク先を参考にするとサクッと導入できました。
(なぜ後回しにしたんだ、私)

 

 

基本的に手順通りに進んだんですが、一箇所だけちょっと躓いたところが。

どこかというと、

./setup.sh

を実行した後、ポート9443のSiteGuard管理画面を開けるはずが開けない!

 

さくらVPSのコントロールパネルからパケットフィルタ設定でポート9443を開放してみたけど、それでも管理画面が開けず。

他にもブラウザのキャッシュを消してみたりなどしてもうまくいかず・・・。

 

結局、2回ほど

./setup.sh

のコマンドを実行し直したところで、アクセスできるようになりました。

原因はわからないけれど、パケットフィルタ設定を変更してから反映されるまで時間がかかったとかなのかな?
・・・と予想。(予想なので確信ではない)

 

 

手順にあるXSS攻撃をブロックしているかの確認を行った後も、リンク先内にある「さくらのナレッジ」全3回を参考にしてSiteGuardの設定を行いました。

更にセキュリティを高めようとしたらまだまだすることはあるんだろうけど、とりあえずはサイトに書いてあった設定だけ。

 

 

SiteGuardを導入してからすぐに、知らないIPアドレスから攻撃されたようで検出ログに記録が・・・。

この辺はまた別記事としてまとめていきたいと思います。

bookmark_borderNode.jsのSSL化

Node.jsで立てたhttpのサーバーをhttpsで接続できるようにするため色々調べたところ、

https://kennejs.com/entry/2019/01/19/074529

このサイトを参考にすることで無事SSL化に成功した。

 

ドメインも取得していたし、SSL証明書もネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」を参考にLet’s Encryptで取得していたので、Node.jsのアプリケーションを修正だけでできた。

 

const https = require('https');
option = {
  key: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/privkey.pem'),
  cert: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/cert.pem'),
  ca: fs.readFileSync('/etc/letsencrypt/live/(独自ドメイン)/chain.pem')
}

まずはこのコードを追記。私の場合「fs」をrequireしていなかったので、この上にさらに

const fs = require('fs');

を追記。

 

const server = http.createServer(app).listen(3000);
let io2 = io.listen(server);

としていたところを

const server = https.createServer(option, app).listen(3000);
let io2 = io.listen(server);

に変更。

 

これで無事にSSL化に成功。

bookmark_borderApache&Node.jsの共存

Apacheを動かしている状態だとNode.jsでサーバーを立ててもNode.js側には接続できず、ApacheをストップするとNode.js側に接続できるという状態が発生した。

どうやら共存させるために手順が必要なようだ。

 

http://note.onichannn.net/archives/2451

上のサイトを参考に、httpd.confのリッスンポートとバーチャルホストのポートを80番以外に避難することで、無事に共存させることができた。

サイト内ではNode.js側はhttp-proxyを導入しているが、この手順は行っていない。

元々ポート80番以外で接続するように設定していたからかな。

bookmark_borderFileZillaを使って公開鍵認証で接続

サーバーに公開鍵認証でのみログインできるように変更したので、普段使っているFileZillaでの公開鍵認証によるログイン方法を調べることに。

 

検索したら一番最初にこちらのサイトが出てきた。

https://qiita.com/JeJeNeNo/items/291ef478a6e9adbc4c6d

私はWindowsを使っているので、こちらのサイトを参考に手探りで接続してみた。

 

  1. メニューバーから「編集」→「設定」→「SFTP」
  2. 「鍵ファイルの追加」を押し、鍵ファイルを選択。パスフレーズが設定されている場合は入力を求められるので入力。
    (※)FileZillaでは.ppk形式のみしか使えないので、鍵ファイルが.ppk形式でない場合は「FileZillaがサポートしている形式に変更しますか?」で「はい」を選択し、名前を付けて保存する。
  3. 「OK」を押して設定のダイアログを閉じる。
  4. 「ホスト」、「ユーザー名」、「ポート」を入力し、「クイック認証」を選択。
  5. パスフレーズが設定されている場合は、入力欄にパスフレーズを入力する。「OK」を押すと接続完了。

 

この手順で接続は無事完了。

 

ちなみに鍵を複数登録している場合はどうなるんだろう?と思って、同じ鍵を別名で登録してみると、接続時に新しく登録した鍵が選択されていた。

自分で鍵を選択する方法はあるのかな?

それは必要になったときに調べよう。

 

無事に接続できてよかった。

bookmark_borderレンタルサーバーとVPSの違い

そもそもどういう違いがあるのかあまり理解していなかったので調べてみると、こちらのサイトに分かりやすく載っていました。

ネコでもわかる!さくらのVPS講座 〜第一回:VPSてなんだろう?〜

これを読んで自分なりの解釈を纏めます。

 

レンタルサーバーについて

レンタルサーバーは、1つのサーバーの資源をみんなで共有しながら借りている状態。

いわゆるルームシェアみたいなイメージ。

同じ部屋に住んでいて1つの扉で出入りし、キッチンも共同。部屋内に自分専用のスペースはあるけど、他者からの影響はかなり受けやすい。

アプリケーションという名の家具も部屋に入れられないなど、自由度がかなり低い。

ただレンタル料は格安だし、生活必需品がすでに部屋にあるから借りたらすぐに住める状態。

 

VPSについて

VPSは、1つのサーバー(実際には仮想サーバーだけど)を丸々借りている状態。

レンタルサーバーがルームシェアなら、VPSは賃貸みたいなもの。

部屋には自分しかいないからレンタルサーバーより自由度は高いし、他者の影響は受けにくい。(受けないとは言ってない)

ただVPSは借りただけだと生活必需品がなくて、これから何もかも自分で揃えないといけない。それにセキュリティ対策なんかも必要になってくるから、住むためには知識が必要になってくる。しかもレンタル料はレンタルサーバーよりもお高め。

 

どっちを選ぶか

どちらにもメリットデメリットはあるので、サーバーを借りて何をしたいかを明確にしてから選んだほうがよさそう。

ただHPを公開したいとか、ファイルを置いときたいだけならレンタルサーバー。

SSH接続してコマンド操作したり、アプリケーションをインストールしたりが必要ならVPS・・・といった感じに。

 

レンタルサーバーは無料でも借りれたり無料試用期間があるところが多そうなので、それで試しに触ってみるのがいいかもしれないね。

bookmark_borderVPSの契約から公開まで

自分が作成したWebサービスを公開するにあたり、VPSを契約しました。

レンタルサーバーだと、契約してすぐに自分のURLをもらえてファイルをアップロードして公開・・・と簡単にできるんだけど、VPSだとそうはいかない。契約すると自分専用のIPアドレスはもらえるんだけど、http接続については自分で設定しなければいけない。

その辺のやり方とか全くわからない状態ではあったけれど、 さくらVPSで2週間のお試し期間があったので、最悪無理そうなら試用期間中に辞めればいいや~とVPSを契約しました。

 

VPS契約したらまずすること

VPS初心者さんが見ていたらぜひ知ってほしいんだけど、VPS契約してまずすることは「ファイルをアップしてhttp接続で見れるようにして・・・」ではないということ!

簡単にログインできてしまう状態だと、サーバを乗っ取られる可能性が高いということ。

その辺の初期設定については ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」 を参考にして私は進めました。

すごくわかりやすいサイトでした。・・・が、それにも関わらず躓いてしまうことがちょこちょこあったので、今後その躓いた内容もブログに残していこうと思います。