bbz

さくらのVPS

_
previous | next | edit
1: Fri Oct 21 18:13:46 2011
レンタルサーバから移行した。
いろいろメンドクサイのでおぼえがきを記す。
2: Fri Oct 21 18:17:51 2011
レンタルサーバで動いていたcgiがinternal server errorになることがある。

/etc/httpd/logs/error_log
を見ると、

Premature end of script headers

と書いてある。
改行コードがCRLFになっているとこうなるそうだ。

改行コードを確認するには、
od -c test.cgi

とやると、改行コードが\nとか\r\nとか表示される。

\r\nになっていた場合は、以下のようにして変換する。
$ tr -d \\r <windows.txt >unix.txt
3: Fri Oct 21 18:28:24 2011
sendmail

こいつがメンドクサイ。
まず、みんなが当たり前のようにやっているが前提として理解しておく必要のあること。

sendmailの設定ファイルは sendmail.cf というテキストファイルである。
この設定ファイルはムズカシイことで有名で、私も以前ちょっと調べてみたことがあるがさっぱりわからなかった。

最近は、sendmail.mc という設定ファイルの設定ファイルみたいなものができて、
それをm4 というコマンドを以下のように使って sendmail.cfに変換してくれるようになったようだ。

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf


sendmail.mc なら、なんとななく何をしているのかが想像がつく。

そして sendmail.mcだが、コメントの書き方がちょっと変わっていて、行頭に dnl と書く。
行末にもdnlがついているところがあるが、これはあってもなくてもいいようだ。


dnl #
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl #

dnl #
dnl # Also accept email sent to "localhost.localdomain" as local email.
dnl #
LOCAL_DOMAIN(`clebriz.net')dnl
dnl #
4: Fri Oct 21 18:29:53 2011
今例示した下記の設定は、メール転送をローカルに限るという設定なので、外部からのメールを受信する場合はコメントアウトする。

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

5: Fri Oct 21 18:34:49 2011
さて、外部からのメールの受信であるが、実はまだうまくいっていない。
いろんなアカウントを作るときにメールアドレスが必要になることがあり、VPSを持っていれば実質無制限にアカウントを作れるのだが、メールが受信できなきゃしょうがないな・・・


[root@wwwXXXXXu ~]# sendmail -d0.1 -bt < /dev/null
Version 8.13.8
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
TCPWRAPPERS USERDB USE_LDAP_INIT

============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = wwwXXXXXu
(canonical domain name) $j = wwwXXXXXu.sakura.ne.jp
(subdomain name) $m = sakura.ne.jp
(node name) $k = wwwXXXXXu.sakura.ne.jp
========================================================

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>


多分これが原因じゃないかと思う。
wwwXXXXXu というのはVPSサーバに与えられるfqdnで、これを clebriz.netに変えて使っている。
sendmail.mc にドメイン名を設定したのだが、このコマンドに反映しない。
このコマンドのオプションの意味はよくわからない。後で調べる。

6: Fri Oct 21 18:38:30 2011
gmailからVPSのアカウントにメールを送ると、
/var/log/maillog に以下のようなログがあるので、サーバには届いているようである。

Oct 21 17:32:58 wwwXXXXXu sendmail[9748]: p9L8WtBO009748: from=<hoge@gmail.com>, size=1182, class=0, nrcpts=1, msgid=xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx-cueQtTA@mail.gmail.com>, proed=ESMTP, daemon=MTA, relay=mail-bw0-f50.google.com [209.85.214.50]
Oct 21 17:32:58 wwwXXXXXu sendmail[9749]: p9L8WtBO009748: ed=<hoge@clebriz.net>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=314
56, dsn=2.0.0, stat=Sent
7: Fri Oct 21 18:57:35 2011
>>4
これは、ホスト名を逆引きして表示しているようである。
WEBブラウザで操作する「VPSのコントロールパネル」でホスト名を変更したら反映した。

このときに正引き登録が必要なので、新しくホスト名を付けた。
普段はホスト名なしでアクセスしていたのだが多分、名前は必要なんだよね?

ついでに、 /etc/hosts, /etc/sysconfig/network にも設定する。
いらなかったかな?

再起動したら、コマンドプロンプトも変わった。
8: Fri Oct 21 18:58:39 2011
メールも来てた!
めでたしめでたし。
9: Fri Oct 21 19:13:49 2011
rootじゃない、後から作ったアカウントでログインするのだが、そのアカウントではlsすらできない。
いつもsu - をやってrootで操作していたのだがメンドクサイので、自分のアカウントの所属グループを変えることにした。

wheelにすればいいのだろうと思っていたがすでにwheelになっていた。
wheelではlsもできないのか・・・

rootのグループを見ると、admとか sysとかたくさんのグループに所属している。
rootと全く同じにする必要はないから、とりあえず admとかに入れてみたがダメだ。

そして気付いた、groupaddではひとつのグループにしか登録できないことを。
調べると vigr というコマンドがあって、これを使えばグループの設定ファイルを編集できる。
しかるべきグループに追加し、晴れて ls が実行可能となった。

所属グループの確認: id
一つのグループに所属させる場合の変更: usermod -G wheel hoge
グループ設定ファイル編集: vigr
10: Fri Oct 21 19:17:50 2011
何をしたかったかというと、アクセスログから検索後を探して表示しているcgiがあるのだが、件数がそんなにないので、見つかった時点でtweetするようにしようと思った。

すでに一つbotは稼動していて、試験的な運用なのでそれで試してもいいのだがせっかくなので新しいアカウントを取って新しいbotを作ろうと思います。
11: Fri Oct 21 19:31:02 2011
あれーまた受信できなくなった。
グループ変えたせいか?
Fri Oct 21 19:59:47 2011
できた。ようわからん。

mail -u hoge

でhogeのメールを見る。

echo test|mail root

でrootに"test"という文字列を送る。
12: Fri Oct 21 22:42:19 2011
さて、メールが受信できるようになった。
しかし、日本語はエンコードされている。
デコードしなきゃ。
どうやるんだろう?
perlでちょいちょいとやればできそうなのだが、よくわからない。情報もない。
しょうがないからpop3で受信する。

dovecotをインストール。
yum install dovecot

設定ファイルは特にいじらずに起動する。
service dovecot start

outlook expressで受信してみるがダメ。
telnet xxxx 110 でも入れない。

ping xxxx はいける。

service dovecot status
を見てみたら停止していた。
/var/log/maillog を見ると、

Oct 21 22:27:43 tal dovecot: auth(default): Unknown authentication mechanism 'dram-md5'

とあるので、設定ファイル /etc/dovecot.conf で dram-md5 と書いてあるところを探して、消して、再起動。

受信できた。こっちは簡単。
というか、sendmailもたいしたことはなかった。

でも、dnsとかiptablesとか、ある程度知ってないとワケがわからないかも。
13: Mon Oct 24 18:01:32 2011
自宅のPCでVPSのサーバにPOP3アクセスしてメールを受信することはできているが、送信できないことに気付いた。

VPSとはいえ自分で管理するサーバを持ったときに一番注意しなければならないのは不正アクセスである。
特にSPAMの踏み台になることは絶対に避けねばならない。
だから、少なくとも誰も彼もが私のVPSサーバにSMTPアクセスできるようになっていないことは確認できた。

しかし自分のPCからはアクセスしたいので、いろいろ設定しているのだがどうもうまくいかない。
そのうち、/var/log/secure に大量の不審なアクセスのログが記録されているのに気付いた。
1秒おきにユーザ名を変えてsshアクセスしているログだ。

アクセスもとのアドレスは数個しかなかったのでwhoisでしらべてそれらを含むブロックをrejectした。

アドレスは中国、台湾、アメリカ、タイとバラバラである。
おそらく踏み台にされているのだろう。
また、アクセスの仕方が非常に乱暴なのでごく単純なスクリプトを、興味本位で試しているようなものかもしれない。
14: Mon Oct 24 18:04:46 2011
whoisといえばいつもブラウザでANSIのwhoisを使っていたが、まてよと思ってcentosのコマンドでやってみたら検索できた。
15: Mon Oct 24 18:56:14 2011
どうしてもSMTPアクセスできない。
telnet 25 もできない。
PCでキャプチャしたら synを送ったきり応答がない。
サーバ側でtcpdumpしても何もこない。
ポートが開いていないのか、と、iptablesを見ると空いている。

でも、やっぱり25が開いていないとしか思えない、googleで探すとVPSの試用期間は25番が開かない、とある、
もしかして試用期間が終わったのに設定が解除されていないのか・・・?と思う。

nmapでスキャンしてみたら、やっぱり25は開いていなかった・・・
16: Mon Oct 24 19:24:41 2011
さくら VPS sendmail 25

などで検索してみると、どうやら「試用期間がすぎても25番が開かない」ということがあるようだ。
再起動したら直った、再起動してもダメだからポート番号変えた、などの情報があった。

再起動は何度かしたけどもう一辺やってみる・・・ダメ。
ポートを587に変える。

以前コメントにした DAEMON_OPTIONSで使用ポートを変更できる。
Addr=127.0.0.1 は削る。

DAEMON_OPTIONS(`Port=587,Name=MTA')dnl


iptables で 587をあけてiptablesをrestart

m4をやって、sendmailをrestart

送信できた・・・

この野郎~ッ!!!!!
17: Mon Oct 24 19:26:33 2011
しかしお陰様で sendmailやiptablesやnmapの使い方を勉強できたよ
18: Tue Oct 25 13:55:03 2011
また新しいアドレスから sshアタックが来ていたので、iptablesに追加した。
しかしこれはイタチごっこになりそうだ。

と、誤って自分のアドレスをフィルタしてしまい、sshが固まった。
ヤバい・・・と、リモートコンソールがあることを思い出した。
しかし、なぜかアクセスできない。

と、「VNCコンソール」というものがあるのに気付いた。
よくわからないがこれだとアクセスできたのでiptablesの設定を直す・・・
19: Tue Oct 25 14:13:44 2011
denyhosts というソフトがあって一定の回数のアクセス失敗があると自動的に hosts.denyに追加してくれるものがあることを知り動かしてみたが、自分のアドレスが登録されてしまった。
過去のアクセス状況を見ているのだろうか。

それと、登録がホスト単位であること、拒否するのがsshdであることが気に食わない。

やっぱりiptablesでブロックごとドカンと跳ね除けることにした。
20: Tue Oct 25 15:38:44 2011
wikiを作ろうと思ったがsphinxというpythonでできたおもしろそうなのがあったので、
これを使ってみる。

yum install python-pip python-setuptools

をやってから、

pip-python install sphinx

をやる。

これだけでいいはずなのだが、インストール中にSyntaxErrorが出る。
最後は Successfully installed となっているので、

sphinx-quickstart

をやってみるが SyntaxError: invalid syntaxで動かない。

pythonのバージョンが古いのかと思ってupdateしてやり直したがダメ。

とりあえず、見送り。
21: Tue Oct 25 16:30:25 2011
しょうがないからpukiwikiにする。
ダウンロードして解凍するだけ。

ちなみにPCにダウンロードしてFTPでアップロードした。
WEBにあるファイルをコマンドでダウンロードするにはどうすればいいのか?

lynxを入れる?
22: Tue Oct 25 18:00:07 2011
sshdへの不正アクセスに悩んでいる人は多いようだが、私のように一人しか使ってないのなら、
もうsshdは止めておいて、使う時だけコンソールから入って起動したらいいんじゃないかな。

もっというと全部リモートコンソールでやってしまってもいい。
23: Tue Oct 25 18:29:49 2011
とりあえずsshdできるユーザを制限

基本的にアクセス制限はデーモン単位でなくiptablesで出禁にする。
24: Tue Oct 25 18:48:44 2011
・・・と、ムキになってアクセス制限をしてみたものの、
別にパスワードが割られたわけでもなし、
運用不能になるほど負荷があがったわけでもなし・・・。

止めてしまうよりもログを集めて分析したほうが面白いんじゃないかと思えてきた。
25: Fri Oct 28 17:04:09 2011
perlでimagemagickを使いたくて、cpanでインストールしたらエラーになった。
調べると、yumでいれればうまくいくとのこと。

yum install ImageMagick-perl

なんで・・?
26: Sat Oct 29 07:27:26 2011
ヘンなアクセスをしてくるIPはムカつくからiptablesでブロックしている。
whoisを見て、どこの国かなどを見る。

基本的に日本人以外には有用なものはないから、日本以外を全部遮断してもいいんだけど、
それじゃ中国のGreatFWだもんね。

27: Sat Oct 29 07:29:09 2011
ftp.apnic.net/stats/apnic/delegated-apnic-latest

ちなみにここを見ると、どの国にどのIPアドレスが割り当てられているかはわかるようである。
日本以外をブロックするとかができるわけだ。

でも、インターネットに情報をさらしておきながら国内にアクセスを限るってのもどうかと思う。

28: Sat Oct 29 14:34:38 2011
あとIPアドレスが海外のものでも、日本人が海外の会社でサーバを借りたとか、
海外勤務の日本人が、とか、そういう場合もあるからやっぱりアドレスを管理しているISPの国を見てもあまり意味はないかもしれない。
29: Wed Dec 28 19:07:21 2011
不正アクセスの試みが絶えない。
とりあえずftpdは起動しない。
sshdとsendmailは止めるわけにはいかない。
30: Wed Dec 28 19:10:42 2011
外部からのmailは転送できてlocalhostがダメってどういうことだ
31: Wed Dec 28 20:26:10 2011
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

これがデフォルトなのですが、ポート番号を変え、さらに外部のメールを転送するために以下の様にしました。

DAEMON_OPTIONS(`Port=587,Name=MTA')dnl

しかしこうすると、外部のメール(つまりパソコンのメールソフトから送信する)のは可能なのですが、サーバにsshでログインして

echo aiueo|mail root

とかやると、送信できないのです。

デフォルト設定に戻すとローカルの送信は可能になりますが外部から送信できない。
ローカルでも外部からも送信できる方法はないのだろうか?

ローカルでmailコマンドを実行すると port 25になっているのか?
mailコマンドでポート番号を指定する方法があるのか・・・?

わからない!!!
32: Wed Dec 28 20:29:35 2011
とりあえず外部からメールを送る必要はないので、デフォルト設定に戻した。
33: Wed Dec 28 20:31:16 2011
タダ不思議なのは、以前は両方できてたはずだということ。
それがbugzillaをインストールしてbugzillaからメールを送ろうとしたらできず、
あれと思って外部から送信したらそれもできなかった。

メールクライアントで認証設定を追加したら送れるようになった。

何も変えていないはずなのに・・・
34: Wed Dec 28 20:38:40 2011
/etc/mail/authinfo

を作成する方法が紹介されていた・・・
しかしこのファイルはデフォルトでは存在しない・・・
587にポートを変更するから特別な設定が必要なのか・・・・
メンドクサイ・・・
そもそもなんで25を587に変えたんだっけ・・・
たしか25では送信できなかったからだ・・・
別に25が587に変わったから何だって言うんだ・・・
スパマーが587に来たら同じ事じゃないのか・・・
わけがわからん・・・
35: Thu Dec 29 09:48:31 2011
sendmailの設定( sendmail.mc → sendmail.cf ) でポートをデフォルト(25)にし、iptablesでも25を開けているのに、
どうしても port 25が開かないのである。

サーバにsshで入って telnet localhost 25 とやればsendmailに接続できるのだが自宅のPCからはできず、
nmapしてみると25が開いていない。

サーバでnetstatした結果は 25 と 587以外に違いはないようだが・・・

sendmailの設定とiptables以外に、ポートを制限する設定があるのだろうか?
Thu Dec 29 10:02:34 2011
25が開かないのはおそらくさくらのVPSの仕様なのでしょう。
正確には「25が開かない」のではない。サーバでは開いているが、その手前でブロックしているのではないでしょうか。ルータかなんかで。本当はブロックしてはいけないはずですが、まあ25を使うのは危険のようだからそれはよしとしましょう。

そして 587を使うとローカルからメールが送信できない理由は、どうもmailコマンドを使った場合認証しないからのようです。

echo test|mail root

とやったときに、アクセスするのはローカルのsendmailなのですが、ここで認証をしていないので送れないのです。外部のPCのメールソフトで「送信サーバには認証が必要」を設定しないようなものです。

mailコマンドで認証させる方法をman mailとかネットで検索してみましたがどうもないようで、それをさせるのが authinfoファイルを使うやり方のようです。ここにユーザ名とパスワードを設定するようです。
36: Thu Jan 5 00:20:06 2012
sshdのポート番号を変えました。ピタリと止んだ。
37: Tue Feb 14 20:14:58 2012
ドメインをもう一個とって、マルチドメインとした。
レンタルサーバを借りたのだが、vpsでマルチドメインにすればいいと気づいてキャンセルした。

httpd.confの一番下にコメントアウトされている<VirtualHost>セクションがあるので、
そこでDocumentRootのフォルダ名やログファイル名を設定する。
DocumentRootのフォルダを作成する。
取得したドメインのAレコードのアドレスをVPSサーバのアドレスにする。
DocumentRootにファイルを置く。
httpdをrestartする。
これだけ。
38: Sat Jun 16 16:11:58 2012
saslauthdのログがsecureに・・・
なんだこれ
そもそもsaslauthdって何だ?
停めようかな
39: Sat Jun 16 16:12:41 2012
停めた。
40: Sun Dec 9 17:14:36 2012
VPSを再開。
41: Sun Dec 9 21:34:34 2012
今度はpostfix&dovecotにした。また苦労した。しかもまだ外部からの送信ができない。
42: Thu Jan 30 23:23:52 2014
やっとメールサーバがまともに使えるようになった。

外部からのメール受信、メールクライアントソフトからの送受信ができるようになった。

これで事実上無制限のメールアカウントを作り放題である。

何がおかしかったのかはよくわからないが、

クライアントのアカウント設定に@ドメイン名をつけてなかっただけかもしれない。
43: Sat Feb 22 22:30:08 2014
test
44: Sun Nov 9 15:29:06 2014
さくらのVPS2台目を借りる。

お試し利用にしているが、
たぶん、本契約する。

メモリ2GBタイプにしたら、速い。

1台目はcentosの1GB石狩にあるやつで、
2台目は東京にした。

ubuntuをインストールする。

ubuntuでやりたいことがあったので、2台目を借りたのだ。
45: Sun Nov 9 15:35:22 2014
sshをインストールして、ポート番号を変えたが変わらない。

iptablesはufwとかいうので、

allow ssh

とかで簡単に設定できる。


sshのポート番号変更は後でやろう。
46: Sun Nov 9 15:36:39 2014
ubuntuは、suでrootになれない。

なれるように設定できるのかもしれないが、少なくともデフォルトではなれない。

root権限を使う場合は sudoを使う。

いちいちパスワードをいれるのは面倒くさいが、

なんでもrootでやらないようになっているのは、よいことだろう。
47: Sun Nov 9 20:02:50 2014
nginxを入れてみた。

最初はapache2を入れたのだが、せっかくなのでなんか違うものを、と。

そして、nginxにはリバースプロキシ機能があるというので、設定してみた。


といっても、どれもこれも、「設定」とか「構築」などというたいそうなシロモノではない。

^
previous | next | edit