cron –          おやじdemo_CentOSを使う
12月 192013
 

今日は雪が降るといって降りませんでしたが、とても寒い一日でした。
場所によっては沢山降ったところもあるかと思います。一人でパソコンをやっている時には体を冷やさないように暖かい格好で作業しないと手が冷たくなったり、足元が冷えたりして血液の循環が悪くなって肩凝りをしたり、風邪を引いたりするので、皆さんもご注意ください。

前置きが長くなりましたが、久しぶりに家のATOMサーバー(CentOS-6.4 64bit)について書きたいと思います。

このところ、ちょこちょことセキュリティ面の強化をしていました。
と言うのが、アタック(攻撃)が毎日のようにあるからです。
メールサーバーだけではなく、Apache(httpd)、WordPressにもあります。

最近の攻撃スタイルとしては、WP(WordPressの略)のURLに対してcgi-binやらPHPやらの長いアドレスを付けてエラー表示をさせて、Apacheのヴァージョンを調べたり、Apacheの設定に隙が無いか確認をしつこい程行ってきます。WPもヴァージョンが新しくなりましたから脆弱なところは今のところありませんが、ファイルの属性(パーミッション)等には注意が必要です。

メールサーバーについては、SMTPの認証に、Brute_Force_Attackという形で色々なIDとパスワードを総当りでぶつけてきます。これは以前からやってきていますが、無駄にサーバーのリソースを使われるのが悔しいので対処方法を考えていました。

Apache(httpd)については、DoS攻撃対策用に、mod_evasiveの設定をしたありましたが、その他にも、mod_securityを導入しました。このmod_securityはルールを設定して、そのルール外の要求に対してブロックをしてくれます。httpdのiptableみたいな感じです。導入する事によってパフォーマンスの低下は仕方ないところですが、何か対処しなくては、と思っているサーバーオーナーの方は、調べて導入してみることをお勧めします。

特に私が感動してしまったシェルがあります。

sshd
vsftpd
Postfix+Dovecot
Apache

このCentOSの標準装備のサービスに対して、各logからエラー表示を抜き取り、自動的にその攻撃してくるIPをdeny扱い(遮断)してくれて、その結果をメールで通知してくれる、とても有難いものです。

 

Brute Force Attack対策+α  で見てください。

 

CentOS-5、CentOS-6に対応してあって、内容がとても分かり易く、効果抜群です。
作者のry.tl様、ネットでの提供ありがとうございます。

何度も同じIPからの攻撃で悩んでいる方は是非とも検討して欲しいと思います。

ちなみにIPが遮断されると・・・・・・

[HTTP]ログ監視にて、5回の不正なアクセスログを確認。
対象ホストのIPアドレスをiptables及びブラックリストファイルへ追加しました。

IPアドレス [81.143.170.220]

[MAIL]ログ監視にて、5回の不正なアクセスログを確認。
対象ホストのIPアドレスをiptables及びブラックリストファイルへ追加しました。

IPアドレス [195.70.7.165]

というようなメールが設定されたアドレスに届きます。この設定では5回同じエラーを確認すると遮断するように設定がされているので、丁度、5回目にdeny_IPとなった訳です。上がhttpdで下がpostfixです。

何しろ、今まで手作業でdeny_IPをしていましたが、自動的にcronでログをチェックしてくれて、ブラックリストに自動的に書き込んだ上に遮断してくれる有難いものです。

毎日、どんな奴等がブラックリストになっているか、ログを見る楽しさもあります。
攻撃されないのが一番ですが、それはあり得ないし、個人的に管理しているサーバーであれば、セキュリティ面においては、気を配って欲しいと思っています。

このような良いソフトに出会えて良かった。

8月 092012
 

ATOM鯖の現在の情報です。

top – 21:44:24 up 26 days, 11:13, 1 user, load average: 0.27, 0.33, 0.26
Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.5%us, 3.0%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4009496k total, 1598940k used, 2410556k free, 240664k buffers
Swap: 4128760k total, 0k used, 4128760k free, 1021496k cached

外部からHTTPにアクセスしても起動が速くキャッシュがきちんと動作している感じがします。
あえて調子が良い分、システム的な事に関しては触らず状態にしています。
毎日来るlogwatchの情報もエラー表示はありませんし、iptablesのいたずらIP情報くらいとなっています。

無駄なcronを止めて手動に切り替えたらメモリの消化も驚くほど少なくなりました。
上記の表を見ると4GBメモリの内、使用が2.4GBですが、この2.4GBの内キャッシュとして1GBあるので、実質使用は1.4GBということになります。今日で約27日(26日+11時間)ですからまだまだ連続で稼働させてみようと思います。

この夏の暑さ対策も何もしておりませんが、ATOMの省電力のおかげで暑い部屋の中でもACもかけず放置プレイでも黙って動いていてくれます。
いくら処理速度の速いCPUや豊富なメモリを積んだとしても無駄なサービスやCron、Updateなどが足かせになっていること。手動に切り替える事により鯖への負荷がだいぶ違うという事が分かりました。

そんな事でこの夏は再起動無しで乗り越えてみようか?と考えています。

 

7月 082012
 

このところ鯖が不安定でちょっとした負荷がかかるとパニック状態になり落ちやすくなってきていました。現在はこの原因と思われたソフトの起動やcronなどの自動更新など止めていますが、それでもcron.dailyで動作している他の更新作業でパニックになったりしています。
前ほど頻繁ではありませんが、落ちてそのままになっている状態なのでこれが最悪で、パニックになったら自動的にrebootするようにしていても固まったままです。

現時点では追加したUMAXの2GBメモリ×2の相性問題もありますが、これは検証するにしても時間がかかるので後回しにします。

とりあえずはKernelの起動を変更します。
起動を変更といっても旧verのkernelで起動させるということです。

現在の状況は・・・・
# rpm -q kernel (rpmでインストールされているkernelをすべて表示する)
kernel-2.6.32-220.13.1.el6.i686
kernel-2.6.32-220.el6.i686
kernel-2.6.32-220.17.1.el6.i686
kernel-2.6.32-220.23.1.el6.i686 *

*印の付いている最新kernelで起動しています。
これを2世代前の13.1に戻すというか、rebootしても13.1でしか起動させないようにします。

# vi /etc/grub.conf
以下はgrub.conf本文
———————————————————————————
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#title CentOS (2.6.32-220.23.1.el6.i686)
# root (hd0,0)
# kernel /vmlinuz-2.6.32-220.23.1.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap quiet rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM
# initrd /initramfs-2.6.32-220.23.1.el6.i686.img

title Memtest86+ (4.10)
root (hd0,0)
kernel –type=netbsd /elf-memtest86+-4.10
#title CentOS (2.6.32-220.17.1.el6.i686)
# root (hd0,0)
# kernel /vmlinuz-2.6.32-220.17.1.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap quiet rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM
# initrd /initramfs-2.6.32-220.17.1.el6.i686.img

title CentOS (2.6.32-220.13.1.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.13.1.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap quiet rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM
initrd /initramfs-2.6.32-220.13.1.el6.i686.img
#title CentOS (2.6.32-220.el6.i686)
# root (hd0,0)
# kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap quiet rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM
# initrd /initramfs-2.6.32-220.el6.i686.img

———————————————————————————
title CentOSという行の黒い太字にした部分を#を先頭に付けてコメントアウトしました。コメントアウトしていないのが起動させるkernelである13.1だけ。(memtestもありますがkernelではありません。メモリテストのソフト起動用です)

これで再起動をしても13.1でしか起動しません。
最後にreboot後に確認をします。

# /bin/uname -r (現在何のkernelで起動しているか調べるコマンド)
2.6.32-220.13.1.el6.i686

ちゃんと13.1で起動しています。

これでまた様子を見ることにします。
13.1か17.1か悩みましたが古い方を選択しました。
やはり鯖の場合にはkernelを最新にするよりも安定度を優先させなくてはなりません。

また、kernelがyumによって自動的に追加させないようにyum.confも変更しておきます。
# vi /etc/yum.conf
exclude=kernel* (この行をどこかに追加する。kernelをアップデートの対象から外す)

以上でkernelも手動でupdateしない限りは13.1で使用できる環境となりました。