:::: MENU ::::
Browsing posts in: Linux

ApacheのバージョンによりAuthTypeエラー

幾つかのApacheサーバー関連で、セキュリティ強化のため、httpd.conf内の制限を強くしていったところ、下記のエラーでトップのページが表示されなくなってしまった。

configuration error:  couldn’t perform authentication. AuthType not set!: /

原因は、Apache 2.2系の設定に、下記を追加したことによるものでした。

<Directory "/var/www/html">
...
...
Require GET POST
</Directory>

Require記述は、2.4系からなので、Require行を削除したところ、復帰しました。

Requireの書式を記述しても、configtestは通って、Syntax OKになるので注意ですね。

 


今更ながらSubsonicをSSLでサブドメインにて運用

このサイトでも幾度か、Subsonicの記事を投稿しておりますが、今更ながら、SSL証明書によるHTTPS化して、ついでにサブドメインにてアクセスするように設定した。

環境

現状は、CentOS上にSubsonicを運用しており、http://localhost:4040にて稼働しております。

今回作業する項目

CloudFlareにてサブドメインを設定し、nginxでサブドメイン用confファイル作成、SSL証明書発行後、confファイルに適用と言う流れになります。

サブドメイン設定

私は、DNS管理をCloudFlareに任せていますので、CloudFlareにログインします。

https://www.cloudflare.com/a/login

上記項目のDNS設定をクリックし、下記の囲んだ部分にサブドメインを記入して、追加します。

  • 左のレコードタイプをA
  • 次にサブドメイン名(今回はsubsonic)
  • サブドメインのIPアドレス (通常、subsonicを動作させているIP)
  • TTLは通常Automaticですが、早く反映させたいので、2min
    DNS反映後は、Automaticに戻しましょう
  • CloudFlareを通さない設定にしておかないと、この後の証明書発行ができませんので、雲マークがオレンジではなくグレイになるようにクリックしておきます

DNS反映には、しばらく時間がかかるので、コーヒーを飲んだり出かけたりすると良いかもしれません
一応、確認としては、CloudFlare上で設定が反映されていれば、
$ dig @ns6.cloudflare.com subsonic.xxx.xxx にて、設定したIPアドレスが表示されればOK
そして、サブドメイン(subsonic)上の端末から、
$ dig subsonic.xxx.xxx にて設定したIPアドレスが表示されれば、次に進めます

NginxのSubsonicサブドメイン用設定ファイル作成

設定ファイルは、/etc/nginx/sites-available/内にsubsonic.confと言う名前(任意でも)で作成します。

# cat subsonic.conf

server {
 listen 80;
 server_name subsonic.xxx.xxx;
 access_log /var/log/nginx/subsonic-access.log;
 error_log /var/log/nginx/subsonic-error.log;

location / {
 proxy_pass http://127.0.0.1:4040;
proxy_redirect http:// https://;
 }

保存後に、sites-enabled内にシムリンクを張ります

# ln -s /etc/nginx/sites-available/subsonic.conf /etc/nginx/sites-enabled/

書式に間違いないか確認

# service nginx configtest

エラー表示がなく、Syntax OKが表示されれば、適用します

# service nginx reload

これで問題がなければ、サブドメインのURLでアクセスすると、Subsonicの画面が表示されるはずです。

SSL証明書取得・設定

ここでは、無料のSSL証明書(Let’sEncypt)をサブドメインに適用します

Let’sEncryptをインストール

すでに、Let’sEncryptのプログラムは導入済みなのですが、初めての方は下記でインストールします。

# git clone https://github.com/letsencrypt/letsencrypt <directory>
# cd <directory>

サブドメイン用の証明書取得

# ./letsencrypt-auto —nginx
(初めて起動の方は、ここで、いろいろなプログラムがインストールされます)

1. aaa.xxx.xxx
2. bbb.xxx.xxx
3. subsonic.xxx.xxx
….

サーバー内nginx設定ファイルが自動で読み込まれるので、適用するドメインを使用します。
ここでは、subsonicなので3を選択

登録するにあたり、規約のPDFを見て承諾するか尋ねられるので、AgreeのAを打ち込む

初めての方は、登録するメールアドレスを求められるので記入します

1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access

今まで通りhttpでもアクセス可能にするか、全てhttpsで接続させるかを任意で指定

これで、Congratulations!が表示されれば、サブドメインのsubsonic.confにssl設定が追記されています

一応、設定ファイルを読み込んでおきます

# service nginx reload

そして、サブドメインのSubsonic(subsonic.xxx.xxx)へhttpでアクセスして、httpsへリダイレクトされてログイン出来れば完成です。

作業時間より、この記事書くほうが時間かかってしまいました。(^_^;)


DockerでOpenVAS起動

脆弱性をスキャンするソフトにOpenVASと言う無償ソフトがあります。

脆弱性スキャナ「OpenVAS」でのセキュリティチェック

一時的に利用するのであれば、Docker上で起動したほうが楽ですね。

Dockerが起動する環境にある事が前提で、DockerHubのOpneVASを利用します。
https://hub.docker.com/r/mikesplain/openvas/

インストール・起動

OpenVASのインストールから起動完了まで、下記の一行で済みます。

$ docker run -d -p 4000:4000 --name openvas mikesplain/openvas:9

この後に、https://:4000にアクセスし、
Username: admin
Password: admin
にて、ログインし、脆弱性をスキャンしたいホストを追加していきます。

パスワード指定で起動

尚、パスワードを変更して起動したい場合は、こちら
$ docker run -d -p 4000:4000 -e OV_PASSWORD=<任意のパスワード> --name openvas mikesplain/openvas:9

ローカルにデータ保存指定で起動

また、Docker上のOpenVASをアップデートした場合や、再起動した際に環境が初期に戻る場合があります。
登録したホスト状況などをローカルに保存しておきたい場合は、Volume機能を追加します

ローカル側に予め保存用のディレクトリを作成しておき、下記のコマンドで起動します

$ mkdir data
$ docker run -d -p 4000:4000 -v $(pwd)/data:/var/lib/openvas/mgr/ --name openvas mikesplain/openvas9

これでローカル側にデータが残るのですが、何故かログインに失敗してしまいます。(調査中)

ログを見てみると、
$ docker logs openvas
.....
.....
omp:WARNING:2017-02-17 04h17.13 utc:224: Authentication failure for 'admin' from 900::900:0:0:0
.....


SSL(HTTPS)で画像が読み込まれなくハマった

とあるサイトで、サイトをSSL化(HTTPS)したところ、画像だけが読み込まれないトラブル

環境は、CentOS7上のApache 2.4で、ssl.confを主体に、confファイルをいろいろ調べてみても解決せずにハマりました。

原因は、「画像の直リンク禁止」設定にしていたからでした。

画像ディレクトリ(images)内の、.htaccessで下記のように直リンク禁止設定にしていました。

<Files ~ "\.(jpg|gif)$">
SetEnvIf Referer “http://www.xxx.xxx/" OK
SetEnvIf Referer “http://localhost/" OK
Order allow,deny
allow from 127.0.0.1
allow from env=OK
</Files>

はい、もうお分かりですね。

記述されているSetEnvIf RefererのURLがhttpになっているので、httpsだと☓なんですね。

ある意味、正常動作

HTTPSでも画像を表示したいので、http:を削除し、//www.xxx.xxxに修正すればOKです。


Subsonicをアップデートしたらエラー警告がでるようになった

Subsonicのbeta版で特に問題なく利用できていたので、ずーっと放置状態でしたが、年末に時間がとれたので、beta版から正式の6.0へアップデートしました。

アップデート作業は、以前記事にした通りなので割愛します。

Subsonic 4.xから6.0betaへアップデート

問題なく設定も引き継がれたのですが、ブラウザで開いてみたところ、下記のエラーが出るようになりました。

Failed to find parameter: instanceId (check server log for more info).

どうやら、ブラウザのキャッシュの問題のようで、ブラウザを変更してみるか、ブラウザのキャッシュ・クッキーを削除して解決


Zabbixサーバとエージェントの通信が取れないよくある症状

Zabbixサーバーが既に稼働してあるものとして、情報を取りたいエージェント(Agent)側にzabbix agentをインストールすることが多々あります。

そのままインストールして、デフォルトのまま起動すると、大抵、サーバー側と通信取れないことがよくあるのでメモしておきます。
Zabbix Agentのインストール手順については割愛します。(yum,aptでzabbix agentをインストールするだけなので)

確認事項と対応

ファイヤーウォール

  • 使用しているOSのファイヤーウォールが起動しているのか?
  • ファイヤーウォールでポートがブロックされていないか?
  • SELinuxが起動していないか?

SELinuxやファイヤーウォール(iptables)が起動していたら、一旦無効にしてみましょう。(手っ取り早いので)

zabbix_agentd.confの設定

デフォルトでは、#Server = 127.0.0.1となっているので、ここをZabbixサーバーのIPに変更しましょう。

デフォルトのままの設定で通信出来ない場合は、下記のようなログが残っているはずです。

failed to accept an incoming connection: connection from “xxx.xx.xx.xx" rejected, allowed hosts: "127.0.0.1"

PIDが作成出来ないエラーの場合

稀に、zabbix agent起動時に、PIDファイルが作成出来なくて、起動に失敗する場合があります。

ログを確認すると、下記のようなエラー

zabbix_agentd [890]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [2] No such file or directory

これは、OSを再起動した際に、tmpfsの影響により、ディレクトリやファイルが消される場合があります。
この場合には、/var/run/zabbixのディレクトリがあるか確認することとパーミッションを確認しましょう。

# mkdir /var/run/zabbix
# chown zabbix:zabbix /var/run/zabbix

この後に、zabbix agentを再起動し、/var/run/zabbix/zabbix_agentd.pidが作られていることを確認

その他

現在のZabbix最新版は3.xであり、以前からzabbixを利用していれば2.x以前を利用している場合もあるかと思います。
バージョンによる不具合も起きるかもしれませんので、なるべくバージョンは合わせたほうが良いでしょう!


Debian8へZabbix 3.x Agentのインストール

Debian8へZabbix 3.xのインストール

Debianデフォルトのzabbixパッケージは、2.xと古いので、3.xのリポジトリを追加してインストールする手順です。

リポジトリ追加

# wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb
# dpkg -i zabbix-release_3.0-1+jessie_all.deb
# apt-get update

zabbix-agentインストール

# apt-get install zabbix-agent

サーバー先の設定

zabbix agentはサーバーへ情報を送るプログラムなので、情報を送るサーバーIPを記述する必要があります。

# vi /etc/zabbix/zabbix_agentd.conf
....
Server=127.0.0.1  <--このIPを修正します
....

保存後に、zabbix agentを再起動

# systemctl restart zabbix-agent.service

Zabbixサーバー

ちなみに、Zabbixサーバーをインストールするには下記でインストール

# apt-get install zabbix-server-mysql zabbix-frontend-php

今回のZabbix agentを含め、Debianにかぎらず、サーバーをインストールした後には、設定ファイルやPHP環境を変更する必要があるので、下記公式の記事を参照です。
https://www.zabbix.com/documentation/3.0/manual/installation/install_from_packages#debianubuntu


3Wareドライバーの在り処

Debianで動作していたLinux機が起動出来なくて、OS再インストールした際に、RAIDカードの3ware製ドライバーのリンク先が変更されていたようで、結構手間取ってしまった。

以前は、3ware.comでしたが、下記URLに変更されていたんですね。

http://www.avagotech.com/support/download-search

せっかくなので、ついでにインストールのメモ

3DMのインストール

上記URLから該当するRAID Controllerを検索し、Software欄で、Linux版の3DM2 CLI Linux from the 10…..をダウンロード

解凍とインストール

# unzip 3DM2_CLI-linux_***.zip
# chmod 755 install.sh
# ./install.sh -i


..........
Press Y to accept the License Agreement or N to decline (and exit) then press 'Enter Key': Y
(Yを入力する)

3ware CLI &amp; 3DM2 installation, configuration and removal script.
(c) 2010 LSI, Inc. All rights reserved.

Script version: v3.00.00.021
*******************************


3DM2 supports two modes of operation.
-------------------------------------
0 - 3DM2 with WEB interface
1 - 3DM2 Error/Event Logger only

Which version of 3DM would you like configured? (0|1) 0 (0を入力)
*** 3DM2 selected. ***

*** Installing 3DM2 and CLI ***


Press 'Enter Key' to continue with installation or Control C to exit.

Creating installation tmp directory /tmp/3ware... done.

Extracting installation files to /tmp/3ware... done.

Changing directory to /tmp/3ware to continue installation done.
Creating 3dm2 configuration directory (/etc/3dm2)... done.
Creating 3dm2 install path (/opt/3ware/3DM2)... done.
Creating 3dm2 message file install path (/opt/3ware/3DM2/msg)... done.
Creating 3dm2 help file install path (/opt/3ware/3DM2/help)... done.
Creating CLI install path (/opt/3ware/CLI)... done.

******************************************
**** Installing 3DM2 files for x86_64
******************************************

Copying install.sh to /opt/3ware... done.
Installing 3dm2u binary to /opt/3ware/3DM2... done.
Setting runtime permissions for /opt/3ware/3DM2/3dm2... done.
Installing 3dm2 message files to /opt/3ware/3DM2/msg... done.
Installing 3dm2 help files to /opt/3ware/3DM2/help... done.
Installing 3dm2 configuration file to /etc/3dm2... done.
Installing 3dm2 logo file to /etc/3dm2... done.
Installing /etc/init.d/tdm2 script... done.
Setting runtime permissions for /etc/init.d/tdm2... done.

******************************************
**** Installing CLI files for x86_64
******************************************

Installing CLI binary to /opt/3ware/CLI/tw_cli... done.
Setting runtime permissions for /opt/3ware/CLI/tw_cli... done.
Installing CLI html help to /opt/3ware/CLI... done.
Installing CLI man page to /usr/share/man/man8... done.

***************************************
**** Configuring CLI &amp; 3DM2
***************************************

Creating /usr/sbin/3dm2 symbolic link to /opt/3ware/3DM2/3dm2... done.
Creating /usr/sbin/tw_cli symbolic link to /opt/3ware/CLI/tw_cli... done.
Setting runtime permissions for /etc/3dm2/3dm2.conf... done.

***************************************
**** Finishing Installation
***************************************


*** Starting 3DM2 using configuration found in /etc/3dm2/3dm2.conf ***
[ ok ] Starting tdm2 (via systemctl): tdm2.service.

今回は、対話モードでのインストールでしたが、対話無しで一気にインストールする場合は、下記で。

# ./install.sh --install -fN0

確認

ps aux|grep 3dm
root 14492 0.0 0.0 77220 2744 ? Sl 09:21 0:00 /usr/sbin/3dm2

接続

http://localhost:888/
Administratorでログインする
初期パスワードは3ware

補足

自Linux上のFirefoxからlocalhost:888にアクセスしても、接続出来ないので、ファイヤーウォールやらポート確認してみましたが、問題ないので、他端末のGoogle Chromeでアクセスしたところ、無事にアクセスすることが出来た。

Firefoxだけの原因のようで、下記の何れかに該当するのかもしれません。

https://support.mozilla.org/ja/kb/firefox-cant-load-websites-other-browsers-can

追記:私の環境の場合、httpsでアクセスした際に証明書の問題のようで、「例外を追加」することでアクセス出来るようになりました。

https://support.mozilla.org/ja/kb/secure-connection-failed-error-message


PHP構文内でHTMLのエスケープシーケンスがエラーになる

PHP構文内にHTML記述する場合には、特殊文字はエスケープシーケンスを使う必要があります。

例えば、PHP構文内で、HTMLにてURLやパスを指定する場合

print(" <frame src=\"index.php\" name=\"head\" scrolling=\"no\">");

このように、HTML内の”は¥”で記述します。

それで、このような記述で、サーバーによって、正常に起動する場合と、エラーになる場合が発生しました。

エラーになる場合は、そのままのエスケープシーケンスが混入しているため、src=”index.php”…となるところが、src=¥”index.php¥”となっているのが原因です。
正常に動作するサーバーとエラーとなるサーバーをApache,PHPの設定で比較した所、short_open_tagが原因でありました。

# vim /etc/php.ini
....
short_open_tag = On  #<--OffからOnへ変更
....

エラーとなるサーバーでは、short_open_tag = Offであったため、これをOnの設定にし、Apacheを再起動したとこ、エラーが解消され、正常に動作となりました。

 


WEBページの文字化けはApacheの設定だけではなかった

CentOS7にて、yumでインストールしたApacheで、以前の設定のまま稼働状態になっていたにも関わらず、なぜかUTF-8以外のページが文字化けしていた。

UTF-8以外のページは、charsetの文字コードも記述しているにも関わらず、ブラウザー(Safari,Firefox,Google Chrome)で自動認識されない症状。

Apacheの設定では、このようば文字化けに関する設定は、/etc/httpd/httpd.conf内のAddDefaultCharが関係しているので、

#AddDefaultCharset UTF-8
AddDefaultCharset Off

このどちらかを記述していれば問題ないはず。

さらには、conf.d内のバーチャルホスト等の設定も、これらの記述は書かれていないことを確認。
設定を変更したならば、Apacheを再起動することで有効になるが、これでも文字化けは解決せず。

かなり、時間を費やして、ページや設定を弄りましたが、どうやら、この問題はApacheだけではなかったようです。

それは、PHPの設定

PHPの設定でも、以前から全く変更はしていませんでしたが、/etc/php.ini内のdefault_charsetを空白にする必要があるようです。

;default_charset = "UTF-8"
default_charset = ""

これで、Apacheを再起動したところ、文字化けが解消されました。

文字化けしてたページ内では、ごく普通なHTMLで、PHP構文は使ってないにも関わらず、 PHPが関係していたのです。


ページ:1234567...14