
Debian の「全て」を理解してまとめておく。
セットアップ
- Debian はインストール時に root と一般ユーザが登録される
- sudoコマンドがないので「su -」で root になって操作する。root が馴染み深くなる
最低限の環境設定
$ cat /etc/debian_version $ vi .bash_aliases alias ls='ls -lh --color=auto' alias less='less -N' $ . ~/.bash_aliases
SSH接続
[港] $ systemctl status sshd $ ss -tan # vi /etc/ssh/sshd_config Port 55555 # systemctl sshd restart $ ss -tan $ lsof -i:55555 # ls /etc/ssh $ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub # vi /etc/ssh/sshd_config PasswordAuthentication no $ cat ~/.ssh/authorized_keys
[領内] $ ssh-keygen -t ed25519 $ vi ~/.ssh/config HOST hoge HostName moge.vs.sakura.ne.jp Port 55555 $ ssh-copy-id hoge $ ssh-add $ ssh-add -l $ ssh hoge
セキュアなサーバ設定
- 起動サービスの確認と停止。セキュリティを考慮して使わないサービスは停止、自動起動も無効にする。
# systemctl -t service | grep running # systemctl stop [service] # systemctl disable [service]
- デフォルトで 稼働しているサービス(Debian系)
- デフォルトで 稼働しているサービス(RH系)
- 不要なサービスは脆弱性の元なので全て停止する。ランレベル3(CUIモード)で自動起動するサービスを確認して停止、自動起動をオフにする
# chkconfig --list | grep 3:on # service auditd stop # service netfs stop auditd(コマンド監視), ip6tables(IP6利用), netfs(NFSクライアント), postfix(SMTPサーバ利用)
- メールサーバなど、ユーザアカウントは必要だけどシェルログインは不要なユーザは、ログインシェルを「/sbin/nologin」か「/bin/false」にする
#useradd -s /sbin/nologin march #usermod -s /sbin/nologin march
パッケージ管理
- 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
$ apt list --installed # apt update # apt upgrade # apt full-upgrade
- ソフトウェアパッケージのアップデートを自動化する。そのためにも、ソフトは基本的にapt等パッケージ管理システムからインストールする
# apt install cron-apt ← vi /etc/cron-apt/config(アプデ自動化) # timedatectl status # timedatectl set-timezone Asia/Tokyo # date
- SSHで root ログインを禁止する
- rootログインが可能な端末名を全て削除して、rootログインを全面的に禁止する
/etc/ssh/sshd_config #PermitRootLogin no # echo > /etc/securetty
- ユーザがディスクの空き容量を使い切ってしまわないように、ユーザが利用するファイルシステムには独立したパーティションを割り当てる
- 変更されないデータを格納するファイルシステムは、リードオンリーでマウントすることによりファイルの改竄や破壊行為を抑えられる
- アドレススキャン(港探索)回避のためにブロードキャスト宛リクエストを無視する。下記の設定ファイルに追記
/etc/sysctl.conf net.ipv4.icmp_echo_ignore_broadcast=1