*

CentOS7 初期設定

公開日: : 投稿者:raru CentOS7, Linux, サーバ

しばらく振りになりますが、ひっそりとWordpressの移設を行っていました。
お仕事が多忙を極め、今もそれなりに多忙ですが少し時間が取れたので少しずつ更新できればと思っています。
特にCentOS7には慣れてきたのでそのノウハウを載せていければなぁ〜と思います。

今回はCentOS7の初期設定で以下の流れで設定を行いました。
・sshの設定
・ユーザの追加
・鍵の生成
・root系権限の設定
・ホスト名の設定
・cronの設定
・chrony(ntp)の設定

firewallの設定をしていないのはCentOSはデフォルトではsshくらいしかポートが空いていないからです。
また、ssh接続で設定を行う場合、鍵をクライアントに持ってくる前にsshクライアントを切断してしまうと終わるので気をつけて下さい。

sshの設定

初期状態ではrootユーザのアクセスやパスワード認証が有効になっているため、それらを無効化していきます。
と、その前に。

[root@localhost ~]# firewall-cmd --remove-service=ssh --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

firewall-cmdにより、sshのサービスを停止します。
CentOS7からはiptablesをラップしたfirewalldというものがデフォルトで利用されるようになりました。
以前のiptablesになれた人には苦労の原因となるもののうちの一つです。

serviceというのはipなどの設定が記載されたファイルでデフォルトでいろいろと用意されています。
permanentを指定することで設定を永続的なものにしますが、再読み込みが必要になります。
permanentを指定しない場合には、設定は一時的なものになりますが再読み込みが不要です。

これにより一瞬の隙をついた不正侵入を防ぎます。
サーバは立てた瞬間から謎アクセスで攻撃されているものです。

では本題のsshの設定を行います。

[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config
17a18
> Port ***** //待ち受けポート変更
49a51
> PermitRootLogin no //rootによるアクセスの無効化
79c81,82
< PasswordAuthentication yes
---
> PasswordAuthentication no //パスワード認証無効
> PermitEmptyPasswords no //空パスワードを認めない

[root@localhost ~]# systemctl restart sshd 

しれっとポートを変えていますが、この設定は別に行う必要はありません。
会社で設定をする際にはむしろ変えない方がいいかもしれません。その企業のポリシーにもよりますが、管理が面倒になるので管理しきれる自信と企業風土がある人のみやりましょう。
22番ポートはWELL KNOWN PORTなので、悪者がたくさんアクセスしてきますので念のため変更を行っています。

次の行ではコピーを取得して、デフォルトの設定を残しています。
サーバの設定をいじる時には常にコピーを取る癖をつけておくと安全です。

バックアップを取得していると、3行目のようにdiffコマンドで自分が何を変更したのかを確認することができるようになるので忘れても安心。
ちなみに、数字の間にあるaがadd, cがchangeです。

上記の設定により、このサーバには鍵を利用した接続でしかアクセスできなくなりましたので、firewallを設定します。

[root@localhost ~]# firewall-cmd --add-port=*****/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

先ほど設定したポートを解放していきます。
tcpで*****番のポートを永続的に解放しつつ、再読み込みですね。

管理用ユーザ追加

サーバの管理やrootによる直接アクセス防止用にユーザを作成します。
今回追加するユーザを管理者として設定を進めていきます。

[root@localhost ~]# useradd hogehoge
[root@localhost ~]# passwd hogehoge
[root@localhost ~]# usermod -G wheel hogehoge

hogehogeの部分は自分の名前なり通り名なり自由に置き換えてください。
wheelグループにユーザを追加していますが、これは後述します。
これにてユーザ追加は完了です。

ユーザに鍵を生成

先ほど作成したユーザのssh鍵を作成します。
これをclientに持っていくのが面倒だったりしますが、そこは各々好きな方法でファイトです。

[root@localhost ~]# su - hogehoge
[raru@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/raru/.ssh/id_rsa):
Created directory '/home/raru/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
.....

[raru@localhost ~]$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
[raru@localhost ~]$ chmod 600 ~/.ssh/authorized_keys
[raru@localhost ~]$ exit

作成したid_rsaファイルをクライアントに持って行って、ssh接続ができることを確認したらsshの設定は完了です。
ここまでがなんとなく一段落という感じがします。

root系権限設定

次にroot系の権限を設定していきます。
sudoやsuコマンドの権限ですね。
これによりroot権限でコマンドを実行できるユーザを制限していきます。
この設定をしないと今後ユーザを追加するとそれが=でセキュリティの低下につながってしまいます。

[root@localhost ~]# cp /etc/pam.d/su /etc/pam.d/su.org
[root@localhost ~]# vi /etc/pam.d/su
[root@localhost ~]# diff /etc/pam.d/su.org /etc/pam.d/su
6c6
< #auth         required        pam_wheel.so use_uid
---
> auth          required        pam_wheel.so use_uid
[root@localhost ~]# cp /etc/login.defs /etc/login.defs.org
[root@localhost ~]# vi /etc/login.defs
[root@localhost ~]# diff /etc/login.defs.org /etc/login.defs
72a73
> SU_WHEEL_ONLY yes

両方の設定によりsuによりroot化できるユーザをwheelに属したユーザのみとしています。
最近は2つ目の設定はなくても大丈夫なんだそうです。
また、arch linuxなどではsu-lファイルも編集する必要があったりするとかしないとか。
su -でroot化しようとした場合にsu-lファイルも編集しないと制限が効かないことがあるようです。
初めて知りました。

ホスト名設定

現在ホスト名がlocalhostのままですので、設定していきます。
個人で勉強用であれば特に設定しなくても支障はありません。

[root@localhost ~]# nmcli g hostname heavy-metal-explorer
[root@localhost ~]# hostname
heavy-metal-explorer

CentOS7からネットワーク系の設定はnmcliコマンドで行います。
ipの変更などなど、ifcfg-eth0とかのファイルの中身は全部これです。
これもCentOS6以下に慣れていた人にとってはやる気を削ぐ部分ですね。
firewallやらnicの設定やらでコマンド変えすぎなんですよ。

cron/ntpの設定

cronの設定

CentOS7からは初期状態でインストールされているcronが今までのものと違います。
CentOS6以下: noanacron
CentOS7: anacron
anacronは今までのcronと違って1時間ごととか何時何分とかの細かい指定でちゃんと動いてくれないようです。
それでは役に立たないのでnoanacronに差し替えます。

[root@heavy-metal-explorer ~]# yum remove cronie-anacron
[root@heavy-metal-explorer ~]# yum install cronie-noanacron

詳細はこのサイトさんがわかりやすかったです。

でもこれを見るとanacron削除しなくていいんじゃないかという気がしてきました。
本当に削除が必要なのかは、ちょっと自信がないです。
CentOS7を利用してる方たちは削除して入れ替えているようです。競合するのでしょうか。
競合する気があまりしないんですけどね。いずれ調べよう。

chrony(ntp)の設定

CentOS7ではntpも変わっています。
chronyがデフォで入っていたりいなかったりする場合があるのですが、入っていなければインストールしましょう。
yum install chronyで入ります。

[root@heavy-metal-explorer ~]# systemctl -a | grep chrony
chronyd.service loaded active   running   NTP client/server
[root@heavy-metal-explorer ~]# systemctl is-enabled chronyd
enabled

設定といいつつ設定していませんね。
設定を変更する場合は「vi /etc/chrony.conf」で変更しましょう。

あとがき

初期設定レベルでこの変わりようです。
初期設定はOSにデフォルトで組み込まれているものが多いから変わっているとも言えますけどね。

特にfirewallやnmcliは慣れが必要です。firewallはなんだかんだ込み入ったことするときにdirectとかいいつつそれiptablesコマンドじゃんっていうものがあるところがまたダサい感じがしてしまいます。
ただ仕組み的にはiptablesよりとても進化しているので、結局慣れですね。
CentOS6以下のようにnicファイルを直接編集してもnmcliからやらないと再起動などの拍子に設定が戻ってしまったりファイルが壊れたりするので、少しずつ慣れていきましょう。

関連記事

no image

PidoraにZabbix2.2を入れてみた

※完璧な状態ではありません。 こちらの記事のzabbix設定周りを行うと解決する可能性がありま

記事を読む

no image

CentOS7にGitLab 9をインストールして日本語化

最近CentOS7にGitLabを入れて、日本語化してみました。 最近9が出たようで、あまり参考に

記事を読む

no image

CentOSにSSH鍵認証で接続するGitリポジトリを作成

今回友人と共同開発を行なうと思い、ざっくりとGitサーバを建ててみました。 私はSVNの方が好きな

記事を読む

no image

Raspbian(jessie)にssh鍵認証で接続

Debianがjessieになって、sshd_configのデフォルトの設定が変わりました。 それ

記事を読む

no image

ZabbixでSSL証明書期限チェック

zabbixは初期状態でhttps系の監視が微妙なため、証明書期限の監視設定などを行ってみたいと思い

記事を読む

no image

CentOS 7 で ruby on rails 環境構築

気づいたらCentOS7が出てから時間が立っていました。 そろそろ新しく建てるサーバはCentOS

記事を読む

no image

個人でのProxyサーバ利用用途

Proxyサーバを建てたいということで、利用用途を考えていました。 まずサイト高速化であったり冗長

記事を読む

no image

RaspberryPi2のFedora22にOpenVPN構築

コツコツと以前購入してoverclockしたraspberry pi2にOpenVPNを構築していま

記事を読む

no image

CentOS7にwordpressを移行

前の記事で初期設定を行ったサーバにwordpressを移設します。 wordpressの移設は案外

記事を読む

no image

Raspbianをwheezyからjessieにアップグレード

2015/04頃にdebianのバージョン8 jessieがリリースされたようです。 それに伴い、

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑