自分用メモ

プログラミングとかのメモを書きたいです

SAKURAのVPSで設定したこと

前提

  • SAKURA用意されたCentOS7を使用
# 全体的なアップデート
yum clean all
yum update
reboot

SELinux

無効化するつもりだったけど、最初から無効化されていた

確認

getenforce
→ Disabled

一時的な無効化

setenforce 0
getenforce 

永続的な無効化

# vi /etc/selinux/config
SELINUX=disabled

FW

有効になっていたので、そのまま有効にする

systemctl status firewalld
→ Active: active (running)

ホスト名の変更

リブート後に有効になる。

hostnamectl set-hostname skr01
reboot

localeの確認と変更

# 確認
localectl status
   System Locale: LANG=C
       VC Keymap: jp106
      X11 Layout: jp

# 設定可能なロケールの一覧
localectl list-locales | grep ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

# 変更
localectl set-locale LANG=ja_JP.utf8

# 変更後の確認
localectl status 
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp

# source /etc/locale.conf で良いらしいけど、リブート
reboot

自動起動が有効になっているもののチェック

[root@skr01 ~]# systemctl list-unit-files -t service  | grep enabled
abrt-ccpp.service                             enabled 
abrt-oops.service                             enabled 
abrt-vmcore.service                           enabled 
abrt-xorg.service                             enabled 
abrtd.service                                 enabled 
atd.service                                   enabled 
auditd.service                                enabled 
autovt@.service                               enabled 
chronyd.service                               enabled 
crond.service                                 enabled 
dbus-org.fedoraproject.FirewallD1.service     enabled 
dbus-org.freedesktop.NetworkManager.service   enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
dmraid-activation.service                     enabled 
fail2ban.service                              enabled 
firewalld.service                             enabled 
getty@.service                                enabled 
irqbalance.service                            enabled 
libstoragemgmt.service                        enabled 
lvm2-monitor.service                          enabled 
mdmonitor.service                             enabled 
NetworkManager-dispatcher.service             enabled 
NetworkManager.service                        enabled 
postfix.service                               enabled 
rngd.service                                  enabled 
rsyslog.service                               enabled 
smartd.service                                enabled 
sshd.service                                  enabled 
sysstat.service                               enabled 
systemd-readahead-collect.service             enabled 
systemd-readahead-drop.service                enabled 
systemd-readahead-replay.service              enabled 
tuned.service                                 enabled 

不要サービスの停止

# 不要サービス(postfix)の停止と自動起動の停止
systemctl stop postfix.service
systemctl disable postfix.service
→ Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
# 結局、その後、再度可動させた。(Centos7ではrootにメールが来るらしい?ので念の為)
systemctl enable postfix.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.
systemctl start postfix.service

一般ユーザを作成

useradd -G wheel hoge
passwd hoge

SSHのrootログインの無効化

PermitRootLogin no
systemctl restart sshd

ログの表示

journalctl -u sshd.service

SSHのポート変更とfirewalld

  • sshを削除して、20022を個別に開ける
  • IPv6未使用っぽいので、dhcpv6-clientも消して良さそうだけど、とりあえず保留した。
vi /etc/ssh/sshd_config

# ポート番号を20022にする(デフォルトは22)
Port 20022

# SSH2だけにする
Protocol 2

# rootでのログインを不可とする
PermitRootLogin no

# パスワードでのログインを許可する
PasswordAuthentication yes

# パスワードなしでのログインを不可とする
PermitEmptyPasswords no

# hoge というユーザだけログインを許可する
AllowUsers hoge

## 再起動
systemctl restart sshd
# 空いているサービスの確認
firewall-cmd --list-services 
→ dhcpv6-client ssh

# 空いているポートの確認
firewall-cmd --list-ports
→ なし。

# ポート20022を開ける(一時的な有効化)
firewall-cmd --add-port=20022/tcp
→ success

# ポート20022を開ける(永続的な有効化)
firewall-cmd --permanent --add-port=20022/tcp
→ success

# もともと有ったsshサービス(ポート22)を消す
firewall-cmd --permanent --remove-service=ssh
→ success

# firewalldを再起動
systemctl restart firewalld.service

# 空いているサービスの確認(sshが消えた)
firewall-cmd --list-services 
→ dhcpv6-client

# 空いているポートの確認(ssh用の20022が空いた)
firewall-cmd --list-ports 
→ 20022/tcp

SSHの接続を証明書に変更

# この作業はSSHでつなぎに行く一般ユーザでやる

# RSA&2048bitでも大丈夫っぽい。
ssh-keygen -t rsa -b 4096

# 移動
cd ~/.ssh

# 公開鍵を追記する
cat id_rsa.pub >> authorized_keys

# authorized_keys が 644 ではダメらしい。700に変更。なお変更しないと後術のエラーになる。
chmod 700 authorized_keys

メモ * ~/.ssh/にファイルが生成される * id_rsa * 秘密鍵(SSHクライアントに入れる) * パーミッションは600になっていた * id_rsa.pub * 公開鍵(サーバ側のauthorized_keysに追記する) * パーミッションは644になっていた

# 出力されるテキスト
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa): 
Created directory '/home/hoge/.ssh'.
Enter passphrase (empty for no passphrase): パスワードを入れる
Enter same passphrase again: パスワードを入れる
Your identification has been saved in /home/hoge/.ssh/id_rsa.
Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hCK6wwxOcEU/ePWkVPUEHW1hQa1VOyIyOk+dIjxjvcc hoge@servername
The key's randomart image is:
+---[RSA 4096]----+
|   .o   o.o.oo+B*|
|   . o + +   oo *|
|. o o = oo.. ..* |
|.o . o.oo + o o .|
|o.     OS+ o     |
|*.    . B +      |
|o+       o E     |
| .        .      |
|                 |
+----[SHA256]-----+

メモ:入力したパスワードは、SSHクライアント側で秘密鍵を使用する際に入力することになる。

ハマったこと

秘密鍵/公開鍵でSSH接続するときのauthorized_keysのパーミッション

# エラーログ
journalctl -u sshd.service | tail
→ 5月 03 18:52:05 skr01 sshd[3600]: Authentication refused: bad ownership or modes for file /home/hoge/.ssh/authorized_keys