1. インストールUSBの作成

Mac で

$ diskutil list
$ diskutil eraseDisk MS-DOS UNTITLED /dev/disk3
$ diskutil unmountDisk /dev/disk3
$ sudo dd if=./CentOS-6.5-x86_64.iso of=/dev/disk2 bs=4028
$ diskutil eject /dev/disk3
$ diskutil list

* 書き込みには少し時間がかかる

2. キーボード設定と一般ユーザの追加

Ctrlキーを有効化(設定ファイル)

# vi /etc/default/keyboard
XKBOPTIONS="ctrl:swapcaps"
XKBOPTIONS="ctrl:nocaps"

# systemctl restart console-setup

Ctrlキーを有効化(コマンドライン)

$ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps']"
$ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"

一般ユーザの追加

# useradd hoge
# passwd hoge
# less /etc/passwd
# less /etc/sudoers
# usermod -G sudoer hoge
# cat /etc/group | grep sudoer

* Debian系は初めから root は使えない

3. マシンのアップデートと時刻合わせ

Debian系

# apt update
# apt upgrade
# apt full-upgrade
# apt install cron-apt    ← vi /etc/cron-apt/config
# timedatectl status
# timedatectl set-timezone Asia/Tokyo
# date

RH系

# yum update
# yum install yum-cron
# timedatectl status
# timedatectl set-timezone Asia/Tokyo
# date

4. ファイアウォールとセキュリティ

Debian系

# systemctl status ufw
# ufw enable
# ufw status verbose
# ufw status numbered
# ufw allow http
# ufw allow from 192.168.0.2/24 to any port 23098
# ufw status numbered
# ufw delete 2    ← specify a port number

RH系

# firewall-cmd --get-default
# firewall-cmd --list-services
# firewall-cmd --list-all
# getenforce
# setenforce 1
# vi /etc/selinux/config

5. 起動サービスの確認と停止

セキュリティを考慮して使わないサービスは停止。自動起動も無効にする。

# systemctl -t service | grep running
# systemctl stop [service]
# systemctl disable [service]

6. ポートの確認

# ss -tan
# lsof -i:20031    ← To find out name of services

7. ネットワークの構築

ローカルエリア内の場合

  1. L2スイッチ、又は L3スイッチ(≒ルータ)に LANケーブルが接続されていることを確認
  2. DHCP を使う場合はマシンの MACアドレスで IPアドレスを予約
  3. DHCP を使わない場合は各マシンに自分で IPアドレスを割り当てる
  4. ping を飛ばして疎通確認
# ifconfig    # ip addr show
# nmcli device    # nmcli d
# nmcli connection
# nmtui    #「自動的に接続」にチェック
# ping 192.168.0.2

ルータを超える場合

# route

SSH接続でリモートログイン

# systemctl status sshd    ← SSH が起動していることを確認
# ufw status verbose    ← ファイアウォールが SSH を許可しているか確認
# ufw allow from 192.168.0.2/24 to any port 23098    ← ポートを許可
# firewall-cmd --list-services
# firewall-cmd --list-all
# firewall-cmd --add-port=92838/tcp --permanent
# semanage port -a -t ssh_port_t -p tcp 92838    ← yum provides */semanage
# semanage port -l | grep ssh    ← SELinux もチェック
# ssh-keygen -t rsa    ← local machine ~/.ssh/id_rsa etc.
# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub    ← remote machine
# ssh-copy-id user@192.168.0.2    #local machine
# ls -ld .ssh/; ls -l .ssh/authorized_keys    ← remote machine
# vi /etc/ssh/sshd_config    ← Port22
# systemctl restart sshd
# vi /etc/ssh/sshd_config    ← Root Pass no
# ssh user@192.168.0.2
# vi .ssh/config
# ssh-add
# ssh-add -l

* ssh-copy-id など、入っていないコマンドがあったら apt や yum でインストール

マシン管理者のチェックリスト

日々

  • パッケージは最新か?
  • パッケージの更新に伴って再起動しているか?
  • 不審なプロセスが動いていないか?
  • 不審なユーザログインの記録はないか?
  • システムログに不審な動きはないか?
  • システムログは適切にバックアップされているか?

インストールとセットアップ時

  • パッケージ数は最低限か?
  • パッケージは最新か?
  • パッケージは自動アップデートさせているか?
  • ブートローダにパスワードを設定しているか?
  • 使わないサービスは停止しているか?
  • 使わないポートは閉鎖しているか?
  • 必要に応じてファイルシステムは暗号化されているか?
  • コンソールからの rootログインを禁止しているか?
  • SSH での rootログインを禁止しているか?
  • SSH の利用ポートを変更しているか?
  • SSH では公開鍵認証を導入しているか?
  • su が実行できるユーザを制限しているか?
  • sudo を許可しているユーザを適切に設定しているか?
  • ファイアウォールは適切に設定されているか?
  • ブロードキャスト宛 ICMPパケットを拒否する設定になっているか?
  • SELinux は有効になっているか?
  • システムログは適切に設定されているか?

システム変更時

  • 使わないポートを閉鎖しているか?
  • ファイアウォールの設定は適切か?
  • 不要なユーザは削除(ロック)しているか?
  • ログインが不要なユーザはログイン拒否しているか?
  • ユーザのパスワードは定期的に変更されているか?