www.smiyasaka.com は、 2021 年 1月から CentOS Stream 8 にバージョンアップしました。 |
● CentOS 8.X 、CentOS Stream 8 ● ● httpd-2.4.46 のインストールと自宅サーバ構築 ● |
アクセス数 昨日 8 今日 1 累計 4,944 |
CentOS-8.X.XXXX-x86_64-dvd1.iso 又は、CentOS-Stream-8-x86_64-202XXXXX-dvd1.iso を使用し、自宅サーバを構築しました。 |
||
CentOS Stream 8 ( CentOS 8-Stream ) の サーバ構築 | ||
CentOS Stream 8 でのサーバ構築を |
||
※ 注 意 事 項 ※ |
||
ディレクトリ等の名前は、私のサーバ機の環境での名前を使用していますので、利用するときには、
あなたの環境に合わせて変更してください。 |
||
目 次 |
||
※
[ 総てを表示する ] ※
0.
[ 現在稼働中のサーバ機のスペック ]
1.
[ CentOS 8.X-x86_64 のインストール ]
3.
[ 事前にダウンロードするファイル一覧と探し方 ]
4.
[ セキュリティ対策のため停止したサービス ]
7.
[ ファイルの転送プログラムの作成 ]
8.
[ サーバの時刻を日本標準時に同期させる ]
9.
[ リポジトリを導入する ]
10-1.
[ apache2( httpd-2.4.46 )のインストールと設定 ]
10-2.
[ SELinux を有効にした時の apache2 のポリシー設定 ]
10-4.
[ 圧縮パッケージ Brotli を使用しての圧縮処理の追加 ]
12.
[ clamav( アンチウィルスソフト )のインストール ]
13.
[ chkrootkitの導入 ]
14.
[ sendmail のインストール ]
16.
[ 漢字コード変換用に nkf のインストール ]
17.
[ 自前プログラムでダイナミック DNS を定期更新させる。 ]
18.
[ 自宅サーバの管理・運用監視 等 ]
|
||
0. 現在稼働中のサーバ機のスペック |
||
サーバ機( OS バージョン CentOS Stream 8 64bit )の |
1. CentOS 8.0.1905-x86_64 のインストール |
||
2020年 6月15日付けで CentOS 8.2.2004 がリリースされています。 |
||
2020年11月に、新しい Mousec Pro 小型 PC ( 2020年 製造 型番 Mouse Pro-M591F-WA )にインストールをしてみました。 |
||
[ CentOS 8.0 〜 8.2.2004 DVD からインストール手順 ] の詳細は、 |
||
※※ 参考情報 ※※ |
2. CentOS 8.X 再起動後のコンソールからの各種設定(SELinux を含む) |
||
|
||
Tera Term の文字化けを防ぐため、漢字コードをサーバ機側と同じ漢字コード EUC に必ず設定し、
「設定の保存」をしてください。 接続すTCPポートは、私の場合 2222 に変更しています。 |
4. セキュリティ対策のため停止したサービス |
||
暫定的に停止したサービスは、下記のとおりです。 |
||
サービス名 |
機 能 |
下記は、サービスを一括停止するプログラムです。
------------------------------------------------------------
vi service_stop.sh
#!/usr/bin/sh
systemctl stop atd.service
systemctl disable atd.service
#systemctl stop auditd.service
systemctl disable auditd.service
systemctl stop kdump.service
systemctl disable kdump.service
systemctl stop lvm2-monitor.service
systemctl disable lvm2-monitor.service
systemctl stop mdmonitor.service
systemctl disable mdmonitor.service
systemctl stop rngd.service
systemctl disable rngd.service
systemctl stop smartd.service
systemctl disable smartd.service
systemctl stop tuned.service
systemctl disable tuned.service
systemctl stop dm-event.socket
systemctl disable dm-event.socket
echo "サービス_STOP 完了"
-------------------------------------------------------------
属性を変更して、実行します。
chmod 755 service_stop.sh;sh service_stop.sh
|
5. ファイアウォール( firewalld )と Systemd |
||
私が設定したファイアウォール( firewalld )の内容は、下記の通りです。 |
vi /etc/firewalld/zones/public.xml ------------------------------------------------------------------ <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not……… computers on networks to not harm your computer. Only ……… connections are accepted.</description> <service name="ssh"/> <service name="dhcpv6-client"/> <----- ここを修正 <port protocol="tcp" port="2222"/> <----- 追加したポート </zone> ------------------------------------------------------------------ 下記の様に編集します。 <service name="dhcpv6-client"/> ↓ ↓ ↓ <service name="ntp"/> <---- 123/tcp の有効化 <service name="http"/> <---- 80/tcp の有効化 <service name="ftp"/> <---- 21/tcp の有効化 <service name="https"/> <---- 443/tcp の有効化
上記の操作を sed コマンドで一括処理してみました。
cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public_bak.xml;\
sed -i -e"s/ssh/http/g
s/<service name=\"dhcpv6-client\"\/>/<service\
name=\"https\"\/>\n\
<service name=\"ntp\"\/>\n\
<service name=\"ftp\"\/>/g" /etc/firewalld/zones/public.xml
編集保存したら、firewall-cmd --reload で設定を反映します。 |
6. Tera Termでvsftpd( FTPサーバ )を転送しインストール |
||
ここでは、先人の知恵を借りて、vsftpd のインストールと設定に挑戦してみました。 |
||
vsftpd-3.0.3-31.el8.x86_64.rpm は、Tera Term の転送機能を利用してホームディレクトリに読込み |
||
cd /usr/local/src/;\ |
||
編集済の vsftpd.conf が有る場合には、Tera Term の転送機能を利用してホームディレクトリに読込み |
||
下記の操作を sed コマンドで一括処理してみました。下記を実行します。 cp /etc/vsftpd/vsftpd.conf /home/miyasaka/vsftpd.conf.bak; \ sed -i -e "/anonymous_enable=/s/YES/NO/ /xferlog_enable=/s/YES/NO/ # 先頭の # を削除 /#ascii_upload_enable/s/^#// /#ascii_download_enable/s/^#// /#chroot_local_user/s/^#// /#chroot_list_enable/s/^#// /#chroot_list_file/s/^#// /#ls_recurse_enable/s/^#// /listen=/s/NO/YES/ /listen_ipv6=/s/YES/NO/ ##### ここからは、最終行後に追加です。 \$a\local_root=public_html\n\ use_localtime=YES\n\ text_userdb_names=Yes\n\ force_dot_files=YES\n\ pasv_min_port=50010\n\ pasv_max_port=50020" /etc/vsftpd/vsftpd.conf vi /etc/vsftpd/vsftpd.conf
|
||
B B-1 Port 50010 〜 50020 を有効化( 追加 )する。 echo "○○○○" >> /etc/vsftpd/chroot_list; \
echo "vsftpd:ALL" >> /etc/hosts.deny; \
echo "vsftpd:192.168.0." >> /etc/hosts.allow; \
systemctl start vsftpd; \
systemctl enable vsftpd
ユーザー名 ○○○○・接続を許可するIPアドレスは、あなたの環境に合わせてください。 |
7. ファイルの転送プログラムの作成 |
||
※※ 準備中 ※※ |
8. サーバの時刻を日本標準時に同期させるル |
||
(設定方法等は、先人の知恵を借りて行いました。) cp /etc/chrony.conf /home/miyasaka/chrony.conf.bak; \
sed -i -e "/pool/s/^/#/
/pool/a/pool/aserver\ ntp\.nict\.jp\n\
server ntp1\.jst\.mfeed\.ad\.jp\n\
server ntp2.\jst.mfeed\.ad\.jp" /etc/chrony.conf
A chrony を再起動します。 ( chrony のサービス名は、chronyd です。) |
||
MS Name/IP address Stratum Poll Reach LastRx Last sample
===========================================
^+ ntp1.jst.mfeed.ad.jp 2 9 377 125 -462us[ -462us] +/- 93ms
^* ntp2.jst.mfeed.ad.jp 2 10 377 1019 +140us[ +265us] +/- 97ms
以下のように*印がついていたら同期ができています。
(起動してから同期までに10分ぐらいかかります。)
|
9. リポジトリを導入する |
||
|
10-1. apache2( httpd-2.4.46 )のインストールと設定 |
||
@ httpd-2.4.46 を展開して apr を展開したファイルをフォルダ
./httpd-2.4.46/srclib/ へ書き込む。 tar xzvf httpd-2.4.46.tar.gz; \ chown -R root. httpd-2.4.46; \ cd ./httpd-2.4.46/srclib 2. apr を展開する。 tar xzvf apr-1.7.0.tar.gz; \
chown -R root. apr-1.7.0/; \
mv apr-1.7.0 apr; \
tar xzvf apr-util-1.6.1.tar.gz; \
chown -R root. apr-util-1.6.1/; \
mv apr-util-1.6.1/ apr-util A configure( make 用にソースファイルの配置をする ) の実行 cd /usr/local/src/httpd-2.4.46; \ ./configure \ --with-included-apr \ --enable-rewrite \ <---- リクエストされた URL の 動的書き換えを行うモジュール --enable-so \ <---- モジュールの有効化 --enable-deflate=shared <---- 圧縮する処理を追加
SSL を有効にしたい時には、[./configure \]の後に[--enable-ssl \]を追加します。 |
||
・enable-rewrite : Rewriteサポート(mod_rewrite) |
||
以下で、終われば、OK ------------------------------------------------------------------
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
configure: summary of build options:
Server Version: 2.4.46
Install prefix: /usr/local/apache2
C compiler: gcc -std=gnu99
CFLAGS: -g -O2 -pthread
CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE
LDFLAGS:
LIBS:
C preprocessor: gcc -E
|
||
B make( コンパイル ) & install make && make install 以下で、終われば、OK ------------------------------------------------------------------
Installing CGIs
mkdir /usr/local/apache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual
make[1]: ディレクトリ `/usr/local/src/httpd-2.4.46' から出ます
-------------------------------------------------------------------
C 私のサーバの環境でした、httpd.confの設定は、下記のとおりです。 |
||
下記は、httpd.conf の編集を sed コマンドで一括編集をした時の sed コマンドのリストです。 |
||
Alias を使用して、別 DocumentRoot を作り CGI, SSI, html を動作させる方法を下記に紹介します。 |
||
編集済の httpd.conf は、再構築時使用すると便利なので windows PC へ保存します。 cp /usr/local/apache2/conf/httpd.conf /home/miyasaka/; \
chown -R miyasaka:miyasaka /home/miyasaka/httpd.conf; \
chmod 644 /home/miyasaka/httpd.conf |
||
Fホームページの書き込み先のフォルダを作成・所有者の変更・属性変更をします。 mkdir -p /var/www/html/www.smiyasaka.com;\
chown -R miyasaka:miyasaka /var/www/;\
chmod 777 /var/www/html/www.smiyasaka.com;\
mkdir -p /home/miyasaka/www/;\
chown -R miyasaka:miyasaka /home/miyasaka/www/;\
chmod 777 /home/miyasaka/www/ G httpd.confの設定に間違いが無いか確認します。 /usr/local/apache2/bin/apachectl configtest
「 Syntax OK 」と表示されればOKです。 |
||
|
||
※※ 注意事項 ※※ |
10-2. SELinux を有効にした時の apache2 のポリシー設定 |
||
※※※ 参考情報 1 ※※※ 2020.03.05 追加 |
||
私のホームページでは、SELinux を有効にするにあたってプログラムの配置を変更しました。 |
||
※ semanage fcontext と restorecon オプションの説明 ※ |
10-3. nghttp2 を使用して SSL プロトコル |
||
※※※ 設定の前提条件 ※※※ | ||
※※ 編集済みの各種 conf ファイルのバックアップを取り、再構築の時に利用しましょう。 ※※ | ||
1. CentOS 7.X で取得している Let's Encrypt の認証鍵データを CentOS 8.X への移設 | ||
2. CentOS 8.X での certbot のインストールと認証鍵データの継続確認 |
||
3. openssl を 新規にインストールします。 cd /usr/local/src/;\ tar zxf openssl-1.1.1k.tar.gz; \ cd ./openssl-1.1.1k; \ ./config \ --prefix=/usr/local/openssl \ --openssldir=/usr/local/openssl/shared \ enable-md2 enable-rc5 sctp zlib make && make install ライブラリへのパス通しは、行いません。
※※ make install で sh: pod2html: command not found のエラーが出る時の対処 ※※ |
||
4. HTTP/2 のパッケージ nghttp2 をインストールする。
OK なら、インストールします。 | ||
5. httpd-2.4.46 の再インストール cd /usr/local/src; \
tar xzvf /usr/local/src/apr-1.7.0.tar.gz; \
cd ./apr-1.7.0; \
./configure; \
make && make install APR-Util のソースコードをインストール cd /usr/local/src; \
tar xzvf /usr/local/src/apr-util-1.6.1.tar.gz; \
cd ./apr-util-1.6.1; \
./configure \
--with-apr=/usr/local/apr; \
make && make install
プロトコル HTTP/2 対応化のための mod_http2.so の組込は、個別のインストールでなく、再インストールで対応します。 systemctl stop apache2; \ systemctl disable apache2; \ rm -rf /usr/local/apache2; \ rm -rf /usr/local/src/httpd-2.4.46 A mod_http2.so を追加する為の再インストール [省略] 詳細は、10-1 項を参照してください。 cd /usr/local/src/;\ tar xzvf httpd-2.4.46.tar.gz; \ cd ./httpd-2.4.46;\ ./configure \ --enable-ssl \ --with-ssl=/usr/local/openssl \ <------- openssl のパス --enable-ssl-staticlib-deps \ <------- OS 標準の openssl の ライブラリが、動的にリンクされる ことを防ぐため。つまり、Apacheの 実行ファイルと一緒に SSL モジュールを組み込む為です。 --enable-http2 \ <------- mod_http2.so の追加 --with-apr=/usr/local/apr \ <------- apr-1.7.0 のパス --with-apr-util=/usr/local/apr \ <------- apr-util-1.6.1 のパス --enable-rewrite \ --enable-so \ --enable-deflate=shared \ --enable-mods-shared=all ----------------------------------------------------------------- 以下の様に、SSL, http2 がビルドされます。 ----------------------------------------------------------------- ( 途中省略 ) creating modules/slotmem/Makefile creating modules/ssl/Makefile creating modules/test/Makefile creating os/unix/Makefile creating modules/http2/Makefile creating modules/md/Makefile ( 途中省略 ) config.status: creating docs/conf/extra/httpd-multilang-…… config.status: creating docs/conf/extra/httpd-ssl.conf config.status: creating docs/conf/extra/httpd-userdir.conf config.status: creating docs/conf/extra/httpd-vhosts.conf ( 途中省略 ) configure: summary of build options: Server Version: 2.4.46 Install prefix: /usr/local/apache2 C compiler: gcc -std=gnu99 CFLAGS: -g -O2 -pthread CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE LDFLAGS: LIBS: C preprocessor: gcc -E ----------------------------------------------------------------- 〇 httpd-2.4.46 の make と install を実行する。 make && make install | ||
6. httpd-2.4.46 の SSL の設定 httpd-ssl.conf ファイルの編集 cp /usr/local/apache2/conf/extra/httpd-ssl.conf\ /home/miyasaka/httpd-ssl.conf.bak vi /usr/local/apache2/conf/extra/httpd-ssl.conf ----------------------------------------------------------------- 52 SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES ↓ ↓ SSLCipherSuite "TLS_AES_256_GCM_SHA384 \ TLS_CHACHA20_POLY1305_SHA256 \ <------- \ マークは、 ECDHE-RSA-AES128-GCM-SHA256 \ 行の継続指示記号です。 ECDHE-RSA-AES256-GCM-SHA384 \ ECDHE-RSA-AES256-SHA \ ECDHE-RSA-AES256-SHA384 \ DHE-RSA-AES256-GCM-SHA384 \ DHE-RSA-AES256-SHA \ DHE-RSA-AES256-SHA256" 60 SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES ↓ ↓ SSLProxyCipherSuite "TLS_AES_256_GCM_SHA384 \ TLS_CHACHA20_POLY1305_SHA256 \ ECDHE-RSA-AES128-GCM-SHA256 \ ECDHE-RSA-AES256-GCM-SHA384 \ ECDHE-RSA-AES256-SHA \ ECDHE-RSA-AES256-SHA384 \ DHE-RSA-AES256-GCM-SHA384 \ DHE-RSA-AES256-SHA \ DHE-RSA-AES256-SHA256" 79 SSLProtocol all -SSLv3 ↓ ↓ SSLProtocol -all +TLSv1.2 +TLSv1.31 SSL プロトコル のすべてを無効にして、 TLSv1.2 ・TLS1.3 を有効にする。 80 SSLProxyProtocol all -SSLv3 ↓ ↓↓ SSLProxyProtocol -all +TLSv1.2 +TLSv1.3 SSL プロトコル のすべてを無効にして、 TLSv1.2 ・TLS1.3 を有効にする。 124 DocumentRoot "/usr/local/apache2/htdocs" ↓ ↓ DocumentRoot "/var/www/html/www.smiyasaka.com" 125 ServerName www.example.com:443 ↓ ↓ ServerName (サーバ機のホスト名):443 126 ServerAdmin you@example.com ↓ ↓↓ ServerAdmin (メールアドレス) 127 ErrorLog "/usr/local/apache2/logs/error_log" ↓ ↓ ErrorLog "| /usr/local/apache2/bin/rotatelogs\ /usr/local/apache2/logs/www.smiyasaka.com_error_log_%Y%m%d\ 86400 540" 132行目 SSLEngine on の次の行に下記を追加 #---- HTTP/1.1 HTTP/2 add ---- <IfModule http2_module> ProtocolsHonorOrder On Protocols h2 http/1.1 </IfModule>
h2 とは、TLS暗号化接続によるHTTP/2プロトコル
http/1.1 とは、従来のHTTP/1.1プロトコル。 133行目に以下を追加する Header set Strict-Transport-Security\ "max-age=315360000;includeSubDomains" Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure Header always set X-Frame-Options SAMEORIGIN
上記の設定は、HSTS (HTTP Strict Transport Security) の導入・常時 SSL 化になります。 144 SSLCertificateFile "/usr/local/apache2/conf/server.crt" ↓ ↓ # 証明書を指定する SSLCertificateFile\ "/etc/letsencrypt/live/www.smiyasaka.com/cert.pem" 154 SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" ↓ ↓ # 秘密鍵を指定する SSLCertificateKeyFile\ "/etc/letsencrypt/live/www.smiyasaka.com/privkey.pem" 165 #SSLCertificateChainFile "/usr/local/apache2/ ↓ ↓ conf/server-ca.crt" # 取得した中間証明書を指定 SSLCertificateChainFile\ /etc/letsencrypt/live/www.smiyasaka.com/chain.pem 249 <Files ~ "\.(cgi|shtml|phtml|php)$"> ↓ ↓ <FilesMatch "\.(cgi|shtml|html)$"$gt; 252 <Directory "/var/www/cgi-bin"> 〜 <Directory> までコメントアウトします。 287 #CustomLog "/usr/local/apache2/logs/ssl_request_log" \ 288 # "%t %h %{SSL_……L}x %{SSL_……R}x \"%r\" %b" ↓ ↓↓ Include conf/extra/httpd-log.conf <--- ログ条件設定用 conf 標準のログローテーション( Apache logrotate )を使用する時には、 コメントアウトしないでください。 私の場合、自前でログローテーションをしています。 ( httpd-log.conf の作成方法は、[ここをクリック]してください。) 最終行の後に下記を追加します。 # Include conf/extra/httpd-zgip.conf <---- 新規に作成します。 #-------------------------------------------------- # セキュリティ対策のため、最終行に追加しておきます。 # サーバ署名(バージョンとサーバ名)のOFF ServerSignature Off #
※※ ここからは、SSL でも圧縮処理をしたい時に追加してください。※※ touch /usr/local/apache2/conf/extra/httpd-zgip.conf vi コマンドで下記モジュール( mod_deflate )の設定条件を書き込みます。 vi /usr/local/apache2/conf/extra/httpd-zgip.conf <IfModule mod_deflate.c> #------------------------------------------------------------ # 転送データの圧縮設定(画像以外全て圧縮する) # 実際の圧縮率は、1 も 3 も大差ありません #------------------------------------------------------------ # 圧縮レベル 1 に設定 DeflateCompressionLevel 1 # # 全てを圧縮する設定 SetOutputFilter DEFLATE # # gzip圧縮に対応していない古いブラウザを除外 # Netscape 4.x has some problems... # 送信先ブラウザがNetscape 4.xの場合はtext/htmlのみ圧縮 BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems # 送信先ブラウザがNetscape 4.06-4.08の場合は圧縮しない BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine # 送信先ブラウザがMSIEの場合は全て圧縮する BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # # 画像以外全て圧縮する # Don't compress images SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # # Make sure proxies don't deliver the wrong content # プロキシサーバーが圧縮未対応ブラウザへ圧縮ファイルを # 送信しないようにする Header append Vary User-Agent env=!dont-vary # html や css, js, javescript などは個別指定 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/js AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/js AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php # # 圧縮率の確認用ログ設定 # 不要になったら、# で無効にしておく事。 # Deflateが有効になっているか確認するログの出力 # DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '"%r" %{outstream}n/%{instream}n\ (%{ratio}n%%) %{User-agent}i' deflate CustomLog logs/deflate_log deflate </IfModule>
httpd-SSL.conf の編集を sed コマンドで一括編集をした時の sed コマンドのリスを公開しています。 | ||
7. httpd-2.4.46 httpd.conf 設定ファイルの SSL( h2 ) 追加設定 vi /usr/local/apache2/conf/httpd.conf 〇 mod_socache_shmcbを有効化する。 88 #LoadModule socache_shmcb_module……d_socache_shmcb.so ↓ ↓ LoadModule socache_shmcb_module mod……_shmcb.so 尚、mod_socache_shmcb.soは、httpdに含まれています。 〇 mod_ssl.so の読み込みを行う。 133 #LoadModule ssl_module modules/mod_ssl.so ↓ ↓ LoadModule ssl_module modules/mod_ssl.so 〇 mod_http2.so を有効化するため、コメントアウトを解除します。 134 #LoadModule http2_module modules/mod_http2.so ↓ ↓ LoadModule http2_module modules/mod_http2.so 〇 https:// のアクセスを https:// に変換させる処理の追加。 152 #LoadModule rewrite_module modules/mod_rewrite.so ↓ ↓ LoadModule rewrite_module modules/mod_rewrite.so 〇 「httpd-ssl.conf」の読み込みを行う。 494 #Include conf/extra/httpd-ssl.conf ↓ ↓ Include conf/extra/httpd-ssl.conf 上記の操作を sed コマンドで一括処理してみました。 sed -i -e "/mod_socache_shmcb\.so/s/^#// /mod_ssl\.so/s/^#// /mod_http2\.so/s/^#// /mod_rewrite\.so/s/^#// /httpd-ssl\.conf/s/^#//" /usr/local/apache2/conf/httpd.conf |
||
8. URL の正規化をします。 |
||
vi ( ドキュメントルートのパス )/.htaccess |
||
※※※ 参考情報 ※※※ |
||
10. エラーのチェック /usr/local/apache2/bin/apachectl configtest 「 Syntax OK 」と表示されればOKです。 ----------------------------------------------------------------- 11. apache2.service の変更して reload を追加します。 vi /usr/lib/systemd/system/apache2.service ------------------------------------------------------ [Unit] Description=httpd-2.4.46 daemon [Service] Type=forking ExecStart=/usr/local/apache2/bin/apachectl start ExecReload=/usr/local/apache2/bin/apachectl graceful <--- 安全な 再起動を追加します。 ExecStop=/usr/local/apache2/bin/apachectl stop [Install] WantedBy=multi-user.target ------------------------------------------------------- systemctl start apache2 <------- 起動 systemctl reload apache2 <------- 安全な再起動 systemctl stop apache2 <------- 停止 |
||
12. apache2 を起動して https://(サーバ機の LAN 内 IP アドレス)でアクセス |
||
13. Apache を DoS 攻撃から守る処理の導入 |
||
14. エラーのチェック |
||
※ 追伸 ※ |
||
16. セキュリティアプリで LAN 内 IP アドレスでのサーバへのアクセスがブロックされる時の対策 |
||
10-4 圧縮パッケージ Brotli を使用しての圧縮処理の追加 |
||
圧縮パッケージ Brotli を使用しての圧縮処理の追加をしてみました。 cd /usr/local/src; \
dnf -y install cmake; \
tar xvzf brotli-1.0.9.tar.gz; \
cd brotli-1.0.9/; \
mkdir out && cd out; \
../configure-cmake
systemctl stop apache2; \
systemctl disable apache2; \
rm -rf /usr/local/apache2; \
rm -rf /usr/local/src/httpd-2.4.46
B httpd-2.4.46 の再インストール cd /usr/local/src; \ tar xzvf httpd-2.4.46.tar.gz; \ cd ./httpd-2.4.46;\ ./configure \ --enable-http2 \ --enable-ssl \ --with-ssl=/usr/local/openssl \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr \ --enable-brotli <------- Brotli の組み込み --with-brotli=/usr/local/lib <------- Brotli のパス --enable-rewrite \ --enable-so \ --enable-mods-shared=all
上記終了したら、 make ---> make install を実行します。 <ifModule brotli_module>
#---------------------------------------------------
# Brotli 圧縮設定
#---------------------------------------------------
#
## 圧縮レベル: 0-11 (default: 11)
BrotliCompressionQuality 5
#
## BrotliWindowSize: 10-24 (default: 22)
BrotliCompressionWindow 18
#
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain\
text/css text/xml text/javascript\
application/json application/javascript\
application/x-javascript\
application/xml\
application/xml+rss
#
SetOutputFilter BROTLI_COMPRESS
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
#
BrotliFilterNote Input instream
BrotliFilterNote Output outstream
BrotliFilterNote Ratio ratio
#
# 圧縮率の確認用ログ設定
# 不要になったら、# で無効にしておく事。
# BROTLI_COMPRESSが有効になっているか確認するログの出力
#
LogFormat '"%r" %{outstream}n/%{instream}n\
(%{ratio}n%%) %{User-agent}i' brotli
CustomLog "logs/Brotil_access_log" brotli
#---------------------------------------------------
</ifModule brotli_module>
E apache を起動します。
chown -R miyasaka:miyasaka\
/usr/local/apache2/logs/Brotil_access_log; \
chmod -R 666 /usr/local/apache2/logs/Brotil_access_log
保存場所 ----> /usr/local/apache2/logs/Brotil_access_log |
------------------------------------------- |
応答ヘッダーの情報![]() |
||
|
||
I 私の Web サイトの安全性の評価を受けてみました。 |
||
![]() |
11. fswebcom-20100622.tar.gz のインストールと定点カメラの設定 |
||
tar zxvf fswebcam-20100622.tar.gz;\
cd ./fswebcam-20100622; \
./configure --prefix=/usr
以下で、終われば、OK
-------------------------------------------------------
checking for working mmap... yes
checking for gdImageCreateTrueColor in -lgd... yes
checking for gdImageStringFT in -lgd... yes
checking for gdImageJpeg in -lgd... yes
checking for gdImagePngEx in -lgd... yes
Buffer type ........... 16 bit
PNG support ........... yes
JPEG support .......... yes
Freetype 2.x support .. yes
V4L1 support .......... yes
V4L2 support .......... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h A make と インストール make && make install
make では、下記の様なエラーがでますがそのままインストールします。 |
||
12. clamav ( アンチウィルスソフト )のインストール |
||
○ clamav のインストール・設定手順 cd /usr/local/src;\ dnf -y install epel-release;\ dnf -y --enablerepo=epel install clamav clamav-update 2020年12月時点では、下記バージョンがインストールされます。 インストール済み: clamav-0.102.4-1.el8.x86_64 clamav-filesystem-0.102.4-1.el8.noarch clamav-lib-0.102.4-1.el8.x86_64 clamav-update-0.102.4-1.el8.x86_64 libprelude-5.2.0-1.el8.x86_64
完了しました! cp /etc/freshclam.conf /home/miyasaka/freshclam.conf.bak; \
sed -i -e "s/#DatabaseDirectory/DatabaseDirectory/
s/#UpdateLogFile/UpdateLogFile/
s/#LogFileMaxSize/LogFileMaxSize/
s/#LogTime/LogTime/
s/#LogRotate/LogRotate/
s/#DatabaseOwner/DatabaseOwner/
/instead\./aDatabaseMirror db.jp.clamav.net" /etc/freshclam.conf
vi /etc/freshclam.conf |
||
D ウイルスチェックの実行(テスト) vi /etc/logrotate.d/clamav-update cp /etc/logrotate.d/clamav-update\ /home/miyasaka/clamav-update.bak; \ sed -i -e "s/monthly/daily/g 3i\ missingok\n\ rotate 5" /etc/logrotate.d/clamav-update
デフォルト値は、下記の通りなので setsebool -P antivirus_can_scan_system 1;\ 設定確認コマンド getsebool -a | grep antivirus
antivirus_can_scan_system --> on |
||
○ dnf を使用して ClamAV のバージョンアップする手順
A バージョンを確認してみます。 rpm -qa | grep clam
( 2021.03.26 現在 )
clamav-0.103.1-3.el8.x86_64
clamav-lib-0.103.1-3.el8.x86_64
clamav-filesystem-0.103.1-3.el8.noarch
clamav-update-0.103.1-3.el8.x86_64 |
13. chkrootkitの導入 |
||
@ chkrootkit のインストール cd /usr/local/src; \ tar zxvf chkrootkit.tar.gz; \ cd chkrootkit-0.53; \ <--- chkrootkit-0.5X の X は、 mkdir -p /root/bin; \ 確認する事 mv ./chkrootkit-0.53/chkrootkit /root/bin A 起動用シェルスクリプトの作成 cd /usr/local/src; \ vi rootkit.sh ----------------------------------------------------------- #!/bin/sh # コマンドパスの設定 PATH=/usr/bin:/bin:/root/bin <--- 環境変数へ chkrootkit のパス設定 # LOG='/var/log/chkrootkit.log' # chkrootkit実行 chkrootkit > ${LOG} if [ ! -z "$(grep INFECTED$ ${LOG})" ]; then <--- 改ざんがあったか チェック # 改ざんがあった時の root 宛メール # upstartパッケージ更新時のSuckit誤検知対策 if ! rpm -V `rpm -qf /sbin/init` >/dev/null 2>&1; then cat "$(grep INFECTED$ ${LOG})" | mail -s "rootkit discovery"\ root fi else echo "**** rootkit check OK ****" <--- 手動実行時の確認メッセージ # 改ざんが無かった時の root 宛メールの出力の有 echo "**** rootkit check OK ****" |\ mail -s "*** rootkit check ***" root fi # chmod 600 ${LOG} |
||
※ 参考情報 ※ if ! rpm -V `rpm -qf /sbin/init` > /dev/null 2>&1; とは、何か? |
||
B rootkit.sh に属性設定 |
14. sendmail のインストール |
||
cd /usr/local/src; \
rpm -Uvh procmail-3.22-47.el8.x86_64.rpm; \
rpm -Uvh sendmail-8.15.2-31.el8.x86_64.rpm チョット時間がかかります。 dnf -y install sendmail ○ CentOS 8.0 では、mailのコマンドが使えないので該当パッケージを dnf でインストールします。 dnf install mailx
インストール済み: systemctl start sendmail
# が表示するまで、結構時間がかかるので待ちます。 systemctl enable sendmail
# が表示するば OK です。 |
15. Logwatch のインストールと毎日のメールを簡単にチェックする方法 |
||
○ サーバー上のログを定期的にまとめ、集約してレポートを出してくれるソフトウェア cd /usr/local/src/; \
rpm -ivh mailx-12.5-29.el8.x86_64.rpm; \
rpm -ivh perl-Date-Manip-6.60-2.el8.noarch.rpm ; \
rpm -ivh perl-Sys-CPU-0.61-14.el8.x86_64.rpm; \
rpm -ivh perl-Sys-MemInfo-0.99-6.el8.x86_64.rpm; \
rpm -ivh logwatch-7.4.3-9.el8.noarch.rpm dnf でのインストールは、下記の通りです。 dnf -y install logwatch
インストール済み: cp /usr/share/logwatch/default.conf/logwatch.conf\ /home/miyasaka/logwatch.conf.bak; \ sed -i -e "s/#Archives = No/Archives = YES/g s/Detail = Low/Detail = Med/g s/sendmail -t/sendmail -t -f root@localhost/g"\ /usr/share/logwatch/default.conf/logwatch.conf vi /usr/share/logwatch/default.conf/logwatch.conf
|
16. 漢字コード変換用に nkf のインストール |
||
cd /usr/local/src; \
tar zxvf nkf-2.1.5.tar.gz; \
cd nkf-2.1.5; \
make && make install
以下で、終われば、OK |
17. 自前プログラムでダイナミック DNS を定期更新させる。 |
||
2020年10月10日 変更( DiCE の処理関係を削除し、下記を追加する。) |
||
プログラムの説明 |
||
グローバルIPアドレスが、変化したときの対策 |
||
私のサーバ機の環境で グローバル IP アドレス が、変化する要因は、99% 停電によるモデム(ブロードバンドルータ)の再起動によるインターネットサービスプロバイダ(ISP)の グローバル IP アドレス 再割り当てです。 |
||
※※ 参考になりますか?。[ グローバル IP アドレス 変化チェックのプログラム ] ※※ vi IP_Check.sh #!/usr/bin/sh # #------------------------------------------------ # モデム(ブロードバンドルータ)が、管理しているIPアドレスを取得 # Atermip=$(wget -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip') # #Atermip="000.000.000.000" # Test 用 IPアドレス echo "Aterm G.IP $Atermip" # 確認用 # #------------------------------------------------ # dig コマンドでネームサーバが認識しているIPアドレスを取得 # 結果を get_data に格納する # ;; ANSWER SECTION:行の次の行を取得する( grep -A 1 ) # get_data=$(dig [www 付きドメイン名]> | grep -A 1 ";; ANSWER SECTION:" | grep [www 付きドメイン名]) # # ドメインのある行のみが抽出されます # IP_file_Array=(`echo ${get_data}`) # 配列として代入 # echo "dig G.IP ${IP_file_Array[4]}" # 5番目に IPアドレス 確認用 # myip=$(echo -n ${IP_file_Array[4]}) # 改行削除 # #echo "${myip} 改行削除" # 改行削除確認用 #--------------------------------------------------------- # グローバルIPアドレス 判定 相違の時 更新処理をさせる。 # if [ ${Atermip} != ${myip} ]; then # echo "IPアドレス変更" ## ( ここに グローバルIPアドレス 更新の処理を記述する。) # else echo "変化無し" fi # # 終了 #------------------------------------------------ |
||
私のサーバ機では、ホームページ上から、今の ネームサーバー側 ・ モデム側 の グローバル IP アドレス を取得して、表示するページを用意して グローバル IP アドレス 変化した時に
慌てずに VALUE DOMAIN にワンクリックでアクセスして変更作業が出来るように備えています。 |
||
![]() |
||
18. 自宅サーバの管理・運用監視 等 |
||
cd /usr/local/src; \
rpm -Uvh lm_sensors-3.4.0-17.20180522git70f7e08.el8.x86_64.rpm
dnf -y install lm_sensors
運用・管理は、32bit CentOS 6.7 自宅サーバ構築を参照ください。 #!/usr/bin/perl
#----------------------------------------------------
# lm_sensorsを使用して CPU の温度を抽出する。
#----------------------------------------------------
# 先頭に Core の文字列がある行のみ抽出する
open(get_data, "/bin/sensors |");
# 改行コードを削除
chomp;
# スペースで分割して配列に代入
@Data = split(" ", $_ );
#
if ( $Data[0] eq "Core" ) {
# 3番目の配列に温度データがある
$temp = substr( $Data[2], 0,3 );
}
}
# 温度データを HTML へ出力する
print "CPU 温度 $temp 度\n";
-----------------------------------------------------------
cd /usr/local/src; \
rpm -Uvh ftp-0.17-78.el8.x86_64.rpm dnf でのインストールは、下記の通りです。 dnf -y install ftp
※※ 参考情報 ※※ |