Web サーバーに関連する Linux コマンドについてまとめておきます。
加えて、セキュリティ対策についていくらか考察しておきます。
背景
レンタルサーバー(VPS)を契約し、WordPress でウェブサイトを作っています。
運用にあたり、Web サーバーの知識が必要になってきますので、よく使うコマンド、ポイントをまとめておきます。
Web サーバーは Apache を想定しています。
環境:レンタルサーバー(ConoHa VPS)、CentOS、Apache
Webサーバー関連でよく使うコマンド
Web サーバーの起動
# systemctl start httpd
Web サーバーの停止
# systemctl stop httpd
Web サーバーの再起動
# systemctl restart httpd
使用しているポートの確認方法
# lsof -i -P
→ デフォルトでは、http 用に 80番、https 用に 443番を Listen する設定になっていると思います。
ポートのコンフィグ設定の表示
# httpd -S
Web サーバーの設定ファイルと内容
Apache の設定ファイル httpd.conf は、デフォルトで以下のコマンドで編集できます。
# vi /etc/httpd/conf/httpd.conf
上記の httpd.conf を参照すると、以下が定義されています。
Listen 80
Web サーバーが参照するポート番号
ServerName XXXXXX.com:443
独自ドメインの設定 (https 設定後の例)
DocumentRoot “/var/www/html”
ドキュメントルートの設定
このパスが Web サーバー動作時の公開フォルダとなります。
Apache をインストールした直後では、ドキュメントルートのデフォルトは “/var/www/html” となっています。(最後の html はフォルダですが、スラッシュは不要です。)
セキュリティに関して
最近、Apache のインストールと SSL 認証の設定をし、ホームページ、WordPress を順次稼働させました。https のホームページにアクセスしてもらう意図です。
ところが、ドメインを取得して公開10日もしない間に、どうやって IP アドレスを収集したのか、海外からサーバーの IP アドレスへの直接アクセス、http、WordPress などの PHP へのアクセスが続いています。
デフォルト設定のまま、Web サーバーを稼働させて、ホームページや WordPress を公開、放置しておくと、時間の問題(数撃ちゃ当たる)でパスワードが推測されたり、乗っ取られたりといった問題が起こりそうです。
いくつかセキュリティ上の設定を進めていますが、まずは上記の Listen 80 (デフォルト)を別番号に書き換え(※※)、http でのアクセスを拒否する設定としてみました。そうしたところ、怪しいアクセスはかなり減りました。
どうも、新規に開設したドメインの公開情報を自動取得して、複数の PC から機械的に自動巡回でアクセスしてきているようです。
デフォルト設定のままにしていると、管理者のユーザ名や、PHP のデバッグ情報を抜き出す?、インジェクション攻撃?などしているようで、要注意です。
※ 追記 2020年9月 後日、WordPress に SiteGuard WP Plugin を入れて、管理者ログインの機械的なアタック(ブルートフォースアタック、総当たり攻撃)の対策をしました。その際、SiteGuard WP Plugin は http の 80 番ポートにアクセスするため、Listen 80 を有効にし、プラグインを設定したのち、Listen 80 を無効化しました。
また、http, https へのインジェクション攻撃と思われるアクセスが続いていました。そこで、インジェクション攻撃があると、404 Not Found に飛ばすよう php ファイルをカスタマイズしたところ、機械的なアクセスはかなり減りました。
まとめ
Web サーバーを運用する際に必要となるコマンドについてまとめました。
WordPress は、動作を見ただけでもセキュリティに不安を感じる作りになっています。
サーバーやホームページを構築している途中は無防備になりやすく危ないので、設定中は Web サーバーを停止して、不要なアクセスは拒否するなど、常時、対策を入れていったほうがよいですね。
関連リンク
・ Web サーバーの構築手順まとめ 【Linux】
・ 管理画面にログインできなくなったとき 【WordPress&SiteGuard WP Plugin、404エラー】
・ エラーコードのまとめ 【Webサーバー】