随分前に書いておいてお蔵入りになってたんですが、少し書き直して上げました。
- Linux CentOS7のminimal(最小構成)をイントラネット内に設置する。
- SSH接続して出来るだけコピペで楽して設定したい。
- せっかくなので何か設置したい。そうだ。Crowiを設置しよう
- あとPostgresも設置しよう
予定は未定
今回は基本的な設定のみ。
出来るだけコピペシリーズで他に書いた記事
出来るだけコピペでウィルスチェックしたい
https://qiita.com/mm_sys/items/8cbe7019183c26fcd228
出来るだけコピペでCrowi環境を作りたい
https://qiita.com/mm_sys/items/4e94050fe85a3c6b54f0
まだ未記載
- Crowiのバックアップと復元
-
Postgresの設置。世の中にはたくさん記事があったので書かないことにしました。
今回の前提
- 実際に使う前にVMWare等(MacならVMware Fusion(有料)、Winなら非営利利用なら無料のVMware Workstation 11.0)の仮想OSで十分に実験することを強く推奨。
- SELinuxの設定は十分に検証出来ていないのでPermissiveの状態に。
- 「要変更箇所」の記載部分は適宜元の内容からカスタマイズしてください。
- こちらのスーパーユーザー権限が必要なファイルにcatコマンドでテキストを書き込む。という方法を使って書き込んでます。
用意しておくもの
- PC端末
- インターネットに接続出来る環境
- CentOS7minimalのisoイメージ
Serverの基本設定
有名なこちらを参考にしています。内容が豊富かつ的確。
https://www.server-world.info
インストールの設定等
仮想OSを使う場合
VMWare Fusionでの設定
カスタム仮想マシンを作成->Linux->CentOS(64ビット)
仮想ディスクオプションを選択:新しいディスクを作成
設定->CD/DVD(IDE)
で、ディスクイメージを選択して起動
CentOS7をインストール
言語は日本語の設定、「インストール先」をクリックして、そのまま完了をクリック。
「ネットワークとホスト名」をクリックして、イーサネットをONにして完了してインストール開始。
ネットワークはVMWareの設定で適宜変更。今回は直接接続。
ルートパスワードとユーザを設定しておく。(今回はuserというユーザを作成)
あとはインストール完了するまで一休み。
あとでユーザーを追加する場合
CentOS 7 : 初期設定 : ユーザー追加 : Server World
とりあえずSSH
まずはSSHが使えるようになるまで我慢して、ひたすら手打ちで作業。
以下はルート権限で作業。
localhost login: root
SSHのセキュリティ設定が終わるまで出来ればネットワークに繋がない状態で作業。
要変更場所
行 | 記載内容 | 変更例 | 補足 |
---|---|---|---|
9 | AllowUsers user | AllowUsers admin | 作ったユーザ名に変更 |
# viでsshd_configを設定
vi /etc/ssh/sshd_config
# :set numberを入力して行数表示可能
# 38行目(環境によっては49行目):コメント解除し変更 ( rootログイン禁止 )
PermitRootLogin no
# 64行目(78行目):コメント解除(空パスワード禁止)
PermitEmptyPasswords no
# 末尾に追記。「user」以外ではsshを使えないようにする。
AllowUsers user
# 保存してvi終了
:wq
# ファイアウォールの設定
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
# SSH再起動
systemctl restart sshd
現在のIPを確認。
ip a
コマンドを実行して現在のIPを確認。(昔ながらのifconfigの方が良いという人はyum install net-tools
をインストールすると幸せになれます。)
SUDO
「user」ユーザのコマンドにルート権限を与える。
https://www.server-world.info/query?os=CentOS_7&p=initial_conf&f=8
visudo
# 最終行に追記。
user ALL=(ALL) ALL
# 30分の間再度パスワードを入れなくて良い(一部を除く)
Defaults timestamp_timeout = 30
SSHで接続して作業
お疲れ様でした。ここからはWindowsならTera TermやMacならTerminalを使っての作業になり、コピーペーストが使えるのでだいぶ楽になります。
例えばMacのターミナルなら例えばssh user@XXX.XXX.XXX.XXX
で接続
https://ttssh2.osdn.jp
SSHに関しての詳しい説明は省略。
SELinuxをPermissiveの状態(ログだけとっておく状態)にして一旦再起動
SSH接続して下記コマンドを入力して/etc/selinux/configファイルの
SELINUX=enforcingをSELINUX=permissiveに変えてSELinuxの設定を変えてみる。
# 念のため古いファイルは残す(古いファイルは日付付きにする)
sudo cp /etc/selinux/config /etc/selinux/config_`date "+%Y%m%d_%H%M%S"`
# /etc/selinux/configの内容を書き換え
sudo sed -ri 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
## 設定変更のため一旦再起動
sudo reboot
再起動したら、再度同じようにSSH接続をしてgetenforce
で状態確認してみて、PermissiveになってたらOK
他の設定
しておいたほうが良い設定
SSHのアクセス制限
この設定をすると、外部からのアクセスが制限されて、接続出来ない状態が発生します。
実際に行う場合は本当に必要かどうかを検討して実行すること。
http://qiita.com/wwwaltz/items/db774fda77cb2d6c6922
http://qiita.com/mokemokechicken/items/d9b35c29d6ed4d60b63c
http://te2u.hatenablog.jp/entry/2015/07/01/224505
https://www.ipa.go.jp/security/fy14/contents/soho/html/chap3/freebsd/remote.html
# 元の設定ファイルを残しておいて/etc/hosts.denyと/etc/hosts.allowファイルに追記する。このときSSHで入れなくならないように注意。セキュリティが気になるなら公開鍵使ったりホスト、ゲストを固定IPにして、つながるようにしたりしましょう。
sudo cp /etc/hosts.deny /etc/hosts.deny_`date "+%Y%m%d_%H%M%S"`
sudo cat << '_EOT_' | sudo tee -a /etc/hosts.deny
sshd : all
_EOT_
# 古い設定をコピーして残す
sudo cp /etc/hosts.allow /etc/hosts.allow_`date "+%Y%m%d_%H%M%S"`
# 接続側の制限を追記。_EOT_まで一気にコピペ
sudo cat << '_EOT_' | sudo tee -a /etc/hosts.allow
# 192.168.XX.XXのIPは許可する
sshd : 192.168.
# 172.16-31.XX.XXのIPは許可する
sshd : 172.16.0.0/12
# 10.XX.XX.XXのIPは許可する
sshd : 10.
_EOT_
# SSH再起動
sudo systemctl restart sshd
ポート番号を変更する場合のみ
SSHのポートを22以外にする場合。
行 | 記載内容 | 変更例 | 補足 |
---|---|---|---|
1 | #Port 22 | Port 10022 | 変更例では22ポートにしているが、22ポートは攻撃対象になりやすいので、 それ以外のポート番号にして防衛する。 空きのポートを探して設定しよう。 |
sudo sed -ri 's/^#Port 22/Port 10022/' /etc/ssh/sshd_config
sudo firewall-cmd --zone=public --add-port=10022/tcp --permanent
sudo firewall-cmd --reload
# SSH再起動
sudo systemctl restart sshd
これ以降はSSH接続するときはssh user@192.168.XX.XX -p 10022
のようにポート番号を指定しないとssh接続出来ないので要注意。
ウィルス対策
長いので別途記事を掲載予定。
してもしなくても良い設定
VMWareを使ってる場合、open-vm-toolsを入れておく。
# open-vm-tools
sudo yum install open-vm-tools -y
sudo systemctl enable vmtoolsd.service
sudo systemctl start vmtoolsd.service
# バージョンと動作の確認
ps -ef | grep vmtools
systemctl status vmtoolsd.service
SSL
ドメイン名を持っている人はサーバ証明書を発行して設定しておくべきでしょう。
https://letsencrypt.jp/
https://www.websec-room.com/2016/10/01/2698
「必要に応じて」リポジトリ追加
特に必要がなければ入れなくても良いと思います。
https://www.server-world.info/query?os=CentOS_7&p=initial_conf&f=6
yum -y install yum-plugin-priorities
sed -i -e "s/\]$/\]\npriority=1/g" /etc/yum.repos.d/CentOS-Base.repo
yum -y install epel-release
sed -i -e "s/\]$/\]\npriority=5/g" /etc/yum.repos.d/epel.repo
yum -y install centos-release-scl-rh centos-release-scl
sed -i -e "s/\]$/\]\npriority=10/g" /etc/yum.repos.d/CentOS-SCLo-scl.repo
sed -i -e "s/\]$/\]\npriority=10/g" /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sed -i -e "s/\]$/\]\npriority=11/g" /etc/yum.repos.d/remi-safe.repo
固定IPによるネットワーク設定
CentOS7ではコマンド上でnmtui
と入力すると、GUIのようなものでネットワークの設定変更が出来ます。
でも以前の通りファイルに書き込んでネットワーク設定します。
要変更箇所
行 | 記載内容 | 変更例 | 補足 |
---|---|---|---|
5 | ...ifcfg-ensXX | ...ifcfg-ens33 | 環境に合わせたネットワーク名に変更 |
12 13 14 15 |
IPADDR="192.168.XX.XX" NETMASK="255.255.255.0" DNS1="192.168.X.XX" GATEWAY="192.168.X.XX" |
IPADDR="192.168.0.1" NETMASK="255.255.255.0" DNS1="192.168.1.1" GATEWAY="192.168.1.2" |
環境に合わせて変更 |
# ネットワークを設定しているファイルを検索
ls /etc/sysconfig/network-scripts/ifcfg-*
# ネットワークインターフェースの一覧(さっきのファイル一覧から照らし合わせて現在使っているファイルを推測)
nmcli device
# 固定IPの設定を使う場合の書き換え。
# ifcfg-ensXXの部分は先程検索したファイル名に書き換え
sudo sed -i -e "s/^BOOTPROTO=\"dhcp\"/BOOTPROTO=\"none\"/" /etc/sysconfig/network-scripts/ifcfg-ensXX
# 環境毎に変更すること。
sudo cat << '_EOT_' | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-ensXX
IPADDR="192.168.XX.XX"
NETMASK="255.255.255.0"
DNS1="192.168.X.XX"
GATEWAY="192.168.X.XX"
_EOT_
# ネットワーク再起動
sudo systemctl restart network
# GUIっぽく変更する場合はこちらを実行
# nmtui
状態を確認(ensXXの部分は適宜変更)
nmcli device show ensXX
ネットワークの状態監視
種類が多いのでお好みで。
Linuxでネットワークの監視を行えるモニタリングコマンド20選 | 俺的備忘録 〜なんかいろいろ〜
最後にシステム最適化
sudo yum clean all && sudo yum -y update
とりあえず今回はここまで