| .htaccessファイルのユーザー認証によるアクセス制限 | 2003/02/9 (Sun) ▽ |
|
|
WWWサーバー Apache のhttpd.confを編集し、ディレクトリのアクセスを制限します。 sample page click here user ID= "user" password= "pjk55rt"
ホームページ上ではアクセスできないところ(DocumentRoot以外)に ファイル .htpasswd を設置します。 ドットファイル .htpasswd用ディレクトリは以下のように作成します。ユーザー名 myself の場合、 DocumentRootを /var/www/htmlとすると、
# mkdir /var/www/pwddir # chown -R myself:myself /var/www/pwddir # chmod 755 -R /var/www/pwddir
# su - myself
% cd /var/www/pwddir/ % /usr/local/apache/bin/htpasswd -c htpasswd user
ディレクトリ内にアクセスID " user "用パスワードファイル htpasswd が作成されました。ドットファイルにリネームします。
% cp -i htpasswd .htpasswd ID、パスワードを追加する場合、.htpasswd を編集します。
user1:3J59hGFKp7YUW user2:FKp7R4Ih5TNSU
改行が必要です。
% mkdir /var/www/html/secret/
DocumentRoot内に アクセス制限を設けるディレクトリ "secret" を作成します。 エディタで以下のファイルを作成し、ディレクトリ "secret"内にアップロードするか(通常、ファイル名 htaccessとしてアップロード後、ドットファイルにリネームします)、
% cd /var/www/html/secret/ % vi .htaccess
AuthUserFile /var/www/pwddir/.htpasswd AuthGroupFile /dev/null AuthName "Please enter userID and password." AuthType Basic <Limit POST> require valid-user </Limit>
送信フォームではメソッド POSTに限定します( GET は使用しない方がよいです)。
% exit 次に、apacheを停止します。
# /usr/local/apache/bin/apachectl stop # vi /usr/local/apache/conf/httpd.conf
httpd.conf 370行目あたりを編集します。
<Directory "/var/www/html/secret">
Options FollowSymLinks MultiViews
AllowOverride Options AuthConfig Limit
Order allow,deny Allow from all </Directory>
Options制御で、CGIを使用する場合 ExecCGI を併記します。ディレクトリ内ファイルを一覧表示しないように、 Indexes は削除します。
AllowOverrideでは、アクセスしたユーザーに権限を与えます。AuthConfig はユーザー認証に必要です。デフォルト AllowOverride Noneであれば、アクセスは制限されません。 # /usr/local/apache/bin/apachectl start (ないし startssl)
アクセスは http://www.example.jp/secret/となります。
|
|
| sqlファイルの使い方 | 2003/01/05 (Sun) ▽ |
|
|
例1: ポータルシステム管理画面でレファレンスを変更したら、アクセス不能になった
Save Detabase nuke 01-05-2003.sql ・・・PHP-Nuke 管理画面にて、バックアップファイルを作成し、ダウンロードしたときのファイル名です。別サーバーのMySQLのDATABASEに書き込んだり、ファイルを再度読込ませるときは、以下のように行います。
まず、保存ファイル名を変更します。 ⇒ nukedb20030105.sql
データベースを削除(ドロップ)する前に、必ず確実な方法でバックアップをとります。たとえば、
# /usr/local/mysql/share/mysql/mysql.server stop # cd /usr/local/mysql/var # tar cfz nukedb20030105.tar.gz nuke # mv -i nukedb20030105.tar.gz /home/mysql/ # safe_mysqld &
mysqlサーバーを一時停止し、ユーザーmysqlのホームディレクトリ内にアーカイブを保管します。
MySQLが起動した状態で、DATABASE Nukeのユーザーでログインします。 # su - mysql % mysql -u [ユーザー名] -p ユーザーパスワードを入力し[Enter]キーを押すと、クライアントに接続しますので、 変更するときは mysql> DROP DATABASE nuke; 作成するときは mysql> CREATE DATABASE nuke;
mysql> use nuke; 問題が発生しなければ mysql> exit のあと、 % cd /DIR/DIR [sqlファイルのあるディレクトリー]に移動して
% mysql -u [ユーザー名] -p nuke < nukedb20030105.sql パスワード入力 mysql> exit % exit 再起動します。 # mysql.server stop # safe_mysqld &
|
|
| いくつかのサーバーを1台のPCで運用するときのperl+CGI | 2003/01/12 (Sun) ▽ |
|
|
WWWサーバー Apache 上でCGIを利用するときのセキリティ対策
Perl Scriptで書かれたCGIを使用するときの注意点「Apache サーバーに suEXEC をインストールする」もご一読下さい。
安全な方法として、サーバーマシンにOSをインストールする時、www, cgiなどの Web 関連のディレクトリーは、個別のパーティションとして、/var/www のファイルマウント時に nosuidオプション を付加し setuid/setgid を無効にしてしまうことが推奨されています。また、CGI関連ファイルは、DocumentRoot以下には設置しないことが大切です。さらに、Apache の一般的な実効ユーザである nobody (および,実行グループ nogroup) が、他のプログラムの実行権限を有したり、cgiなどの実行ファイルの所有者となっていると、とても危険です。 このためには、たとえば、
# mkdir /var/www/cgi-bin # chown -R cgi_user:cgi_user /var/www/cgi-bin (owner は root, nobody 以外がよい) # chmod 755 -R /var/www/cgi-bin
任意のディレクトリーを作成し、apache を停止後
# /usr/local/apache/bin/apachectl stop # vi /usr/local/apache/conf/httpd.conf
まず345〜360行目あたりを編集します。 DocumentRootを /var/www/htmlとすると、 DocumentRoot "/var/www/html" の設定行の中で、Options設定にて CGI,SSIを使用しない,ディレクトリ表示しないようにします。また AllowOverrideにて .htaccessを無視するようにします(以下参照)。
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
次に、635〜650行目あたりを編集します。 DocumentRootを /var/www/htmlとすると、
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ←最後にスラッシュ/あり
<Directory "/var/www/cgi-bin"> ←最後にスラッシュ/なし AllowOverride None Options None Order allow,deny Allow from all </Directory>
スクリプトエリアスを指定します。アクセス制限も可能です。
# /usr/local/apache/bin/apachectl start (ないし startssl)
アクセスは http://www.example.jp/cgi-bin/xyz.cgi となります。
次いで、CGIファイル数が多くないときは、/var/www/cgi-bin 内に不審なファイルがないか時々チェックします。
# chmod ls -la | more
ないし、リモートのPCからFTPアクセスして、コマンド ls (ないし dir)にてDir 情報を見ます。sで実行されるファイル⇒ -rwsr-xr-x 1 root:wheel は setuid、 -rwxr-sr-x 2 root:wheel は setgid です。ドットファイル形式のsetuid -rwsr-xr-x 3 root:wheel .sfder.cgi なども、通常のWebページに設置されることのない不審ファイルです。
|
|
| PGP ユーティリティを使って署名を確認するために | 2003/02/16 (Sun) ▽ |
|
|
サーバーのメインテナンスでは、セキュリティのため修正パッチはとても重要です。 FreeBSD のホームページでは、"修正パッチと PGP 署名を以下の場所からダウンロードし,PGP ユーティリティを使って署名を確認してください."と注意書きがあります。ファイル改ざんの有無をチェックすることを主目的とし、署名による確認手順を簡単に解説いたします。
PGP暗号化・電子署名フリーソフト GnuPG を利用しましょう。
メール暗号化などいろいろ応用できますので、解説は Windows版 で行います。
補足説明(2003/11/30) ⇒ Becky! Internet MailなどのPGP/MIMEメールのために若干補足しました。
GnuPGのダウンロードサイトにて、Windows版 (2003/11/30 最新バイナリ GnuPG 1.2.3 compiled for Microsoft Windows) gnupg-w32cli-1.2.3.zip を選択し、ダウンロードします。 C:¥gnupg を作成します。すべての操作は MS-DOS プロンプトで行いますので、バイナリファイルの展開先は、C:¥gnupgからディレクトリ移動の少ないところにしましょう(例 C:¥gpg)。 MS-DOS窓にて gpg.exe を実行します。
C:¥WINDOWS> cd .. [Enterキー] C:¥> cd gpg [Enterキー] C:¥GPG> gpg [Enterキー]
C:¥gnupg 内に必要ファイルが作成されます。 C:¥GPG> exit [Enterキー]
MS-DOS プロンプトを一度終了します。 再度 C:¥GPG> に移動します。 秘密鍵と公開鍵を作成します。
C:¥GPG> gpg --gen-key [Enterキー]
(暗号アルゴリズム) 1 ⇒(暗号強度) 2048 ⇒(有効期限:無期限) 0 ⇒(無期限 okey) y ⇒個人情報設定⇒(password) パスフレーズ入力⇒自動乱数発生(キーボードやマウスを動かすことを推奨)
Security Officer 公開鍵を入手します。 ftp://ftp.freebsd.org/pub/FreeBSD/CERT/public_key.asc
http://www.freebsd.org/ja/security/index.html PGP鍵 をクリックすると、ダウンロードできます。
公開鍵 public_key.asc を C:¥GPG にコピーします。
C:¥GPG> gpg --import public_key.asc [Enterキー]
なお、一般公開鍵サーバーなどでは、公開鍵の指紋 fingerprint がホームページ上で表示されていますので、入手した pubkey.asc のfingerprint
C:¥GPG> gpg --fingerprint | moreと同一であることを確認します。
C:¥GPG> q [Enterキー](または、終了まで下スクロールする)
さて、"修正パッチと PGP 署名を以下の場所からダウンロードし,PGP ユーティリティを使って署名を確認してください." では、
ABCD.patch.asc および ABCD.patch を同時にダウンロードして、C:¥GPG にコピーします。
C:¥GPG> gpg ABCD.patch.asc
gpg: Signature made **/**/** **:**:** using DSA key ID ********gpg: Good signature from "FreeBSD Security Officer <security-officer@freeBSD.org>" の2行があれば、「改ざん なし」と判断できます。
|
|
|