RHEL系のディストリビューションで、LAMPなど構築するときに最初にやることリスト。
ToDo代わりに使うでござる。
以前にこちらでも似たようなこと書いたんだけど、状況と自分の知識が変わったので他のサイトも参考にしながら新たな内容で書いてみる。
OS選定
以前に上記↑で書いたように、RHEL系のOSは一強だったCentOSのサポートが終了するので、他のディストリビューションを選ぶ必要がある。
どれを選ぶか。詳しくは上記の記事に書いているが、現時点では
- Rocky Linux
- AlmaLinux
のいずれかかなーという感じ。
どちらを選んでも大差ない。
これは、メーカーサポート(問い合わせ対応とか)を受けない前提。
メーカーサポートを受けたければ、
- Red Hat Enterprise Linux
- Oracle Linux
などをチョイスすればいいと思う。
それではOSのインストール迄終わった後にやること(本題)。↓
ミドルウェアの選定
Web
- Apache
- nginx
お固いところの業務だと未だにApacheが優勢な印象。
レンタルサーバなどはほとんどnginxに切り替えている。
個人で立てる場合はnginxでも良いと思う。
DB
RDBに限るけど、主要なものは以下の感じだと思う。
- mariaDB
- MySQL
- PostgreSQL
- Oracle
個人的に好きな順番に羅列した。
ftp(多分、不要)
ProFTPD、vsftpdなどあるが、
もう使わないかなー。
sftpでええやん。
ftpだとファイルが欠損する恐れもあるし。
え?CI/CD?なんすかそれ
OSのfirewall使うか(多分、不要)
- iptables
- firewalld
っていう選択肢があると思うが、標準はfirewalld。
RHEL7なのに、仕事で、iptablesがインストールされててファイアウォールが在ることに気づかなくて、ハマってるベンダーさんがいたので、他人が構築したサーバだと、iptablesがインストールされているパターンもあるんだなーと頭の片隅にはおいておきたい。
使わないなら、無効化する。
事前確認
systemctl status firewalld.service
↓
停止
systemctl stop firewalld.service
↓
自動起動停止
systemctl disable firewalld.service
↓
事後確認
systemctl status firewalld.service
パーティションの配分(多分、不要)
これはほとんど気にしなくていいかなー。
最近のディスク容量は大きいので。
切りたい場合だけ。
ちなみに、Linuxはパーティションじゃなくてスライスだという主張をする方がおられたが、Linuxではパーティションと呼ぶ。スライスと呼ぶのはUnix(Solarisとか)ね。(蛇足)まーこまけぇこたぁ周りに合わせればいいと思う。
SELinux無効化
ちゃんと使ってる人どれくらいいるんだろうか。
ワシは無効化する。
確認
getenforce
↓
無効化(一時的)
setenforce 0
無効化(恒久的)
vim /etc/selinux/config
SELINUX=disabled
OS再起動
↓
事後確認
getenforce
Disabled と表示されること。
日本対応
タイムゾーン
確認コマンド:
$ timedatectl status
Local time: Wed 2022-05-25 19:04:23 JST
Universal time: Wed 2022-05-25 10:04:23 UTC
RTC time: Wed 2022-05-25 10:04:23
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
ロケール
現在のロケール確認:
localectl status
ロケールについての知識:
現在は言語と地域と文字コードを組み合わせて「言語_地域.文字コード」と指定します。例えば、日本語は「ja」、日本は「JP」と表すので、「日本語」「日本」「UTF-8」という設定なら、「ja_JP.UTF-8」となります。
出典:@IT
設定:
環境変数LANGに設定したり、日本語バックインストールしたりで設定する。
さくらVPSのRocky Linux 8 は日本語パックインストールだけで済んだで。
dnf install langpacks-ja
ユーザーの追加
adduser
または
useradd
↓
パスワード設定
su - ユーザー名
passwd
ユーザーディレクトリのパーミッション
ディレクトリのパーミッションを変える必要がある場合は変えておく。
chmod 755 /home/ユーザー名
ホストネーム変更
こちらで。
bashプロンプト($PS1)変更
ホストネーム部分の変更については上述を行う。
それ以外の部分を変えたい場合、
export PS1="[\u@\h \W]\$ "
みたいに設定する。
dotfilesで当てれるようならdotfilesで対応すると早い。
~/.bashrc設定
主に、aliasを設定する。
環境変数は~/.bash_profileで設定するので、ここでは設定しないことにする。
やれる範囲で。
dotfilesで当てれるようならdotfilesで対応すると早い。
~/.bash_profile設定
環境変数を設定する。
export 変数名=内容
例)
export LANG=C
vimのインストール
個人的には「入れれるもんなら入れたいソフト」第一位。
rsyncのインストール
個人的には「入れれるもんなら入れたいソフト」第一位。(二回目)
あんだけ素晴らしい機能があって、容量404KB(2022年5月27日現在)って、、、素敵すぎる。
脆弱性には注意だが、SSH固めてれば大丈夫だろう運転。
SSH
- rootログイン禁止
- #PermitRootLogin yes → PermitRootLogin no に変更
- キーペアでログインさせる
- パスワードログインを禁止する
- PasswordAuthentication no
- パスワードログインを禁止する
など、適宜設定する。
例)
IP制限していれば、rootログイン禁止まではしない 等。
IPアドレスでアクセス制限
クラウドやVPSでやってる場合、たいてい、サービス側の管理画面で設定できるはず。
OSで設定する場合は、
- firewalldで設定
- allow_hostsとdeny_hostsで設定
などで対応する。
dnf update
RHEL7までのyum。新しくdnfに変わった。
最初にパッケージ全体を最新化する。
時刻同期されているかの確認
仕事で他のベンダーさんが対応しているサーバで時刻同期されていないせいでサーバ内のアプリが予期しない動作をする不具合が発生したのを見たことが在る。
時刻同期されているか、確認する。
RHEL8なら:
$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.sakura.ad.jp 2 10 377 583 -881us[ -881us] +/- 15ms
「*」がついてるサーバと同期している。
最初の「^」は、サーバーって意味。
古いOSなら:
ntpq -p
rootユーザーのパスワード設定
su -
passwd
Apacheを入れる場合
- DocumentRootは?
- MPMは、eventのままにする?
- logの名前
- ログローテート設定確認
- ssl化するためにmod_sslも入れる
- dnf install mod_ssl
- セキュリティ対策実施する
- 参考
- クリックジャッキングの動作確認のtelnetがうまく動かんのでその他の項に書いてあるtelnetのやり方でやる
- 「安全性の低い暗号スイートのサポートの無効化」について、既存の設定がSSLCipherSuite PROFILE=SYSTEM のようになっていれば、わりかし十分と思われ(自己責任でヨロ)
- 設定の内容は、 /etc/crypto-policies/back-ends/openssl.config に書いてある
- 参考:> crypto policyという仕組みを使って、システム全体の設定を参照している
- https://wiki.bit-hive.com/tomizoo/pg/Apache%E3%81%A7%E3%81%AEHTTP%2F2%E8%A8%AD%E5%AE%9A
- 3-2-1. sslv2,v3無効化の確認 の、確認コマンドは使えない。
- -ssl2 や -ssl3オプションが使えなくなっている
- 参考
また、proxyを利用しない場合は、以下のconfもリネームすることでモジュールを読み込まないようにしておく。(リネームする理由は、後でproxyを利用することになった場合に即座に使えるようにするため。
- proxy 関連のconf
- /etc/httpd/conf.modules.d/00-proxy.conf
- /etc/httpd/conf.modules.d/10-proxy_h2.conf
- こっちはhttp2用のproxy
コメント