Linux memo 2021/01/03 CentOS Stream 8 編

● 前置き
長い間塩漬け運用していたCentOS6がEOFになっちゃったので移行することにした。CentOS 8はプロジェクトを中止する予定だし、別のRHELクローン立ち上げはまだまだ時間かかるだろうし、ということで素直にCentOS Stream 8を移行先に選んだ。

● dnf
yum から dnf に変わった
オプション類がだいたい一緒なのでノリでそのまま使える。

● selinux
どうして人はみなselinuxを無効にしてしまうのだろうか(自戒を込めて)
/etc/selinux/config
SELINUX=disabled

● 公開鍵の暗号強度の確認
ssh-keygen -l -f ~/.ssh/authorized_keys
昔作ったのが RSA 1536 だったので、作り直すことにした。オプションなしに作ったら RSA 3072 になった
ちなみに、ssh-keygenで作ったときのファイルの id_rsaが秘密鍵、id_rsa.pubが公開鍵、「わからないから両方送ります」とかしないように

● firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --permanent --new-zone=rarullocal
firewall-cmd --permanent --zone=rarullocal --set-target=ACCEPT
firewall-cmd --permanent --zone=rarullocal --add-source=192.168.0.0/16
firewall-cmd --permanent --zone=rarullocal --add-service=samba
firewall-cmd --reload
AllowZoneDriftingがどうとか怒られるので、マルチゾーンにならないようにした上で、
/etc/firewalld/firewalld.conf
AllowZoneDrifting=no

● sshd
/etc/ssh/sshd_config
Port [NewPort]
PasswordAuthentication no
パブリックサーバだと最近はつつくやつが非常に多いので、ポート番号変えた上でパスワード認証なしくらいにしとかないと怖い。

● dnsmasq
/etc/dnsmasq.conf
domain-needed
bogus-priv
local=/www.rarul.com/
/etc/hosts
192.168.123.234 www.rarul.com

● chronyd
#pool 2.centos.pool.ntp.org iburst
server YOURSERVER iburst
allow 192.168.0.0/16
port 123
(port 123 は、ntpdを内部公開したい場合に)

● Apache(httpd.conf)
あんま晒したくないので部分的に、、
 ※ 2021/02/02訂正、.gitはディレクトリなので、FilesでマッチさせるのではなくてFilesDirectorymatchでマッチさせる。
/etc/http/conf/httpd.conf
<FilesDirectorymatch "^/.*/\.git/">
Require all denied
<Files/Directorymatch>
#AddDefaultCharset UTF-8
ExpiresActive on
ExpiresDefault "access plus 3 minutes"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/jpg "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/ico "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 days"
ExpiresByType image/vnd.microsoft.icon "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType text/javascript "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType audio/mp3 "access plus 1 days"
AddOutputFilterByType DEFLATE text/plain text/html text/css
AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml application/atom+xml application/rdf+xml
AddOutputFilterByType DEFLATE text/javascript application/x-javascript application/javascript

/etc/httpd/conf.d/ssl.conf
の SSLCertificateFile, SSLCertificateKeyFile を Let's Encryptに合わせて変更。
warningログがうざかったので使う予定ないモジュールをコメントアウト
/etc/httpd/conf.modules.d/00-proxy.conf
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so

● .htaccess
order deny,allowとかSatisfy AnyとかがApache-2.4から使えなくなったんでその置き換えで。
AuthUserFile /home/rarul/.htdigest
AuthGroupFile /dev/null
AuthName "for members only"
AuthType Digest
<RequireAny>
Require all denied
Require user [USERNAME]
Require ip 192.168. 127.0.0.1
</RequireAny>
Digest認証はmd5なのでそれほど強度強くない。HTTPS化が大前提として、本気で認証したいなら...なにがいいんだろ。HTTPSなら他のid/pass方式でも大差ない気がしてきた。

● MariaDB
vi /etc/my.cnf.d/client.cnf
[client-mariadb]
default-character-set = utf8mb4
データベース作るときに明示的にデフォルト文字コードを設定
create database YOURDB character set utf8mb4;
それでも、phpからアクセスするときに SET NAMES utf8mb4 しないと化けることがあったけど、正直良くわからんし、SET NAMES utf8mb4 すればよいから、もう原因追求諦めた。
utf8mb4じゃない文字コードで作ってしまったDBは、潔くutf8mb4じゃない文字コードのまま運用したほうが無難げ。(特にutf8とutf8mb4との違いには要注意) 文字コードをutf8mb4に変換したい場合は、移行作業とは別の機会を構えたほうがよいと思う。これでようやくSET NAMES binaryを卒業できた。
あとマジメにチューニングしてないけどRAM余り気味のサーバなので適当に盛っといた。
/etc/my.cnf.d/mariadb-server.cnf
[mysqld]
hread_cache_size=16
query_cache_size=128M
sort_buffer_size=8M
join_buffer_size=64M
read_buffer_size=1M
read_rnd_buffer_size=2M
myisam_max_sort_file_size=64M

● PHP
ereg -> preg_match
mysql_connect -> mysqli_connect
mysql_query -> mysqli_query
mysql_real_escape_string -> mysqli_real_escape_string
mysql_fetch_assoc -> mysqli_fetch_assoc
mysql_free_result -> mysqli_free_result
mysql_close -> mysqli_close
他にもあった気がするけど、まぁ似たようなノリでなんとかなるでしょ。

● Let's Encrypt
/etc/letsencrypt/を移行しておいた上で、certbot-autoをダウンロードして実行するだけ、あとは全部勝手にやってくれる。すごい。

● その他(省略したとこも含めて)
centos8stream.txtを見てね >未来のらるるさんへ

このブログ記事について

このページは、らるるが2021年1月 3日 05:21に書いたブログ記事です。

ひとつ前のブログ記事は「Linux memo 2020/12/29」です。

次のブログ記事は「Linux memo 2021/01/09(Fri) ネットワーク雑多編」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.5.0