2014年4月30日水曜日

tomcatのエラー画面に表示されるバージョン情報を消す

http://www.ibm.com/developerworks/jp/security/library/se-banner/

2014年4月25日金曜日

Apache Struts2 の脆弱性対策について(CVE-2014-0094)(S2-020)

https://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html
■概要: Apache Struts のバージョン 2.0.0 から 2.3.16 には、ClassLoader を操作される脆弱性が存在(CVE-2014-0094)が存在しますが、同様の脆弱性がApache Struts 1.Xにおいても存在することを確認された。
デフォルト状態のStruts1.X及びStruts1.Xを拡張したフレームワークが本脆弱性の影響を受ける可能性。
過去、Struts2に関する攻撃は脆弱性公表後に早期に行われている傾向がある。
今回のStruts1.Xに対する脆弱性についても、同様に攻撃が行われる可能性があるため、早急な対策を推奨。

■対象となるアプリケーションとバージョン Struts1.X (検証済バージョンはStruts 1.3.8、Struts1.3.10のみですが、他のバージョンも影響を受けると想定される。)

■対策: Struts1.Xはサポート切れの製品であるため修正パッチは提供されない可能性がある。
本脆弱性にはパラメータ名に不正な文字列が含まれる特徴がある。
Struts2では不正なパラメータを遮断する設定機能が提供されていますが、Struts1.Xに同様の機能は存在しないため、設定で回避することが出来ない。
そのため、ServletFilterやWAF等を使用して不正なパラメータ名を含むリクエストを遮断する必要があります。

遮断用文字列の例 (^|\.)[cC]lass\.
※「.Class.」「.class.」「(行頭)Class.」「(行頭)class.」の場合検知するような正規表現となります。
ただ、パラメータ名に前述の文字列を含む リクエストが遮断されるためアプリケーションの正常動作に影響を与える可能性があります。

■想定される被害 (1)サービスの停止 (2)リモートからのファイルの読み込み (3)リモートからのコードの実行
■参考(類似の脆弱性) S2-020 CVE-2014-0094 http://struts.apache.org/release/2.3.x/docs/s2-020.html
http://www.scutum.jp/information/waf_tech_blog/2014/04/waf-blog-036.html

■対策コード
http://www.mbsd.jp/img/testFilter.java


sar CPU・ネットワーク・メモリ・ディスクの情報確認 LinuxCommand

■インストール
CentOS/iostat,sarコマンドのインストール
http://linux.just4fun.biz/CentOS/iostat,sar%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html#n7f92f26

■インストールしたけど実行できないとき
http://www.uetyi.mydns.jp/wordpress/linux-server/entry-122.html


以下インストールして実行できず実行できるようになるまでのメモログ。CentOS6.3
[root@xxxxx  ~]# sar
-bash: sar: コマンドが見つかりません
[root@xxxxx ~]# yum install sysstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:9.0.4-22.el6 will be installed
--> Processing Dependency: /etc/cron.d for package: sysstat-9.0.4-22.el6.x86_64
--> Running transaction check
---> Package cronie.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: dailyjobs for package: cronie-1.4.4-12.el6.x86_64
--> Processing Dependency: /usr/sbin/sendmail for package: cronie-1.4.4-12.el6.x86_64
--> Running transaction check
---> Package cronie-anacron.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: crontabs for package: cronie-anacron-1.4.4-12.el6.x86_64
---> Package exim.x86_64 0:4.72-4.el6 will be installed
--> Running transaction check
---> Package crontabs.noarch 0:1.10-33.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch           Version               Repository    Size
================================================================================
Installing:
 sysstat                x86_64         9.0.4-22.el6          base         230 k
Installing for dependencies:
 cronie                 x86_64         1.4.4-12.el6          base          73 k
 cronie-anacron         x86_64         1.4.4-12.el6          base          30 k
 crontabs               noarch         1.10-33.el6           base          10 k
 exim                   x86_64         4.72-4.el6            epel         1.2 M

Transaction Summary
================================================================================
Install       5 Package(s)

Total download size: 1.6 M
Installed size: 4.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): cronie-1.4.4-12.el6.x86_64.rpm                    |  73 kB     00:00
(2/5): cronie-anacron-1.4.4-12.el6.x86_64.rpm            |  30 kB     00:00
(3/5): crontabs-1.10-33.el6.noarch.rpm                   |  10 kB     00:00
(4/5): exim-4.72-4.el6.x86_64.rpm                        | 1.2 MB     00:00
(5/5): sysstat-9.0.4-22.el6.x86_64.rpm                   | 230 kB     00:00
--------------------------------------------------------------------------------
Total                                           2.5 MB/s | 1.6 MB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : exim-4.72-4.el6.x86_64                                       1/5
  Installing : cronie-1.4.4-12.el6.x86_64                                   2/5
  Installing : crontabs-1.10-33.el6.noarch                                  3/5
  Installing : cronie-anacron-1.4.4-12.el6.x86_64                           4/5
  Installing : sysstat-9.0.4-22.el6.x86_64                                  5/5
  Verifying  : crontabs-1.10-33.el6.noarch                                  1/5
  Verifying  : exim-4.72-4.el6.x86_64                                       2/5
  Verifying  : cronie-anacron-1.4.4-12.el6.x86_64                           3/5
  Verifying  : sysstat-9.0.4-22.el6.x86_64                                  4/5
  Verifying  : cronie-1.4.4-12.el6.x86_64                                   5/5

Installed:
  sysstat.x86_64 0:9.0.4-22.el6

Dependency Installed:
  cronie.x86_64 0:1.4.4-12.el6        cronie-anacron.x86_64 0:1.4.4-12.el6
  crontabs.noarch 0:1.10-33.el6       exim.x86_64 0:4.72-4.el6

Complete!
[root@xxxxx  ~]# sar
/var/log/sa/sa25 を開けません: そのようなファイルやディレクトリはありません


[root@xxxxx ~]#  /etc/init.d/sysstat start
Calling the system activity data collector (sadc)...
[root@buront ~]# sar
Linux 2.6.32-431.el6.x86_64 (buront.localdomain)        2014年04月25日  _x86_64_        (2 CPU)

11時12分23秒       LINUX RESTART
[root@xxxxx ~]#


2014年4月23日水曜日

.htaccess メモ

■有効範囲
適用範囲このファイルを制御をおこないたいディレクトリに置けば、そのディレクトリと下位ディレクトリに設定が反映される。
ただし、下位のディレクトリに別の.htaccessがあった場合はそちらが優先される。
上記のようにOverrideが有効になる範囲が設定されている場合は、許可されている範囲でのみ設定が再定義される。

上位のディレクトリやhttpd.conf(access.conf)には共通の設定を記述し、細かい制御をおこないたいディレクトリで個別の設定をかくとよいだろう。
記述のない項目に関しては、上位ディレクトリの設定が継承されるので、心配ならば明示的に記述しておくほうがよいだろう。

■windowsで.htaccessのファイルを作成するとき
GUI上でやろうとすると弾かれてしまうことぬなる











なのでコマンドプロンプトでやる
適当にファイルを作成したらrenameにて .htaccessとファイル名を修正する

2014年4月22日火曜日

mysql 5.5.32インストールメモ windows

■ダウンロード
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.5/
上記URLからmysql-5.5.32-win32.msiをダウンロード
















■インストール
ダウンロードしたmysql-5.5.32-win32.msiをクリックし実行
以下下記のようにすすめていく































環境変数 Path の設定
インストールディレクトリ/bin をpathに追加する
C:\Program Files\MySQL\MySQL Server 5.5\bin





コマンドプロンプトにてmysqlに接続できるか確認を行う。
mysql -u root -p

2014年4月18日金曜日

文字列処理と入力チェック


ユーザのパスワードを変更する passwd -- LinuxConfig/LinuxCommand

# passwd xxxxxx ・・ユーザ:xxxxxxのパスワードを変更する
# passwd            ・・ユーザ名を指定しない場合はカレントユーザのパスワード変更となる


※rootで他者のパスワードを変更する際は旧パスワードは聞かれない。
※以前使用していたパスワード、またそれと似ているパスワードは設定できない(下記ログはcentos6.3にて施行したもの)
---------------------------------------------
[root@xxxxxx ~]# passwd xxxxxx
ユーザー xxxxxx のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@xxxxxx ~]# su xxxxxx
[xxxxxx@xxxxxx root]$ passwd
ユーザー xxxxxx のパスワードを変更。
xxxxxx 用にパスワードを変更中
現在のUNIXパスワード: xxxxxxxxxxxx
新しいパスワード:
よくないパスワード: 古いものと似ています
新しいパスワード:
------------------------------------

ssh接続の設定 /etc/ssh/sshd_config  LinuxConfig


# RSA秘密鍵 identityを必須にする( no で“必須”を指定 )
PasswordAuthentication no
# rootでのログインを禁止する
PermitRootLogin no
# パスワード無しのログインを許すか
PermitEmptyPasswords no
# .rhosts等を信用するか(RSA認証付き)
RhostsRSAAuthentication no
# ユーザhogeのみ接続許可をする(不特定多数に接続させない為
AllowUsers hoge

設定内容を修正したら再起動を行い設定を反映させる
# /etc/rc.d/init.d/sshd restart

http://www.miloweb.net/ssh.html
http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html
http://akiniwa.hatenablog.jp/entry/2013/09/09/080718


ユーザ一覧を確認 /etc/passwd --LinucConfig--

ユーザー名、パスワード、ユーザーID、グループID、コメント,ホームディレクトリ、ログインシェルが記録されている

[root@xxxxxx ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
~~

root:x:0:0:root:/root:/bin/bash
上記を左から準備
root:ユーザ名
x:「 x 」という文字か、もしくは暗号化されたパスワード。「 x 」はシャドウパスワードを使用している事を意味します。
0:ユーザーID
0:グループID
root:コメント
/root:ユーザのホームディレクトリ
/bin/bash:ユーザのログインシェル名

パスワードの部分が空白である場合、パスワード無しでログインできる。セキュリティ上よろしくなのにで設定すべし。
パスワード部分の「 x 」を削除すると、パスワード未設定の状態になり、 パスワード無しでログインできる状態にする事ができます( パスワード無しでログインできる環境なら )。

ユーザ一覧のみを出力
[root@buront ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
~~

参考
http://kazmax.zpp.jp/linux_beginner/etc_passwd.html

2014年4月17日木曜日

phpのチューニング 設定

Apache MPM/ prefork or worker  メモ

Apacheは2.0から、起動時にMPM(Multi-Processing Modules)という基本モジュールが選択できるようになった


workerモードでは、「php-mbstring」や「php-mysql」などのPHP拡張機能が使えない感じでした。
mod_phpは非スレッドセーフであるため、MPMはworkerではなくprefork一択となる

どっちの設定になっているか確認する方法
# apachectl -V | grep 'Server MPM'
Server MPM:     Worker
※上記はApache2.0.55ではapachectl -VでServer MPMの項目が表示されないので確認できない

ApacheのMPM、「prefork」と「worker」を切り替える方法
http://blog.flatlabs.net/20110222_232623/
Apache + PHPでloadavgがじわじわ上がっていく現象と対策
http://blog.uu59.org/2012-02-18-prefork-mpm-with-php.html

サバリプレイス時のjava画像認証がエラーで表示されなくなったときの対応メモ

java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory

[root@xxxxx ~]# yum install libXp.so.6
java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXt.so.6: cannot open shared object file: No such file or directory

[root@xxxxx ~]# yum install libXt.so.6
java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_13/jre/lib/i386/libawt.so: libXtst.so.6: cannot open shared object file: No such file or directory

[root@xxxxx]# yum install libXtst.so.6

srcを再配備しapa tom再起動後
文字認証が表示されるようになった

imagik

ImagickはPHPからImageMagickを使う際に使うpecl
画像操作/加工系の機能を提供

TCPDF

TCPDF」は、PHP用のライブラリで、PDFファイルを動的に作成するためのライブラリ(クラス)

環境変数の設定 --windows--





Apache+SSL環境構築


eclipseインストール java tomcat設定

Pleiades - Eclipse プラグイン日本語化プラグイン
Pleiades All in One は Windows 向けに開発対象プログラミング言語別でパッケージングした Eclipse 本体と Pleiades および便利なプラグインのセット。
ダウンロードした zip ファイルを解凍 (zip 解凍時の注意) し、eclipse.exe を起動すれば、すぐに日本語化された Eclipse を利用できる。

http://mergedoc.sourceforge.jp/index.html


開発環境にあわせてよく設定変更をする箇所
■javaの設定
ウィンドドウ(W)→設定→Java→インストール済みのJRE
ウィンドドウ(W)→設定→Java→コンパイラー
■tomcatの設定
ウィンドドウ(W)→設定→Tomcat
ウィンドドウ(W)→設定→Tomcat→JVM設定
■antの設定
ウィンドドウ(W)→設定→Ant→ランタイム


※↓はウィンドドウ(W)→設定→Java→インストール済みのJREの設定画面



















■SVN設定
・メニューから「ウィンドウ → パースペクティブを開く → その他 → SVNリポジトリー・エクスプローラー」を選択し、「OK」
・SVNリポジトリー・エクスプローラーで、マウス右クリック → 新規 → リポジトリー・ロケーション
・URL欄に、SVNのアドレスを入力
・ラベル : xxxxxx
・認証 : ログインユーザ名
・パスワード : パスワード
・「終了」をクリック
・「リポジトリ・エクスプローラ」に、SVNの内容が展開されることを確認
 -チェックアウト
・開発対象の案件(リポジトリラベル名)上で、マウス右クリック
・検索/別名チェックアウト
・名前を指定してプロジェクトとしてチェックアウトを選択
・名前の欄を、リポジトリラベル名と同じにする
・「終了」をクリック
・メニューから「ウィンドウ → パースペクティブを開く → リソース」を選択
・入力したプロジェクト名でチェックアウトされていることを確認

2014年4月16日水曜日

Java文字列連結の性能

http://d.hatena.ne.jp/nowokay/20140408#1396924547
http://d.hatena.ne.jp/nowokay/20140409#1397010846
http://d.hatena.ne.jp/nowokay/20140413#1397359039

http://d.hatena.ne.jp/j5ik2o/20110222/1298380551

セキュリティ設定 Linuxメモ

CentOS で行なっておきたいセキュリティ設定
http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html

鍵交換方式による SSH 接続メモ- PuTTY/teraterm

■PuTTY
http://www.kuins.kyoto-u.ac.jp/news/47/putty-gen.html
■teraterm
http://centos.server-manual.com/centos6_ssh_teraterm_rsa.html

/etc/sysconfig/iptables portの設定 LinuxConfig

プロセスが使用中のファイルを調査 -- lsof -- LinuxComand


外部から接続するための設定 postgreSQL


ExcelからPostgreSQLへODBC接続


eclipse メモ

eclipse3.3
java ~6 ~tomcat6.0
eclipse3.6
java ~6 ~tomcat7.0
eclipse3.7
java ~7 ~tomcat7.0

Antメモ

Antインストール
http://ameblo.jp/developer-yk/entry-11062548252.html


Antのbuild.xmlをEclipseから自動生成
http://www.hitachi.co.jp/Prod/comp/soft1/cosminexus/useful/tips/091204_eclipse-create-buildxml.html

build.xml
http://www.javadrive.jp/ant/buildxml/index1.html

Javaメモ


2014年4月8日火曜日

ファイル/ディレクトリのアクセス権変更 -- chmod -- LinuxCommand

ファイル/ディレクトリのアクセス権を変更する

chmod 777 file-x ・・file-xのアクセス権限を777に変更する
chmod a+x file-x ・・全てユーザ(所有者、グループ、その他のユーザー)のfile-xの実行権限を付与する。
chmod -R 777 directory-x ・・directory-x内のファイル全て及びディレクトリのアクセス権限を777に変更する
chown -Rc user-a directory-x -cをつけることによりアクセス権限が変更されたファイルを詳細情報付きで表示する


数値の意味 左から順に所有者、グループ、その他のユーザーの権限
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx


r 読み込み権限
w 書き込み権限
x 実行権限

u 所有者の権限
g グループの権限
o その他のユーザーの権限
a すべての権限

前回起動方法の確認 PostgreSQL

起動対象のデータディレクトリ内に存在するpostmaster.optsを調べる

less /usr/local/pgsql/data/postmaster.opts
↓下記のように起動時のコマンドが表示される
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data"

ファイル/ディレクトリの所有者を変更 - chown - LinuxCommand

ファイル/ディレクトリの所有者を変更する


chown user-a file-x    ・・file-xの所有者をuser-aに変更する 
chown -R user-a directory-x    ・・directory-x内のファイル全て及びディレクトリの所有者をuser-aに変更する 
chown -Rc user-a directory-x  -cをつけることにより所有者が変更されたファイルを詳細情報付きで表示する

2014年4月7日月曜日

号機ごとに違うantターゲットを起動させるときのメモ


hostsの変更反映 Windows config

windows7の場合のhostsファイルは下記
C:\Windows\System32\drivers\etc\hosts

コマンドプロントにて
ipconfig /displaydns
で確認
ipconfig /flushdns で反映
もしくは
net stop dnscache
でDNS Client サービスを停止し
net start dnscache
でDNS Client サービスを起動

/etc/hostsの変更反映 Linux config

# /etc/rc.d/init.d/network resatart
or
# /etc/rc.d/init.d/network reload

ファイル/ディレクトリを検索 -- find -- Linux:command

■ファイル/ディレクトリ/シンボリックリンクなどを検索する

・現位置のディレクトリとその配下にあるすべてより zipとなのつくファイル、ディレクトリを検索し
ひっかかたものをファイル/ディレクトリ名を表示する
find . -name "*zip*" -print

・現位置のディレクトリとその配下にあるすべてより zipとなのつくファイル、ディレクトリを検索し
ひっかかたものをファイル/ディレクトリ名詳細情報つきで表示する
find . -name "*zip*" -ls

・現位置のディレクトリとその配下にあるすべてのシンボリックリンクを表示する
find . -type l

・/var/www/trunk配下にあるすべての .svnとなまえのつく"ディレクトリ"を削除する  
find /var/www/trunk -type d -name '*.svn' | xargs rm -rf
※xargsコマンドは左辺のコマンドの出力結果をxargsの右辺のコマンドに渡す。


・/etc配下にある全てのファイルの中にhogeという文字列が含まれてるか検索し対象ファイル名を表示する
find /etc -type f -print | xargs grep hoge /dev/null

2014年4月4日金曜日

Java jvmのDNSキャッシュ

インフラがドメインのipアドレスを変更して以降javaからの接続でこけるようになった。
javaではipアドレスではなくURLドメイン名で指定してるから問題ねーだろとおもってら
ダメだった。

ググって調べたら
JVMはデフォルトだと一回でも成功しているDNSキャッシュはずっと保持しつづける設定になっている。とのこと
なんでこんな設定になってるのかはDNSリバインディング対策とからしい


インストールされているjavaの中に
/usr/java/j2sdk1.4.2_13/jre/lib/security/java.security
設定ファイルがある

下記行がそのデフォルトを示す設定
#networkaddress.cache.ttl=-1
こいつを下記のように
networkaddress.cache.ttl=0
修正した。

networkaddress.cache.ttl (デフォルト: -1)
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。 指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。-1 の値は、「ずっとキャッシュする」という意味です。

networkaddress.cache.negative.ttl (デフォルト: 10)
java.security で指定して、ネームサービスからの名前の検索に失敗した場合のキャッシングポリシーを示します。 指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。0 の値は、「キャッシュしない」という意味です。 -1 の値は、「ずっとキャッシュする」という意味です。


■jspで現在どのような状態になっているかも下記内容をいれれば確認できる

<%@ page import="java.net.*,java.security.*,sun.net.*" %>
<%
    InetAddress inetAddress = InetAddress.getByName("www.google.co.jp");
    byte[] address = inetAddress.getAddress();
    out.println("Domain Name : "+inetAddress.getHostName() + "<br>");
    out.println("IP Address : "+inetAddress.getHostAddress() + "<br>");
    out.println("Cache Policy : "+InetAddressCachePolicy.get() + "<br>");    
%>


■参考
http://docs.oracle.com/javase/jp/1.4/guide/net/properties.html
http://dev.classmethod.jp/cloud/apache-tomcat-elb-ttl-1/
http://koteitan.seesaa.net/article/95301330.html

ファイル/ディレクトリを削除 rm Linux:command

■rm
rm <対象ファイル名>
rm -r <対象ディレクトリ
rm -rf <対象ディレクトリ>  ファイル単位の削除確認をおこなわず一括削除
rm --help           
rm *.log            現在のディレクトリ内の .logという拡張時がついているファイルを全て削除する


・オプション
-r ディレクトリ内を再帰的に削除
-f, --force 削除確認をおこなわない
-v, --verbose ファイルを削除する前にファイル名を表示
--help rmコマンドの使用法を表示する

ファイル/フォルダの圧縮/展開 Linux:command

■zip  ・・zip方式は、Windowsでよく使われる圧縮方式・ファイルが対象の場合
zip <圧縮後のファイル名> <圧縮対象のファイル名> ・・元のファイルは残る
・ディレクトリが対象の場合
zip -r <圧縮後のファイル名> <圧縮対象のディレクトリ名> ・・元のディレクトリは残る


■unzip
unzip <展開対象のファイル> ・・元のファイルは残る