Web」カテゴリーアーカイブ

インターネット全般に関するカテゴリーです。

.htaccessで特定ボットのアクセスを拒否する書き方

最近、「SemrushBot」「Linespider」「BLEXBot」あたりのボットが活発に活動しているようで、Webサーバーに大量のログが残っていました。検索エンジン関係であればボットのアクセスも必要経費と見なせますが、SEO系ボットによるアクセスはサーバーの負荷になるだけなので、余り嬉しくありません。

ということで、特定のボットによるアクセスを拒否したい場合は.htaccessに以下の内容を追加してみると良いと思います。注)

SetEnvIf User-agent "SemrushBot" BadBot
SetEnvIf User-agent "Linespider" BadBot
SetEnvIf User-agent "BLEXBot" BadBot
Deny from env=BadBot

robots.txt

User-agent: SemrushBot
Disallow: /

User-agent: Linespider
Disallow: /

User-agent: BLEXBot
Disallow: /

のようにする方法もありますが、robots.txtを見ないボットもあり一々調べるのも面倒ですから、.htaccessが使えるサーバーであれあば.htaccessで拒否する方が望ましいと思います。


注) SemrushBot、Linespiderなどの文字列はアクセスログからユーザーエージェントを調べてください。(ユーザーエージェントの一部に該当文字列が含まれていれば拒否する設定になっています。)

Bingbotのクローリングを抑制してもらう設定

Webサイトのログを見ていると、Bingbotが短時間に大量のアクセスをしていることが分かり、サーバーの負荷になっているようだったのでrotbots.txtで対策してみました。

robots.txtに追加した設定は以下のような感じです。

User-agent: Bingbot
Crawl-delay: 30

Crawl-delayを追加すると、指定した秒数を空けてアクセスしてくれるようになるみたいです。今回の場合は30秒に1回以下の頻度でアクセスされることになります。(設定できる値は1から30まで)


.htaccessDenyしたくはないけれど、大量のアクセスは気になるという場合に便利なCrawl-delayですが、現状ではBingbot以外ではほぼ使えない状態みたいです。

パスワードの入力なしでSSHを使う設定

SSH公開鍵を使ってログインする設定の手順です。

1. クラアント側で公開鍵を作成

$ ssh-keygen
Enter file in which to save the key (/home/username/.ssh/id_rsa): [Enterキー]
Enter passphrase (empty for no passphrase): [Enterキー]
Enter same passphrase again: [Enterキー]
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:*******************************************
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

※既に作成済みの場合は飛ばしてください。
※パスフレーズを空欄にしておけばログイン時のパスワード入力は省略できます。
※複数のサーバーで同じ鍵を使い回すことも可能です。

2. 公開鍵をサーバーに転送

scpで送る場合は次のような感じになります。
xxx.xxx.xxx.xxxの部分はサーバーのIPアドレスまたはドメイン名です。)

$ scp .ssh/id_rsa.pub username@xxx.xxx.xxx.xxx:/home/username/

送信できたら、サーバーにログインして次のような感じで登録できます。

$ cat id_rsa.pub .ssh/authorized_keys
$ rm -i id_rsa.pub

以上で設定完了です。

ちなみに、サーバー側に.sshディレクトリがない場合はmkdirで作成してください。

$ mkdir .ssh
$ chmod 700 .ssh

3. パスワードによるログインを禁止する(おまけ)

パスワード入力によるログインを禁止して、公開鍵でのログインのみ許可するようにしたい場合は/etc/ssh/sshd_configに以下のような設定を追加してください。

PasswordAuthentication no

セキュリティ的には向上すると思いますが、万が一の場合にもパスワードでログインできなくなるので気を付けてください。

※設定の変更後はsystemctlなどでsshdの再起動(もしくは設定更新)を忘れずに。