コンテンツへスキップ

セキュリティ的にwebサイトにIPアドレスでのアクセスをブロックすることを推奨します(Ddos攻撃とか)

今回はapacheの場合を記載します

Apache設定ファイルの編集:
通常、Apacheの設定ファイルは/etc/apache2/sites-available/または/etc/httpd/conf.d/にあります。000-default.conf や default.conf という名前のファイルを編集します。

ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/html

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

# IPでのアクセスを拒否する設定
<Location />
    SetEnvIf Host ^[0-9\.]+$ ip_request
    Order Allow,Deny
    Allow from all
    Deny from env=ip_request
</Location>

ファイルを保存後にapacheを再起動します

sudo systemctl restart apache2

イラスト描いていてふとコンテストとかいままで応募したことないなと思い、
たまたま以下のコンテストがあったので応募しました。

https://www.pixiv.net/contest/GALLERIA1


結果的には、落選したのですが、優秀賞と比べ
現状の自分のレベルが客観的に見れたのでいい経験になりました。

構図による面白味が必要かなと痛感しました

cssで500エラーとなりサイトくずれが発生。何事かと思ったが、.htaccessの設定が問題

AuthUserFileの箇所を移転先のサーバのパスに変更しましょう
パスはpwdコマンドで確認出来ます。


.htaccess ファイルの更新

新しいサーバーのディレクトリ構造が異なる場合、.htaccess ファイルの AuthUserFile ディレクティブを更新する必要があります。新しいパスを指定してください。

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /new/path/to/.htpasswd
Require valid-user

webサーバ移転後にサイトが真っ白のままという事例は多々ある。
大抵は、プラグインやテーマ、コンフィグ、またはデータベース周りの修正すると治るのだが、
今回は全てだめだった。エラーもない200のレスポンスだったので相当参った。

色々と確認した結果、同じディレクトリにindex.phpとindex.htmlがあったので、
index.htmlが競合してると思い削除をしたところ解決した。

おそらく、検証中にindex.htmlを作成していてそれを消し忘れたのだと思う。

CHATGPTに聞いたところ、以下のように空のファイルのindex.htmlが優先されていただけらしい。

同じディレクトリにindex.phpとindex.htmlの両方がある場合、サーバーの設定によって優先的に読み込まれるファイルが決まります。通常、index.htmlが優先されることが多く、この場合、WordPressのindex.phpが無視されるため、WordPressのページが正しく表示されず、サイトが真っ白になることがあります。

解決方法:

  • 不要なindex.htmlを削除する。
  • サーバーの設定(例: .htaccessファイル)でindex.phpを優先するように変更する。

パッシブモードの問題らしくまずはポートを開放する
ufw allow 60000:60030/tcp
ufw reload

次にftpdの設定ファイルに以下を追記する
vim /etc/vsftpd.conf

pasv_addr_resolve=YES
pasv_address=(サーバーのIPアドレス)
pasv_min_port=60000
pasv_max_port=60030

ftpdを再起動しておわり
systemctl restart vsftpd.service

参考

https://qiita.com/TomoakiNagahara/items/e439010eb51da72ac482

サーバ移転後にサイトにエラーが出た場合、PHPのバージョンを変更することで解決するのですが、今回は解決せずに上記のエラーが発生。
調べてみるとWordPressのテーマが悪さをしていた

どうやら以下サイトによると「BizVektor」というテーマが原因だそうです。
画面真っ白など、まさにその通りでした。
https://wp-customize.net/wordpress/7834.html

結果的に以下ファイルの
23行目の「break」の行頭にコメントアウト「//」と入力して保存してサイトが表示されました

/公開フォルダ/wp-content/themes/biz-vektor/design_skins/003/003_custom.php on line 23

サーバ移転後にWordPressのサイトがTOPページ以外がエラーになることが度々あります。
理由は主に以下です
・DB内のURLの設定先が間違っている
・パーマリンクがおかしくなっている

今回は、パーマリンクがおかしくなっている場合に焦点をあてます

一番簡単な方法はWordPressにサインインしてパーマリンク設定で
何も変更せずに「変更を保存」をクリックすることで解消されます。

ただし、都合によってWordPressにサインインができないできないケースがあります。
その場合、phpMyAdminから修正します

phpMyAdminにログイン後、wp_optionsテーブルにて
option_name の列からpermalink_structureの行で編集を選択します

option_value」のフィールドでテキストを選択し、そのままエンター。
そして、「実行」を選択します

上記の後に対象のWordPressのサイトを確認すると404エラーが解消していると思います

参考
https://jp.godaddy.com/help/reset-wordpress-permalinks-to-fix-the-404-error-26351
https://jp.godaddy.com/help/reset-wordpress-permalinks-in-the-database-26352

1. バージョン確認

Postfixのバージョンを確認するコマンドです。

postfix -v

2. Postfixの設定確認

Postfixの設定を確認するコマンドです。設定ファイルの内容やパラメータが表示されます。

postconf

3. Postfixの動作確認

Postfixの設定ファイルが正しく動作しているかを確認するコマンドです。

postfix check

4. メールキューの表示

Postfixが保持しているメールキューの内容を表示するコマンドです。

mailq

5. メールログの確認

Postfixのログを確認するコマンドです。具体的なログの場所は環境により異なります。

tail -f /var/log/mail.log

6. プロセスの確認

Postfix関連のプロセスを確認するコマンドです。

ps aux | grep postfix

7. メール受信のテスト

Telnetを使用してPostfixがメールを受信できるかを確認するコマンドです。

telnet localhost 25

毎度恒例で4回目。
この業界で5年も経ってしまいました。
携わるほど未熟さを感じます。

IT
AWSはSAAの試験を2回受けましたが落ちました。
まぁ業務上で役に立った時があったので腐らなかったと思います。

2023年はコンソールでサーバの操作がメインでしたので、
まずはリハビリから始まりました。
スクリプトの自動化作業はやはり楽しかったです。
ChatGPTが主流になっていて作業時間も短縮されましたし。
むしろ、ChatGPTにより私の得意分野がなくなってしまったと思いましたが、
前提知識がないとコード調整ができないのでそれはそれでよし。

サーバ移転や証明書の設置作業が安定したかなと思います。

イラスト
イラストは今回もご縁があり文学フリマ札幌8のポスターを作成させていただきました。
https://bunfree.net/event/sapporo08/

毎度ながら案だしに苦労しましたが
熊とバイクのインパクトによってよい反響を得られたかなと思います。

その他
AWSを2回落ちた後に気がふれて電子ピアノを購入しました。
初めはYAMAHAの64鍵を買い途中からCASIOの88鍵に変更しました。
結構はまってしまい、始めてからもうそろ1年経ちそうです。
とはいえピアノは難しいので、1曲フルとはいかず、1番目のサビまででクリアとしています。
去年は「青春コンプレックス」「祝福」今は、「花の塔」を練習しています。
3カ月に1曲のペースなのは中級レベルの本を購入してしまったからレベルがあっていないせい......
友人とスタジオ借りてたまにセッションして楽しんでいます
その間にベースとギターも買いました。ギターは続いていますが、ベースはたまに弾く程度です。
コード進行に興味を持つようになりました。
あとは、ベッドやソファー、ゲーミングチェア、MACmini購入しました。
さらにラズパイやらiphoneSEやらswitchライトやら。。。
とにかく散財したので、生活環境がupgardeしたと思います。

今後
去年はピアノに時間を割きすぎたので、ITとイラストに時間を戻したいですね。
IT: Docker,ansible,Zabbix,git ここらへんを学んで自動化環境の理解を深めたいです。
イラスト: 髪の塗りの検証をしたいです。最低でもイラストを4枚は投稿したい
楽器: 練習頻度を下げたいのでピアノのレベルを初級中心に練習にしてクリアレベルを下げようかなと思います。でも、楽譜の読み込み速度が上がってきて楽しくなってきたんだよなあ

目的
数多のIPがあり複数のパスワード候補の中で、どのパスワードがssh接続できるかを知りたい

問題点
sshpassコマンドで for文を回すとなぜか一回の処理で終わる

解決方法
ssh コマンドに -n オプションを追加して解決した。

参考
https://tech.kurojica.com/archives/36145/

コード例

#!/bin/sh

success_log="success.log"
failure_log="failure.log"
passwords=('password1' 'password2' 'password3')

# ログファイルを初期化
> $success_log
> $failure_log

while read -r ip_address; do
    echo "Attempting login to $ip_address..."

    success=false

    # 3つの異なるパスワードを試行
    for password in "${passwords[@]}"; do
        sshpass -p "$password" ssh -o StrictHostKeyChecking=no -p 32122 -n user@$ip_address "echo 'SSH connection successful!'"
        
        # スクリプトの実行結果に基づいてログを分ける
        if [ $? -eq 0 ]; then
            success=true
            echo "Success: $ip_address (Password: $password)" >> $success_log
            break  # ログイン成功したらループを抜ける
        fi
    done

    # パスワード試行がすべて失敗した場合
    if [ "$success" = false ]; then
        echo "Failure: $ip_address (All Passwords Failed)" >> $failure_log
    fi

done < iplist.txt

echo "Script execution completed."


簡単な解説
passwordsに判別したいパスワードを入力します
その結果は以下に吐き出されます。
success_log="success.log"
failure_log="failure.log"

Success: xxx.xxx.xxx.xxx (Password: password1)