#
はじめに
実家で初めて建てたサーバがガバガバセキュリティだったので、今回は対策をしっかり考えてその上でサーバを設定したいと思います。
#
前回設定したこと
- 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
|
- 対象のドメインに対する Apex ドメイン
- Cloudflare にログインするメールアドレス
- Cloudflare のグローバル API キー
- 更新したいドメイン。カンマ区切り
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の設定は無事完了しました。