httpd.confの書き方

Section 1: Global Environment
Apache全体に影響を与えるセクション
Server RootはApacheをインストールした場所のパスが指定
Timeoutはクライアントから接続要求を受け取ってからタイムアウトになるまでの時間
KeepAliveはクライアントから接続要求を受け取った際に、すぐにはHTTPセッションを閉じずに、ある一定の時間まで継続してセッションを保っておく機能
MaxKeepAliveRequests: KeepAliveがOnの時に接続要求を受け付ける最大許容値
Listenディレクティブは特定のIPアドレスや特定のIPやポート番号だけをlistenすることができる

Section 2: “Main” server configuration
サーバを実行するためのユーザとグループを指定
User apache
Group apache

ServerAdminは、サーバがエラードキュメントを返す際などに表示される管理者のメールアドレスを指定
ServerNameは、サーバ自身が使用するサーバ名とポート番号を指定
UseCanonicalNameは自身がURLをどのように決定するかを指定
DocumentRoot
Directory: サーバルートディレクトリに対する設定。2度目に出てくるDirectoryはドキュメントルートを指定
Option Mutliviews: 曖昧なURLを指定した場合でも、クライアントに対して最適な値を検索して返す
ユーザにホームページスペースを提供するのがUserDir
AccessFileName アクセス制御を行うためのファイル
はブラウザはアクセスできないようにする
TypesConfigはMIMEタイプ設定ファイルの位置を設定
AddType application/x-smaf mmn mmfを追加したい場合、以下のようにすることで実現
DefaultTypeはMIME Typeファイルに記述がなかった場合の扱いを指定
IfModule mod_mime_magic.c : mod_mine_magic.c モジュールが組み込まれているかどうかを確認し、もし組み込まれていればファイルの内容からさまざまな手がかりを探り出し、MIMEタイプを決定できる
HostnameLookups は IPアドレスをホスト名に変換し、ログに記録する機能を提供
ServerSignature はエラーメッセージなどをクライアントに帰す際のフッターラインを表示させるかどうかを指定するディレクティブ

うーむ、なかなか埋まらんな〜

RPMとは

RedHatLinuxのために開発されたパッケージ管理方法
標準のファイル拡張子は.rpm
複数のファイルやディレクトリをcpio形式のアーカイブファイルにまとめた形になっている
独自のspec形式ファイル、バイナリファイルやソースコードなどが格納されている
パッケージ名称、説明、種類、バージョン番号、ライセンス情報、開発元、公式サイトのURL、ツール、他のパッケージとの依存関係などの情報を記述した部分と、シェルスクリプトなどを記述したスクリプト部分が格納

apr rpmはapache
apr-util は依存関係
httpd rpm
libfontenc rpm
libXfont rpm
xorg-x11 rpm : x window system

うーむ、DMZのapache設定がわからん…

DMZとは?

DeMilitarized Zoneの略で、外部ネットワークと社内ネットワークの中間に作られるネットワーク上のセグメント(区域)のこと。
外部ネットワークからも、内部ネットワークからも見ることができる
外部ネットワークからも内部ネットワークからもファイヤーウォールによって隔離されている
社内ネットワークと隔離することで、不正侵入された後のマルウェアの感染拡大を防ぐ

DMZの構成には2台のファイヤーウォールを設置して、インターネット – FW – DMZ – FW – 社内ネットワークとする方法がある

DMZホストとなるパソコンはIP固定が必要

### DMZ
IPアドレス単位で転送するため、公開するポートを指定する必要がない
セキュリティ: 無条件で全通信がサーバにたどり着くため注意が必要
ルータ設定: 簡単
IPアドレスの有効活用: 1つのグローバルIPアドレスに1つのサーバ

DMZの作成方法がわからん…

SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small AH00016: Configuration Failed

$ sudo less /var/log/httpd/error_log
SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small AH00016: Configuration Failed

キーが短すぎるの意味がそのままで、今は1024bitだと短いと判断されるらしい。
2048で作り直す必要がある。

うーん、前途多難だな

RHEL8のSELinuxの無効化

(13)Permission denied: AH00072: make_sock: could not bind to address [::]:20080
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:20080

SELinuxとは? : 強制アクセス制御を実現するセキュリティ機構
Security-Enhanced-Linux
アクセス制御に使う

$ getenforce
Enforcing
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33

### 一時的に無効化
$ sudo setenforce 0
$ getenforce
Permissive

### 恒久的に無効化
$ sudo cp -piv /etc/selinux/config /etc/selinux/config.`date “+%Y%m%d”`
$ sudo vi /etc/selinux/config

# SELINUX=enforcing
SELINUX=disabled

$ sudo systemctl restart httpd
$ systemctl status httpd.service

なるほど

vsftpdとは?

LinuxなどUNIX系OSでよく利用されるFTPサーバの一つ
OSに常駐するデーモンプログラムの一種で、FTPによる接続を受け付け、指定されたディレクトリ内での送受信を行うことができる

sudo yum list | grep ftp
sudo yum install vsftpd

なるほど、わかってきた

minetypeとは

$ cat /usr/share/mime/packages/freedesktop.org.xml

// 拡張子の確認
$ mimetype article.hpscript
article.hpscript:

$ sudo vi /usr/share/mime/packages/freedesktop.org.xml

  <mime-type type="application/hpscript">
    <comment>Hpscript File</comment>
    <comment xml:lang="ja">Hpscript ファイル</comment>
    <acronym>Hpscript</acronym>
    <expanded-acronym>Hpscript file</expanded-acronym>
    <glob pattern="*.hpscript"/>
  </mime-type>

// mime database更新
$ sudo update-mime-database /usr/share/mime
$ mimetype article.hpscript
article.hpscript: application/hpscript

うおおおおおおおおおおおおお
sugeeeeeeeeeeeee

HTTP_PROXY, HTTPS_PROXY, FTP_PROXYとは

HTTPプロキシは高性能なコンテンツフィルタ
Webトラフィックを検査して、ウィルス、その他の種類の侵入可能性があるコンテンツを識別する

環境変数のHTTPS_PROXYは、サーバにHTTPS接続したい時に使用するproxyの設定

HTTP_PROXYは接続先がhttp://target…
HTTPS_PROXYは接続先がhttps://target…

proxy設定はOS側からネットにアクセスする際に経由するって意味合いね

phpPgAdmin

phpPgAdminは、PostgreSQLサーバをwebブラウザ上で管理できるツール
コマンドなして操作できる

Github: https://github.com/phppgadmin/phppgadmin
Source: https://sourceforge.net/projects/phppgadmin/

### UbuntuへのphpPgAdminインストール
$ wget http://downloads.sourceforge.net/project/phppgadmin/phpPgAdmin%20%5Bstable%5D/phpPgAdmin-5.1/phpPgAdmin-5.1.tar.gz
$ tar zxvf phpPgAdmin-5.1.tar.gz
$ rm phpPgAdmin-5.1.tar.gz

### 設定
conf/config.inc.php

	$conf['default_lang'] = 'japanese';

$ php -S 192.168.56.10:8000

なるほど、なんとなくわかった。