Featured image of post ガバガバセキュリティのルーターを設定したらsshの設定が終わった話 ~対策編~

ガバガバセキュリティのルーターを設定したらsshの設定が終わった話 ~対策編~

サーバ設定の覚書

# はじめに

実家で初めて建てたサーバがガバガバセキュリティだったので、今回は対策をしっかり考えてその上でサーバを設定したいと思います。

# 前回設定したこと

  • debian をパソコンにインストールした。
  • MAC アドレスに対応付けて DHCP を固定で振るようにした。
  • SSH を秘密鍵で接続できるようにした。
  • ddclient の設定をした
  • 80 番と 22 番を特定のアドレスに転送するようにした。

# 今回やること

  • SSHを秘密鍵でしか入れないようにする
  • SSHで開けるポートを22番以外にする
  • SSH,nginxでログを取る
  • ufwの設定をする

# やり方

# ddclinentの方法

参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
/etc/ddlient.conf


protocol=cloudflare
use=web,web=myip.dnsomatic.com
ttl=1

zone=example.com                     # ----- 1
login=<[email protected]>               # ----- 2
password=<Global Cloudflare API Key> # ----- 3

www.example.com,yeee.example.com,    # ----- 4
  1. 対象のドメインに対する Apex ドメイン
  2. Cloudflare にログインするメールアドレス
  3. Cloudflare のグローバル API キー
  4. 更新したいドメイン。カンマ区切り

Apexドメインとは頂点にあるドメインのことで、サブドメインと相対する存在らしい。

# SSHの設定

# SSHを22番ポート以外で出す

1
2
3
/etc/ssh/sshd_config
+ Port <公開したいのポート>
- Port 22

# SSHに秘密鍵でしか入れないようにする

.ssh/authorized_keysに公開鍵を登録する

# パスワードでのアクセスを禁止する

参考

1
2
3
/etc/ssh/sshd_config
+ PasswordAuthentication no
- PasswordAuthentication yes

# SSHのログを出す方法

参考

1
2
3
4
5
#Logging
- #SyslogFacility AUTH
- #LogLevel INFO
+ SyslogFacility AUTH
+ LogLevel INFO

サイトにはLogLevel DEBUGとあったが、そこまでログを細かく取らなくてもいいかなということでINFOにした。

# nginxの設定

ログを定期的に出したい

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

log_dir="/var/log/nginx"  # ログディレクトリのパス
log_file="access.log"     # 元のログファイル名
archive_dir="/path/to/archive"  # ログアーカイブディレクトリのパス
archive_prefix="access_"        # アーカイブファイルの接頭辞

# ファイル名に日付を追加してアーカイブする関数
archive_logs() {
    local current_date=$(date +"%Y%m%d")
    local archive_file="${archive_prefix}${current_date}.log"
    
    # ログファイルをアーカイブディレクトリに移動
    mv "${log_dir}/${log_file}" "${archive_dir}/${archive_file}"
    
    # Nginxプロセスに対してログの再オープンシグナルを送信
    kill -USR1 $(cat /var/run/nginx.pid)
}

# 新しいログファイルを作成する関数
create_new_log() {
    # Nginxプロセスに対してログの再オープンシグナルを送信
    kill -USR1 $(cat /var/run/nginx.pid)
}

# シェルスクリプトのメイン処理
while true; do
    # ログファイルの存在チェック
    if [ -f "${log_dir}/${log_file}" ]; then
        # アーカイブ処理
        archive_logs
    fi
    
    # 新しいログファイルの作成
    create_new_log
    
    # 1日待機
    sleep 86400  # 24時間(1日)の秒数
done

chatGPTに聞きました。

# ufwの設定

ファイアウォールの設定です

1
2
3
4
5
sudo apt install ufw
sudo systemctl enable ufw
sudo systemctl start ufw
sudo ufw allow <開けたいポート>
sudo ufw enable

# 終わりに

とりあえず必要な設定はしたつもりです。あとはこれで運用してみてどうなるかですかね。 設定できたら報告記事書きます。

追記(2023/12/09)

nginxの設定はまだやっていないですが、とりあえずSSHの設定は無事完了しました。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。