2014年5月14日水曜日

特定のPCだけsamba接続が急に遅くなった、の意外な結末

ざっくり100台くらいある社内PCの中で、特定のファイルサーバ(samba3.0)に対してのアクセスが遅くなったPCがあった。
見てみるとクライアントPCには異常が無く、全く理由が分からない。
社内にファイルサーバが点在しているのだけれども、ざっくり10個あるうちの3つに対して、何故か遅い。
管理用のPCからのアクセスは普通(これがワイヤレスで繋がっていることが悲劇だった)。
サーバの方かしらんということでサーバを再起動するが全く関係ない。
興味深かったのは、拠点を無線で繋いでいるのだけれども、無線の先にあるファイルサーバに対してはこのクライアントPC、問題なかったりする。
まさかとは思いつつも、「ネットワークハブか」とひらめいて、
スイッチングハブを再起動させたら症状が無くなった。
スイッチングハブですよ、スイッチングハブ。
なんだかなあ。
問題だったのはbuffaloのレイヤー3スイッチ。
当時消して安いものでは無かったのだが、まさかのエラー。
多分macアドレスオーバーフローとか、そんなところな気がする。
ということは誰かがアタックかけたのか・・・正直アタックしても何も情報は得られないんだけどなあ・・・フルアクセス出来るようにみんなにしてるし・・・。

社用で使うには民生品でもいつの良いものを選んだ方がトラブル無いよね、という話でした。
お勧めはアライドテレシス。ただ、高い!兎に角高い。
なので結局buffaloの製品に頼るしか無いという悪循環。
まあ、L3なんてものは使わず、L2の簡単なスイッチングハブにしとけ、ということです。

2014年4月26日土曜日

SSHでブルートフォースアタック(総当たり攻撃)される

前の投稿とかがこの辺関連してくるのだが、1月末に「とあるOSSの普及促進を図るNPO団体」のサーバからブルートフォースアタックを受けた。
報告したのだけれども、返信無くそのままサーバが閉鎖されただけだったので、もう書いても良いんじゃないかと思っての投稿。
セキュリティに気を遣ってます!という触れ込みでのこの事態なので、公にしたくないのも分かるけど、報告者に位一言言ってくれても良いんじゃないですかね・・・一応被害者でもあるんですよ・・・。
ABUSEIPDBにも報告上がってるし、どうしたいんだか。
オチとしては、こんな感じでお察し。名前が出てくるということはシェアが広いからなのか、それとも・・・。

2014年1月29日水曜日

torからのアクセスだったりをiptablesで検知・拒否して接続させないようにしたい

何か物騒な世の中なので、一応対策らしいものもしなければ、ということで、iptablesで拒否してみることにした。
iptablesにはいつも通りシェルスクリプトで読ませることにする。

この前
http://roserogue.blogspot.jp/2014/01/centosiptablesip.html
で海外からのアクセスを禁止したい記事を入れたのでこちらも参照のこと。

参考は
http://d.hatena.ne.jp/rudeboyjet/20070226/p1

内容としては、IPDENYTORという名前のユーザー定義チェインを作成(-N)して、
ログを取りアクセスはドロップする設定を書き、
if文で/root/denytorlistの中に書いてあるIPアドレスをDROPする。

vi /root/iptables_denytor.sh

#!/bin/sh
################################################
#DENY TOR
################################################
iptables -N IPDENYTOR
iptables -A IPDENYTOR -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES IPDENYTOR]: '
iptables -A IPDENYTOR -j DROP
if [ -s /root/denytorlist ]; then
  for ip in `cat /root/denytorlist`; do
    iptables -A INPUT -s $ip -j IPDENYTOR
  done
fi

chmod 700 /root/iptables_denytor.sh

denytorlistという、torのIPアドレスを貼り付けたものを作る
touch /root/denytorlist
vi /root/denytorlist
ipアドレスは、以下のサイトからIPアドレスのcsvを取ってきて貼る。
http://torstatus.blutmagie.de/index.php
csvへの直リンクが出来なそうなので、wgetで取得するのは無理そう?

chmod 700 /root/denytorlist

あとは/etc/rc.d/rc.localに
sh /root/iptables_denytor.sh
を入れればOKのはず。

ただ、読ませるのに相当時間がかかるので、これやる必要あるのか?というのも勿論ある。
まあ禁止リストの一環と思えば・・・。

修正。
denytorlistは実行できん・・・多分脳が寝ていた。。

2014年1月27日月曜日

linuxを丸ごとバックアップをしたい(ddかdumpか、それが問題だ)

何故かmondo rescueが激調子悪い今、どうしようか、
ということで、ddとdumpを使うことにする。

方法:dd
ddはセクター単位でバックアップをしていく(簡単に言うと、ディスクに書き込まれているデータを「そのまま」バックアップする)ようなので、
「まさに正しいバックアップを取れる」が、その代わりぶち壊れることもある(認識しなかったりする)らしい。
しかし、imgファイルとしてバックアップすれば、中身はマウントしてみられるので、まあ悪くはないと思う。

http://takuya-1st.hatenablog.jp/entry/20101025/1288002819

の通りで、コマンドは
dd if=バックアップするディスク(例:/dev/sda1) of=バックアップ先(例:/media/mountdisk/backup.img)

if=がバックアップ元指定、of=がバックアップ先指定。


dd でディスクからイメージファイルへ

HDDに空き容量があるなら、イメージファイルを作っちゃうのが後で使いやすい。

dd if=/dev/sdb of=/var/disk-img/some-winXp-hdd.img

とURLでは書かれているので、ドライブ丸ごとバックアップも可能だろう。

バックアップの途中経過は
killall -USR1 dd
で見られる。他詳しくはURL参照のこと。

imgファイルのマウント方法は、
mount -o loop マウント先 マウントしたいimg
たとえば
mount -o loop /media/image/ /media/mountdisk/backup.img

方法:dump
dumpは恥ずかしながら一階も触ったことがない。
大抵のドキュメントが、詳しいのかそうで無いのかよく分からない説明ばかりだから。
一応
http://www.usupi.org/sysad/122.html
http://chidipy.jpn.com/server/other/ext3backuprestore.html
を見て、

dump -0 -f バックアップファイル バックアップ対象のパス
というのは分かった。
dump -0f /media/backup/sda5.dump /dev/sda5
こんな感じでバックアップを取る。

また、パーティション構造も記録(UUIDが違うと駄目だったりするらしいのでuuidも)

fdisk -l > /<任意の場所>/fdisk_<デバイス名>.txt
df -k > /<任意の場所>/df.txt # cat /etc/fstab > /<任意の場所>/fs.txt
ls -l /dev/disk/by-uuid/ > /<任意の場所>/by-uuid.txt
#以下はあるのとないのがある。
pvdisplay > /<任意の場所>/lv.txt
vgdisplay > /<任意の場所>/vg.txt
lvdisplay > /<任意の場所>/vp.txt

さて書き戻し方だけど、
http://www.atmarkit.co.jp/ait/articles/0301/07/news001_3.html
とか、他諸々を参考に・・・実は未だ書き戻していなかったりする。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1332476248
は、ddでバックアップを取るか、dumpでバックアップを取るか、どちらが良いかの参考になる。

好みは、ddかな・・・。

2014年1月22日水曜日

兎に角海外からのアクセスを制限、遮断したい(centos上でiptablesを使ったIPアドレスアクセス制限)

サーバ立てていると、兎に角どこから沸いてきたのか辞書攻撃をばんばんする輩がいる。
勘弁してください・・・ddosとか掛けられると速攻落ちるくらいの貧弱スペックで運用してる奴に限って、
何故か半端ない・・・。





環境は
centos(サーバはcentos5とcentos6)とiptables。


hosts.allowとhosts.denyで制限するという方法も散見されたが、正直どうだろう。
正しいと思うけど、複雑なことをさせようとすると凄いことになりそう。

で、その対処法。
まず考えたのは、SSHを通しているので、こいつに辞書攻撃を仕掛けられていること。

http://blog.browncat.org/2007/07/sshiptables2.html

を参考に、2行書いてやればかなり収まる。
60秒間に8回SSH接続しようとしたIPをはじく、とある。

-A RH-Firewall-1-INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
-A RH-Firewall-1-INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

がcentosには適応する。

が、それだけでは怒りが収まらない。
こうなったらと、日本以外の外国からアクセスを遮断することにする。

http://vogel.at.webry.info/201306/article_1.html
と
http://vogel.at.webry.info/201306/article_2.html
を参考に(というか丸パクりして)設定。

以下は僕の環境下で使ったmemoなので、ちゃんとしたものと解説はURLの方参照してください。

#!/bin/sh
#COPYRIGHT
#http://vogel.at.webry.info/201306/article_1.html
#http://vogel.at.webry.info/201306/article_2.html
#http://blog.browncat.org/2007/07/sshiptables2.html
IPTABLES=/sbin/iptables
if [ $# -eq 1 ]
then
    if [ $1 = "stop" ]
    then
        $IPTABLES -F
        $IPTABLES -Z
        $IPTABLES -X
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        $IPTABLES -P FORWARD DROP
        echo stopped..
        exit
    fi
fi
$IPTABLES -F
$IPTABLES -Z
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -N ACCEPT_FILTER
$IPTABLES -A ACCEPT_FILTER -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type redirect -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT

$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT_FILTER

$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

#SSH Accept(上2行は別から)
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT_FILTER

#WWW Accept
#$IPTABLES -A INPUT -p tcp -m multiport --dport 80,443 -m state --state NEW -j ACCEPT_FILTER

#日本のIPからのみアクセス出来る
wget -N http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -q -f -c cidr.txt.gz > cidr.txt
if [ -f cidr.txt ]; then
    $IPTABLES -F ACCEPT_FILTER
    sed -n 's/^JP\t//p' cidr.txt | while read address; do
        $IPTABLES -A ACCEPT_FILTER -s $address -j ACCEPT
    done
    $IPTABLES -A ACCEPT_FILTER -j DROP
fi
#eof
シェルスクリプトなので、実行可能な場所において、ファイル名.shで保存(もういっそ/rootとか)、
chown root.
chmod 700
(rootの持ち物(ドットまで入れるとグループもrootになる)で、アクセス権はルートのみフルアクセス)
/etc/rc.d/rc.local
に
sh /ファイルまでの絶対パス/ファイル名.sh
とかの形式で書いてやれば、起動時に読み込んでくれる。

これで収まった。
味噌は、有志がIPアドレスレンジのファイルを公開してくれてるところ。凄いよなあ・・・。

追記
torのアクセス遮断を別記事で

2014年1月21日火曜日

中途半端に旧バージョンのphpをcentosにインストールしたい(外部リポジトリだけどolds内にある時)

いまいちyumの仕組みが分かっていないけど、旧バージョンのphp関係をインストールしなければならなくなったので、そのメモ。

今回はcentos5指定だったので、centos5.10(i386版)にphpの旧バージョン5.3をインストール。


ここを参考にする。
http://blog.hello-world.jp.net/?p=584
http://d.hatena.ne.jp/omiyan/20110114/p1

remiリポジトリを登録して、更に

http://rpms.famillecollet.com/enterprise/5/olds/i386/
(URLはremiリポジトリのディレクトリ)
からパッケージをダウンロードしておかなければならない。

外部リポジトリの追加方法は
http://oxynotes.com/?p=4792
を参照。

remi    Fedora プロジェクトのコントリビュータでもある Remi Collet 氏が運営しているリポジトリhttp://www.1x1.jp/blog/2013/12/how-to-install-php-rpm-on-centos-5-and-6-amazone-linux.html
epel    レッドハット(fedoraプロジェクト)提供のリポジトリ。https://fedoraproject.org/wiki/EPEL/ja
ius    PHPとMySQLの普及振興を目的としたリポジトリ。http://iuscommunity.org/pages/About.html

ダウンロードして置かないと、yum install php-5.3*とか入れても、そんなパッケージは無いと怒られる。
釈然としないがそんなものなのだろう(多分oldsの中だからと勝手に推測する)。

i386版なので、参考URLのシェルスクリプトをいじって、i386版をダウンロードするようにする。

#! /bin/bash
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-cli-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-common-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-bcmath-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-dba-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-devel-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-gd-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-imap-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-ldap-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-mbstring-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-mysql-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-odbc-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-pdo-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-pear-1.9.4-7.el5.remi.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-pecl-ncurses-1.0.2-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-pgsql-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-process-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-snmp-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-soap-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-xml-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-xmlrpc-5.3.23-1.el5.remi.i386.rpm
wget http://rpms.famillecollet.com/enterprise/5/olds/i386/php-pecl-apc-3.1.13-3.el5.remi.i386.rpm

ダウンロードできたら、

yum install --enablerepo=remi,epel php-common-5.3.23* php-cli-5.3.23* hp-5.3.23*

とかでインストール。
rpmコマンドでも多分インストールできるが、必要パッケージがないとか言われることがある。


勘所は、
remiだけでなくepelもリポジトリとして登録しておくこと。
なんとremiだけだと、libeditを見つけられずにエラーが出た。
うへえ。

2013年12月18日水曜日

三菱重工のアフターサービスは万全だった。

三菱重工製のとある商品を買ったところ、1週間もしないうちに壊れてしまった。
正直何故壊れたのか、全く分からない突然死だったので、初期不良だろうと思い、マニュアルに書いてあるコールセンターに電話した。
すると、郵送かドアtoドアかどちらかになるという。
本来は販売店に持ち込んでくれと言うことらしいが、そこはamazonなのでそんなことをやってくれない。
郵送するにも箱を捨ててしまっており、無い。
ではドアtoドアということで、取りに来てくれることになった。

明日取りに来てくれるというので、運送屋(ヤマトか佐川か)が来ると思っていたら、なんと現れたのは三菱社員(多分提携のサポート会社)。
因みに商品価格は2万円以下。
大丈夫ですか三菱さん・・・と思いながらも商品を預けたところ、3日くらいでまた届けに来てくれた。
ホントに大丈夫ですか三菱さん・・・。
修理内容は現品交換とのこと。
いや技術者動かすよりも安いかも知れませんが、真面目に大丈夫ですか三菱さん・・・。

未だにこんな動きが出来る会社があることにびっくりしつつ、三菱に惚れ込んだ次第。
思わず業務用エアコンを三菱で見積もり出したり、仕舞いには株を買ってしまったというオチがつくのは、また別の話。