php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

fail2banをインストールしたときのメモ

fail2banをインストールしたときのメモ

サーバ監視ツールでグラフを見ていたらアクセスも少ないのにロードアベレージが高い時間があったので調べてみたらSSHで不正アクセスの嵐が来ておりました。
基本的に鍵認証なのでアクセス出来ないんですがどうも負荷が高くなるのが気に入りません。

そこでfail2banというツールを導入することにしました。
fail2banは対象ログから指定した不正アクセスとみなす設定文字列を検出し指定回数出現した場合にFirewallを設定を変更して対象ログのIPをブロックするツールです。

これはAWSのEC2/amazonlinuxインストールした場合の参考です。

インストール
epel-releaseリポジトリからインストールします
epel-releaseリポジトリがインストールされていなければインストール

# sudo yum install epel-release
# sudo yum install --enablerepo=epel fail2ban

ログの場所を作る
# sudo mkdir /var/log/fail2ban

ログの場所を指定
# sudo vim /etc/fail2ban/fail2ban.conf

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# logtarget = SYSLOG  # コメントアウト
logtarget = /var/log/fail2ban/fail2ban.log # 追加
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


インスタンス起動時に有効になっておくようにしておきます
# sudo chkconfig --list
# sudo chkconfig fail2ban on
whoisを使えるようにしておく(IP情報をメールで送るときに使う)
# yum install jwhois

SSHのフィルタリング設定をしていきます
# vim /etc/fail2ban/jail.conf

sshを設定していきます
[ssh]セクションの
enabled = true
にして有効にします。
※ちょっと前に作業したときのメモをみて書いていたんですが曖昧のところがあったので今ローカルのdockerコンテナでインストールしてみたら[ssh-iptables]になっていました。デフォルトで有効にもなっていました。ここらへんは今のものに置き換えて対応してみてください。

独自のセクションを作って /etc/fail2ban/filter.d/ の中に名前とマッチするフィルターを置くことで独自設定も可能です。
例えば[dame-access]を作って/etc/fail2ban/filter.d/dame-access.confを作って設定をすることが可能。

本題に戻りフィルタリングルールを設定していきますがデフォルトである程度の記述がしてあるのでそのまま使えていました。しかしこれだけだとメールの送信などちゃんとできないこともあるので実際に設定してみての説明を以下に。

ですので他の設定項目について説明していこうと思います。
/etc/fail2ban/jail.conf

各セクションの中の設定
actionはフィルタリングに引っかかったときのアクションです
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
iptables[name=SSH, port=ssh, protocol=tcp]
iptables-multiport[name=dovecot, port="pop3,pop3s,submission,imap,imaps", protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]

name(名称)
※ここのnameは同じポートの場合は一緒になる。例えばhttpでhttp-authやhttp-nohomeなど複数設定する場合は同じnameになります
port(対象ポート※multiportは複数設定できる)
protocol(対象プロトコル)
iptables(単体ポート)、iptables-multiport(複数ポート指定)
sendmail-whoisはnameは対象フィルタ名でdestでしていしたアドレスにメール送信します。senderは送信元メールアドレス、sendernameは送信者名です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

logpathはフィルタ検出対象ログです。
maxretryは制限をかける回数設定
findtimeは出現制限時間(この時間内にmaxretryの回数出現してはならない)
bantimeはブロックしている時間

SSHのログインに対するブロック設定をした例です
/etc/fail2ban/jail.conf 内の既存項目を編集
[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=送信先メール, sender=送信メールアドレス, sendername="Fail2Ban"]
logpath  = /var/log/secure
bantime = 3600
maxretry = 3
※これでデフォルトの10分間に3回失敗すると1時間ブロックになります

以上、使ってみた個人メモでした。

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする