参考URL
https://note.com/clarity/n/nb83c2ae9f8e5
https://umiosys.com/column/centos_different
セキュリティ向上のためにやること
ユーザー、rootのパスワード設定
selinux停止
iptable停止
ポート番号変更
作成されるアカウト
GCEを作成するとデフォルトでログインできるのは、ユーザーアカウント。
root権限の作成の仕方も理解しておきたい。
今rootではいっていれば、CUIに#が表示される。ユーザは$や%
https://qiita.com/smiler5617/items/f07252a4f8c1f4c34b67
https://eng-entrance.com/linux-user-show
https://eng-entrance.com/linux-root
http://www.obenri.com/_minset_cent6/account_cent6.html
ユーザーの切替
デフォルトで作成されるアカウントよりは、自身でアカウントを作ったほうがよいかと思う。
ユーザー作成後、切替えについて記載しました。
ユーザー切替を行い、切替後ユーザーの環境を使用する。
su - [切替ユーザー名]
※[切替ユーザー名]の前にスペースを入れるので注意。
このコマンドだと切り替え後にユーザーの環境も変わります。
切り替えた後にctrl + d をすると、元いたユーザーに切り替わる
ユーザー切替を行うが、環境は切替ユーザーのものにならない。
su [切替ユーザー名]
どういうことなのか?と思ったのですが、実行してみると以下の感じで
切り替わったユーザ名@instance名 元のユーザー名]
という感じで、コマンドの頭が表示される。
環境は変わらないので、切り替わった先のユーザーのファイルとかはいじれない?
ということは、権限のみ切り替えて使うとかってこと?
デフォルトで作成されるユーザーのパスワードを変えようと思ったところ、以下のエラーが発生
●● is not in the sudoers file. This incident will be reported.
なので、パスワード変更対象のユーザーに切り替えてやったらできた。
デフォルトのアカウントのパスワードは、そのユーザーアカウント自身でないと設定できなさそう。
今ログインしているユーザーについて
who,usersコマンドがあるけど、この辺を使ってみた。
これは、ユーザーを切り替えても、元々ログインしていたユーザーの情報が表示される
rootユーザーでGCEにログインする
デフォルトでrootはないのかと思いましたが、ありました。
設定変更して、rootでログインするコマンドをいれれば、rootではいれました。
gcloud compute ssh --project [project_id] --zone [zone] root@[VMインスタンス名]
rootの部分をユーザーに変更すればユーザーで入れる。
rootではいって、who usersを入力すると
rootと表示されます。
rootでログインすることは無効にして、rootにパスワードをつければ、セキュリティは向上する。
sudo passwd username
sudo passwd root
Selinuxを無効にする
これが起動したままだと、意図しない挙動が発生することがあるらしいので、無効化する。
・無効化
sudo systemctl disable firewalld
・コンフィグファイル設定
sudo cp /etc/selinux/config /etc/selinux/config_backup
sudo vi /etc/selinux/config
・起動設定確認
sudo systemctl is-enabled firewalld
sudo getenforce
(おまけ)service コマンドまとめ
サービス起動 systemctl start ${Unit}
サービス停止 systemctl stop ${Unit}
サービス再起動 systemctl restart ${Unit}
サービスリロード systemctl reload ${Unit}
サービスステータス表示 systemctl status ${Unit}
サービス自動起動有効 systemctl enable ${Unit}
サービス自動起動無効 systemctl disable ${Unit}
サービス自動起動設定確認 systemctl is-enabled ${Unit}
サービス一覧 systemctl list-unit-files --type=service
設定ファイルの再読込 systemctl daemon-reload
タイムゾーンの設定
デフォルトは以下の設定になっているみたいなので、変更する。
timedatectl
Local time: Mon 2021-05-03 21:20:17 UTC
Universal time: Mon 2021-05-03 21:20:17 UTC
RTC time: Mon 2021-05-03 21:20:17
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
以下のコマンドで日本時間に。
sudo timedatectl set-timezone Asia/Tokyo
変更OK
timedatectl
Local time: Tue 2021-05-04 06:21:04 JST
Universal time: Mon 2021-05-03 21:21:04 UTC
RTC time: Mon 2021-05-03 21:21:04
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
(おまけ)タイムゾーンコマンド
Local time タイムゾーンに従った現在の日時
Universal time 協定世界時による現在の日時
Timezone タイムゾーン
NTP enabled NTPを使用するかどうか(yes/no)
NTP synchronized NTPで同期しているかどうか(yes/no)
RTC in local TZ RTCのタイムゾーン(使用しない場合は「no」)
DST active 夏時間が有効かどうか(夏時間がない場所の場合は「n/a」)
ポートの変更
外部から22番ポートを指定してログインされないようにするため、変更しておく。
GCPのFW設定で22番ポートを許可しない設定にすると、コンソールからシェルで雪像することもできなくなる。
sshdの再起動が可能であるか念の為確認する。
sudo systemctl restart sshd
設定ファイルを待避し、書き換え
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
sudo vi /etc/ssh/sshd_config
ポートの番号は変更したものにする。
Port 22
Port xxxx
ファイルの差分を確認
diff /etc/ssh/sshd_config_backup /etc/ssh/sshd_config
sshdのサービスを再起動する。
sudo systemctl restart sshd
GCP上でFWを変更
22を許可から上記で変更したポートに変更
GCP上からは、VMページの「カスタムポートでアクセス」から接続できる
(おまけ)外部からポートを指定して接続
GCE以外の場合、以下のようなコマンドでポートを指定する。
ssh -p 56789 xxxx@aaa.bbb.ccc.ddd
ネットワーク設定、ホスト名の変更
nmcli (Network Manager CLI) コマンドを使う。
基本的にはGCPコンソール画面からできることなので、サーバー上ではやらないほうがよさそう。
一応、以下を確認。
・nmcli general hostnameも使える。でもGCPコンソール上、インスタンス名は変わってない。
・変更前、/etc/hostnameにインスタンス名が表示されていることは確認し、変更後、/etc/hostnameに反映されていることを確認。
・ ip addr showで出力されるプライベートIPは一致
参照URL
https://endy-tech.hatenablog.jp/entry/2018/09/08/140950
https://densan-hoshigumi.com/server/centos-nmcli-operation
タイムサーバーの設定は必要?
こちらは不要です。
vim /etc/chrony.conf をみると2行目に”server metadata.google.internal iburst”の記述があります。
これをわざわざ変更することはないみたいです。
実際にやってみたのですが、追加したタイムサーバーにアスタリスクがつかないので、外部のサーバーは参照しないようです。
chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
- ntp2.jst.mfeed.ad.jp 2 6 17 15 -476us[ -486us] +/- 46ms
- metadata.google.internal 2 6 17 15 -3516ns[ -14us] +/- 446us
suできるユーザーを制限する
グループの確認などをここでシたいと思います。
そもそもグループってなんであるのか?と考えたんですが、グループメールみたいに、権限を付与して作業できる範囲を決めておいたり、部署ごとに分けて管理しやすくするのが目的ではないかなと思います。
まず、グループ一覧を確認
cat /etc/group
以下のコマンドでグループに追加できる。
usermod -g wheel test1
追加できてるか確認。※ここではちゃんとユーザーを指定しないとだめ。
id test1
uid=1002(test1) gid=10(wheel) groups=10(wheel)
以下のコマンドでsuができるようになる。
su -
言語設定を変更する
シェルについて学んでいた時についでにやってみました。
以下のコマンドをうちます。
sudo localectl set-locale LANG=ja_JP.UTF8
sudo systemctl reboot
以下のコマンドをうつと変更になっていることが確認できます。
env | grep LANG
LANG=ja_JP.UTF8
プロセス管理
GCEには初期状態だとpstreeがなかったので、インストールしました。
sudo yum -y install psmisc