2014年9月30日火曜日

bash の脆弱性  SehllShock (CVE-2014-6721)

対応
yumつかってるなら
yum update bashで9月26日にだされた修正パッチをあてればよい


実際どのような箇所が問題なのか詳しく説明してくれているサイト様、すごいよくわかる・・!
http://moro-archive.hatenablog.com/entry/2014/09/27/200553



root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable  ←コイツがでるとアウト
this is a test

上記のようになると脆弱性ありありなので
yum update bashを実行
その後

[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

デナクナッター


----  仕事にて古いredhatの対応もせねばならなくなりそうなので色々まとめ     ------

■redhat or centosなら下記コマンドを実行してOSversionを確認する
cat /etc/redhat-release


■通常のredhat4は既にサポート切れ(2012/02/29)だが、延長契約をしてれば2015/02/29までredhatのレポジトリから
bashのアップデートで対応が可能。延長契約しているのかどうかをユーザ様に確認

#RHEL4 ELSは、2005年に出荷開始された「Red Hat Enterprise Linux 4」の7年間の標準サポートに加え、3年間の延長サポートを提供するもの。これにより、2012年2月29日までの標準サポートを最大2015年2月末まで延長が可能となる。

■現状脆弱性確認
[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable   ←下記のthis is a test以外が表示された場合脆弱性あり
this is a test ←この文字列のみ表示された場合脆弱性なし

■バッシュ対応確認チェックスクリプト
https://github.com/hannob/bashcheck

[root@dti-vps-srv741 ~]# sh bashcheck
Testing /bin/bash ...
Bash version 4.1.2(1)-release

Variable function parser pre/suffixed [(), redhat], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Found non-exploitable CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)

上記のように表示されていれば対応完了済
対応できていないwarningやらerrorなどの文字列が含まれた結果が表示されるかと

■update対応
☆redhat 5~などなら
yum update bash-*
のみで対応できる。

☆redhat 4は延長サポートをうけていれば
 up2date -u bash-*
 で対応可能

☆redhat 4は延長サポートをうけていない場合
1・オラクルからでてる修正パッチをwgetで入手
wget https://oss.oracle.com/el4/SRPMS-updates/bash-3.0-27.0.2.el4.src.rpm
2・リビルド
rpmbuild -rebuild bash-3.0-27.0.2.el4.src.rpm
(rpmbuildコマンドが使えない場合使えるようインストールしておくこと)
3・インストール
rpm -Uvh bash-3.0-27.0.3.i386.rpm

■現状脆弱性確認
[root@xxxxxx]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

上記結果となっていればインストール対応完了


バッシュversion確認
rpm -qa | egrep '^bash'

2014年9月29日月曜日

postfix メモ

■動いてるかもしれないデフォルトのsendmailを止める
/etc/rc.d/init.d/sendmail stop

■postfixインストール
yum -y install postfix

■postfix起動
[root@dti-vps-srv741 trunk]# service postfix restart
Shutting down postfix:                                     [FAILED]
Starting postfix:                                          [  OK  ]

■MTA変更前の設定確認
[root@dti-vps-srv741 trunk]# alternatives --display mta
mta - status is manual.
 link currently points to /usr/sbin/sendmail.sendmail    ←デフォルトはsendmail  

■MTAの切り替え
[root@xxxxx trunk]# alternatives --config mta

There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail                      ・・・デフォルトはsendmailになってる
   2           /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2  ・・postfixは2なので2を入力しエンター

■MTA変更後の設定確認
[root@xxxxx trunk]# alternatives --display mta
mta - status is manual.
 link currently points to /usr/sbin/sendmail.postfix    ←postfixになったことを確認

■メール送信テスト
[[root@xxxxx trunk]# /usr/sbin/sendmail -f <送信元メアド> <送信先メアド> <<EOM
From: <送信元メアド>
To: <送信先メアド>
Subject:テストです
Content-Type:text/plain;charset=UTF-8;
テストでメールを送ってみました。

EOM


送信先メアドで上記の送信テストのメールを受信できたかを確認


2014年9月19日金曜日

linux 権限系コマンドメモ

■現在のディレクトリ配下のroot権限になっているものを探す
find ./ -user root

■現在のディレクトリ配下のroot権限になっているものに対して一括でchown userA.groupAを実行する

find ./ -user root | xargs -i -r chown userA.groupA {}


■SVNの状態を確認する
svn st -u

■ファイルを更新する(SVN)
svn up -r HEAD
※リビジョンはリリースするときにどれを適用するのか決める

2014年9月10日水曜日

手動とcron実行・及び違うサーバで同じシェルスクリプト叩いて実行結果が違った時の確認

実行するときの環境変数の差を疑うべし

実行ユーザでprintenvした環境変数と
cronで実行したprintenvを比べてLANG設定とかちゃんと同じか確認する

# vi /etc/crontab
------------------------------------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

*/1 * * * * root printenv > /root/printenv.txt
---------------------------------------------------------------

# less /root/printenv.txt
----------------------------------------
MAILTO=root
SHELL=/bin/bash
USER=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
LANG=ja_JP.UTF-8
SHLVL=1
HOME=/
LOGNAME=root
_=/usr/bin/printenv
----------------------------------------



検証環境と本番環境で違っていたので上記の方法で確認して本番環境に
LANG設定がされてなかったのを確認