ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2013年3月14日木曜日

[error]ファイルサイズ制限を超過しました


ステージング環境で symfony の test:all を実行した時、
エラーが大量に発生して、テストが通らなかったのです。

■エラー
sh: line 1:  4611 ファイルサイズ制限を超過しました
Test returned status 153


何?何事?

Linux はファイルサイズに制限があります。
基本2GBです。
http://blog.livedoor.jp/cielo_cielo/archives/65189748.html


そんなに肥大化したファイルって何だろう…あ、ログか(;・∀・)

$ ls -lh log/frontend_*
-rw-rw-rw- 1 user user 2.0G  3月 14 11:20 log/frontend_test.log


oh... orz
ということで、ログをローテートして、無事解決!

$ php symfony log:rotate frontend test --priod=7 --history=5

2012年12月21日金曜日

Linux サーバ上でエンコードされたメールを PHP でデコードして確認する方法



Postfix 設定に失敗して、送信されるはずだったメールがローカルユーザと勘違いされ、
でもローカルユーザにそんなやつはいないから root 宛に転送されていた。
mail コマンドで確認したら、メールの内容が残ってた!助かった!でも文字化けしてる…

=E3=81=93=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=AF=E3=80=81 ...


http://d.hatena.ne.jp/minesouta/touch/searchdiary?word=*%5BPerl%5D&of=10
これは文字化け?いいえ、Quoted Printable です。
エンコードされているんですよ。
Perl でデコード出来ます。


http://www.plus-a.net/tools/text_tool/
試しにデコードをしてみよう。
お!読める文字になった!


http://pentan.info/php/quoted_printable.html
php でも Quoted Printable 文字列の変換することができるんですよ。
quoted_printable_decode っていう関数があるんです。


php がインストールされているからデコードできそうだ!
早速やってみよう!


メールが記録されているファイルを確認
# less /var/spool/mail/root


あったあった!
これらを別のファイルに書き出す
# cp /var/spool/mail/root /root/mails.txt


書きだしたファイルをデコードして別に保存する
# php -r "echo quoted_printable_decode( file_get_contents('mails.txt') );" > decode_mails.txt


サーバからダウンロードしてきて確認。
subject に余計な文字が紛れていて、所々おかしいけど、これで読めるようになった!


2012年11月25日日曜日

vim : netrw の note が出て困る


最近、windows で vim を使い始めました。
NetBeans だと、自動で補完されるので忘れっぽい私にはとても助かっていたのですが、毎日2回は反応しなくなるという困ったちゃん。
そこで、社内の Vimmer から色々頂いて vim に挑戦したわけです。

しかし、vim を使っていると次のような注意書きが毎回出てきて、ちょっと困ってました。

**note** (netrw) consider setting g:netrw_localcopycmd<copy> to something that works


検索したら、対処法が見つかったのでやってみます。




vim ~/.vimrc

" ファイルの最後に以下を追加しました。
let g:netrw_localcopycmd=''


これで、エラーが出なくなりました。

ちなみに、netrw は ファイルブラウザ。:Explore コマンドのやつです。

Netrwを使いこなす
http://d.hatena.ne.jp/hagure_beans/20100603/1275591475


2012年8月29日水曜日

mod_evasive で画像をチェックしない方法

セキュリティ対策として、mod_evasiveを入れたのはちょっと前。
画像のロードが多いサイトだったので、DoSアタックと勘違いされてアラートメールがぞくぞくと…

通常、mod_evasiveはIPアドレスしかwhitelistに登録できません。
そこで、コンパイル前のソースを書き換えて特定の条件ではスルーするようにします。



------------------------------



[mod_evasive20.c]

- #define MAILER  "/bin/mail %s"
+ #define MAILER  "/bin/mail -s 'DoS Alert! from your-service.com' %s"


static int access_checker(request_rec *r)
{
int ret = OK;

+    /* IGNORE_DOS */
+    if (apr_table_get(r->subprocess_env, "IGNORE_DOS") != NULL)
+      return OK;


※apr_table_get(r->subprocess_env, "IGNORE_DOS") でIGNORE_DOSが有効になっているか確認します。
※apache1.3 を使っている方はいないと思いますが、もし使ってたらap_table_getに直してください。
------------------------------

[modevasive.conf]

+ SetEnvIf Request_URI "\.(gif|jpg|png)$" IGNORE_DOS


※URIに特定の拡張子が含まれていたらIGNORE_DOSが有効になります。

------------------------------


なお、mod_evasive20.c を書き換えた後は、apxsでコンパイルしてApacheの再起動を行います。

# apxs -ica mod_evasive20.c
# apachectl configtest
# apachectl graceful


以上!



※参考URL※

ap_table と apr_table の違い



2012年8月10日金曜日

Fedora8 で php をインストール

今時Fedora8は無いだろうとあちこちから言われそうですが…

たまたま昔テスト用の環境に作ったものが残っていたので使っていましたが、phpのバージョンが古くエラーが出てしまいました。
OSのバージョンアップでも良いのですが、phpだけアップグレード出来ればと思いまして…(^_^;)


phpはyumでインストールしていました。
なのでyumで5.3をインストールしようとしましたがバージョンがありません。(当たり前
remiを使ってインストールするようです。



wget http://rpms.famillecollet.com/remi-release-8.rpm
rpm -ivh remi-release-8.rpm
yum install --enablerepo remi php

2012年8月7日火曜日

ec2-bundle-vol で鍵ファイルが削除される


ec2 tools を更新したインスタンスでAMIを取得し、そのAMIを起動した時の事です。
元のインスタンスでは動いていた ec2 tools のコマンドでエラーが発生する(;´Д`)
理由は、秘密鍵等々が無いから。



どうやらver.1.4.0.0以降ではこれらのファイルが削除されるのがデフォルトのようです。
以下、「--manual」より。

The recursive copying process copies directories from the volume into the image.
The special directories:

- '/dev'
- '/media'
- '/mnt'
- '/proc'
- '/sys'

are always excluded.

Files matching the following regular expressions:

- '*/#*#'
- '*/.#*'
- '*.sw'
- '*.swo'
- '*.swp'
- '*~'
- '*.pem'
- '*.priv'
- '*id_rsa*'
- '*id_dsa*'
- '*.gpg'
- '*.jks'
- '*/.ssh/authorized_keys'
- '*/.bash_history'

are excluded by default on Linux. Individual files that match these patterns may be
included by specifying the '--include' option.



ちなみに、これまで使っていたver.1.3-53773では削除されません。
マニュアルにも載っていません。うぐぅ…
仕方がないので、必要なものだけは「--include」で指定しました。

2012年7月18日水曜日

umount で -l を使う前に fuser で確認


umountしようとしたら device is busy とエラーが出ること、ありませんか?

どこかで使われてるよ!って言われているのですが、心当たりが全くないので強制的にumountしたくなります。
その気持ちを抑えて、一度使われているプロセスを確認しましょう。


# fuser -muv <umountしようとしているディレクトリ>



このプロセスなら消しても大丈夫と確認した上で、強制umountします。

# umount -l <ディレクトリ>



このオプション、シェル上だと使えませんでした。。。

2012年4月18日水曜日

DoS対策で使えるiptablesのhitcountは最大値=20だった!

iptablesでDoS対策する方法に、hitcountを使って接続回数を制限するものがあります。
sshだったりhttpだったり、ポート別・IPアドレス別に制限がかかるのです。

sshの場合は60秒間で5回など、hitcountが少なくて良いのですが、
httpの場合は画像のロードなどもあるので、10回より多めにしておきたいところです。

さぁ試してみよう!


--seconds 30 --hitcount 50 に設定して、100回接続してみました。
しかしどうでしょう。全てOKになってしまいました。
数値を小さくすると効果が出ているのですが、数値を変えて試すと20以上は全てOKでした。
どうやらhitcountの最大値は20だったようです。
※ここまで検証で試しました。
※この事は普通に英語サイトで記述されています。orz


じゃ、対応してみようか


hitcountの最大値はデフォルトで20です。
設定ファイルを確認してみましょう。

# cat /sys/module/ipt_recent/parameters/ip_pkt_list_tot 
20



このままでは --hitcount 50 としても全く効きません。
なので、基本的な設定を変更します。


# vi /etc/modprode.conf
以下を追加します。

options ipt_recent ip_pkt_list_tot=50


設定を反映しましょう。

/-- CentOS5の場合 [ここから] --/

# service iptables stop
# rmmod ipt_recent
# modprode ipt_recent

/-- CentOS5の場合 [ここまで] --/


# service iptables restart




設定の反映が完了しました。
設定ファイルを確認してみましょう。

# cat /sys/module/ipt_recent/parameters/ip_pkt_list_tot 
50 <- 変わった!?



この設定が有効かどうかは、50回以上自動アクセスするテストプログラムを稼働させて、パケットがrejectされているか見てみましょう。
今回はmod_evasiveに付いてきたtest.plを書き換えて実行してみました。
便利ですね、このテストプログラム。



【参考URL】
hitcountの最大値について:

ip_pkt_list_totについて:

modprode.confの設定が反映されない時はmodplodeをreloadしてみよう:

2012年4月5日木曜日

古いCentOSでyumすると404になる

CentOS4が稼働している仮想環境でyumをしようとしたら404・・・・・・orz
古すぎですねすいません。

CentOS4系はサポート終了のため、ミラーサイトから削除されたそうです。
それでも4系を使いたい場合は以下のサイトに替えましょう。




ただし、$releasever だけではディレクトリが見れない時があります。
そんな時は、$releasever.9と、コンマ以降を付け足してください。

そんな事する前に、OSアップグレードしろって話ですが…

2011年12月10日土曜日

opensshの秘密鍵と公開鍵

サーバに対してSSHでログインする時、鍵を使います。
この鍵の関係があやふやだったので簡単にまとめてみました。


【秘密鍵】
ログインする時に使う、開けるための鍵。
イメージは鍵(そのまま)。

【公開鍵】
ログインしたいサーバに置く鍵。
イメージは錠前。

この2つはペアじゃないとだめ。
それは、家の鍵でも金庫の鍵でも一緒ですね。



以下は鍵の作成と設置方法です。
sshのログインや、rsyncをcronで自動実行する際にご活用ください。
かなり簡略化されていますので、やる前にちゃんと各人調べましょう。



◆鍵ペアの作成◆
linuxのコマンドで簡単に鍵ペアが作れます。

1. ログインを実行するユーザになります。(ex:local)
[root]# su - local
[local]$


2. .sshディレクトリを作成して移動します。
[local]$ mkdir .ssh
[local]$ chmod 700 .ssh
[local]$ cd .ssh


3. コマンドを実行します。
[local]$ ssh-keygen -t rsa
※パスワードを入力します(省略可)
※※ここでパスワードを省略すると、ログイン時にパス無しでいけます。


4. 確認します。
[local]$ ls -l
※以下のファイルが作成されています。
id_rsa = 秘密鍵
id_rsa.pub = 公開鍵





◆公開鍵の設置◆
作成された公開鍵を設置します。

1. 取り扱いに注意して公開鍵を移動します。


2. ログインしたいユーザになります。(ex:remote)
[root]# su - remote
[remote]$


3. .sshを作成し、移動します。
[remote]$ mkdir .ssh
[remote]$ chmod 700
[remote]$ cd .ssh


4. authorized_keysを作成します
[remote]$ touch authorized_keys
[remote]$ chmod 600 authorized_keys


5. 移動した公開鍵をauthorized_keysに追記します。
[remote]$ cat id_rsa.pub >> authorized_keys
※viで開いて、直接公開鍵の中身を書き込むでもOK。


2011年8月11日木曜日

Nagiosでこんなエラーが出た時の対処法

Nagiosの連絡先を変更した時の事でした。
設定ファイルを修正し、設定のチェックもOKだったので反映しました。
すると、すぐにNagiosからアラートが飛んできたのです。

Info: (No output!)


今まで見たこと無いエラーでした。
慌てて設定を元に戻し、Nagiosを再起動。
無事エラーは解除されました。


エラーと一緒にweb画面に出ていたのはこんなエラーです。

Return code of 127 is out of bounds - plugin may be missing
(プラグインが無いよ)




元に戻ったので、もう一度修正→チェック→反映。
また同じエラー…



これ、反映じゃなくて再起動すると解決します。

service nagios reload
service nagios restart


変なエラーが出たら、まず再起動してみましょう。

2011年8月9日火曜日

[解決]muninでmysqlが描画されない

muninでmysqlを監視すると、初期状態では描画されないのが普通です。
そこで/etc/munin/plugin-conf.d/munin-node にmysqlの設定を記述する訳ですが、今回はそれでもうまくいかず…


そんな時はログを見ましょ。
# less /var/log/munin/munin-node.log

Error output from mysql_queries:
/usr/local/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'


PWが間違っている時に出るエラーです。
設定したのにおかしいな。。。restartもしたのに。。。



色々見て回っていた所、そんな時はこんなコマンドで確認すると良いという情報を見つけて早速try。


# munin-run mysql_queries
/usr/local/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

ログと同じエラーが出てきました。
エラー内容しか書いていないので、--debugオプションで詳細を見てみます。



# munin-run --debug mysql_queries

# Processing plugin configuration from /etc/munin/plugin-conf.d/hddtemp_smartctl
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node.bak.110809
# Processing plugin configuration from /etc/munin/plugin-conf.d/postfix
# Processing plugin configuration from /etc/munin/plugin-conf.d/sendmail
# Set /rgid/ruid/egid/euid/ to /103/102/103 103 /102/
# Setting up environment
# Environment mysqlopts = -u root -p<古いPW>
# Environment mysqladmin = /usr/local/bin/mysqladmin
# About to run '/etc/munin/plugins/mysql_queries'
/usr/local/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'



読み込んだ内容は古いPWのものでした。
これは3番目に読み込んでいる設定ファイル「munin-node.bak.110809」のものです。
バックアップとして保存していたのが仇になりました…

このファイルを別の場所へ移動し、もう一度実行。



# munin-run --debug mysql_queries

# Processing plugin configuration from /etc/munin/plugin-conf.d/hddtemp_smartctl
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Processing plugin configuration from /etc/munin/plugin-conf.d/postfix
# Processing plugin configuration from /etc/munin/plugin-conf.d/sendmail
# Set /rgid/ruid/egid/euid/ to /103/102/103 103 /102/
# Setting up environment
# Environment mysqlopts = -u root -p<正しいPW>
# Environment mysqladmin = /usr/local/bin/mysqladmin
# About to run '/etc/munin/plugins/mysql_queries'
delete.value 5
insert.value 2824
replace.value 0
select.value 19336
update.value 3775
cache_hits.value 0



やっとエラー無く値を取得できました。



【教訓】
バックアップファイルを作る時は、別のディレクトリに作りましょう。
あと、debugオプションをもっと活用しましょう。

2011年8月8日月曜日

gzで圧縮したログを見る時に便利なコマンド

gzip圧縮していたapacheのログを直接lessしたら
「バイナリデータでっせ?」
と聞かれてしまいました…

以前はlessで見れたんですけどね…



そのままでは何が書いてあるか全く分からないので、ちょっとコマンドを使ってみます。


# less access_log



# zcat access_log | less



これで、文字化けも暗号も無くなり、普通のテキストで見ることが出来ます。




参考にしたサイト
Tomorrow is always fresh with no mistake in it.@備忘録