以前はPOPTOPを使用していたのだが

FreeBSD7になって、入れなおそうかと思ったけど、

なんかうまくできなく挫折。

でも家にインターネットからリモートで入りたいので調べてみることに。

1番簡単なのは、SSHからの転送。

家のクライアントPCにリモートデスクトップしたいだけなので、

これが1番簡単なのでこれを使うことに。

というか、POPTOPいらないや。

3389番ポートだけ接続すればリモートデスクトップは成功しました。

 

もううざすぎなので

sshへの辞書攻撃がうざいので、対策をしました。

いろいろ調べてみると結構いろいろソフトはあるようです。

SSHパスワード認証に対する総当たり攻撃への対抗ツール

この中で、bruteblockをチョイス。

現在FreeBSDとipfwで合致するのがこれだったので。

で、説明書をと思ったのですが、

BruteBlockV0.0.5

を呼んでもいまいちわかんない。

1.makeでインストールしろ、オプションなんてない。

2.コンフィグファイルを設定。見て大体わかったというかFreeBSDだと使える設定ファイルを

すでに用意してあったので、それを使用する。

(ちょっと違うところあるのでそれはauth.log見つつ変更うちの環境だと

May 19 10:28:01 hostname sshd[1119]: Invalid user aaron
from ???.???.???.???

ってなログが多くてうまく拾ってくれないことが多かった。)

3.Logがburuteblockに送られるようにする。

4.ipfwでtableで通信を遮断する設定を追加する。

(ここがはじめわからなかったが、ipfwにはtableという変数を使って設定することが可能。)

例にある。$(fwcmd) add deny ip from me to table\(1\)は、

ipfwがtable1に書いてある内容を遮断するということらしい。

いままで使用してなかったのでtableって何だろ?と思ってえらい調べました。

まあ、manに書いてあったのだけど、こういうときは真っ先にmanしないとだめですね。

ipfwには、tableが1~127くらい設定できてそれを変数として使用することが可能なようです。

コマンドで書くときは、括弧で囲んでそれをエンコードしないといけないので上のようになるらしい。

中ではipfw add deny ip from me to table(1)になる。

tableの番号は、コンフィグで書かれた番号なのでもし複数する場合は、変更する。

 

うまくいけば、複数回ログオン試行後にauth.logに以下のようなログが出力される

May 19 10:28:01 hostname bruteblock[863]: Adding 64.33.51.237
to the ipfw table 1

これで動作完了。

うるさいログが少しはマシになりそうです。

 

QMAILでのトラブル

ちょっとはまったこと。

portでqmailをインストールして、controlファイルとか書いて起動をしたのだが、

テストで、mailコマンドを使うとメールがローカルに入っていかない。

エラーは、

relay=[127.0.0.1], dsn=4.0.0, stat=Deferred: Connection
refused by [127.0.0.1]

とでて、配送されてない。

迷ったのは、refusedの文字。拒否されてる?ってことは設定間違いか。と一生懸命調べましたが。

解決策が見出せず。迷っていました。

で、telnetで25ポートを叩いてみるとConnection refusedの文字が出ました。

そこから、起動してないポートをたたくとConnection refusedの文字が出るということが分かり。

inetとか起動してないから、timeoutになると思っていたんだが、なんかrefused返すのがあるのかな?

qmail-smtpdを起動してみると、メールが配信されるようになりました。

qmail-smtpdってリモートだけと書いてたから、起動してなくても良いと思っていたのに。

参考:文書とか

 

リモート環境のためにssh設定

FreeBSDでは、初期にsshdを起動するかの設定変更が可能ですが

初期設定では、Keyがないとログインできない設定です。

Keyなしでも入れる設定に変えるのもいいのですが

それよりもKeyの作成をしたいと思います。

で、ssh-keygenの使用方法

ssh-keygen

なんだけど、まあ、なにやればいいのかわかんない。

単にKeyを作成するなら、

ssh-keygen -t (ras/dsa)

で質問に答えるだけ。

ほかで使いそうなオプションは、

-b (bit)の鍵の強度bit数 ただし、rsaにしか使用できなかった。

homeに.sshというDirectoryができ、中にid_rsa(dsa)とid_rsa(dsa).pubができているので

id_rsa(dsa).pubの方をauthorized_keysに名前変更か追加する。

id_rsa(dsa)は、リモート起動するPCに持っていく。

Keyさえ設定すれば、FreeBSDの初期値でlogonできるようになります。

ちなみにsshのサーバ設定は、

/etc/ssh/sshd_configなのだが

さくっと見てみたが、

sshd_config

sshd_config 解説 : マロンくん.NET

(この中でPasswordAuthenticationをYesとしていますがこれは、keyを作成したのであれば、

Keyをもっている人だけのがいいのでnoにしましょう。FreeBSDのデフォルトはnoです。

Keyを使わないでパスワードをそのまま使用できるという意味なので勘違いしないように)

 

変更は、1点、UsePAMをnoにする。新しい項目なのでいまいちつかめないのだが、

英語見ても大体しか理解できないし。

 

補足:Protocol プロトコルのバージョンです。1と2がありますが、使うほうだけでいいでしょう。

FreeBSD QandA 1947(1.2の違い。)

 

portsコレクション

最近はソースで入れたほうが入れるときは楽かなと思うのだが

入れた後のメンテナンスとか考えたりパッチを当てることを考えるとportsの使い方も

覚えたほうがいいかもということでportsを活用することに。

portのアップデートは前に調べたので

Garry’s Diary: FreeBSD自体のUPDATE用いろいろ

あとは、portsの使い方を

make;make installで大抵済んでしまうんだが前から不思議に思っていた。

ソースからコンパイルするときのconfigureのオプションとかどうなるのだろうと

いろいろ調べてみる。まんま同じ質問をしている人がいた。

FreeBSDのportsでアプリケーションをインストールするときに、configureオプションはどこで設定するのでしょうか。 make configureというコマンドを実行しても、オプション.. – 人力検索はてな

で、まとめると。

・最近のはmake configでオプションとして出てくるのがある。(apache22では可能だった。)

・make.localファイルにCONFIGURE_ARGS+=で追加すればconfigureに直接書くのと同じ?

portsとMakefileに関していろいろ調べてみたのですが

上記に関してのわかりやすい情報がなく、見つけたのはこんなところです。

参考:Ports

portsでのMakefileでのファイルを取ってくる順番を変える方法が載っている。

  1. MASTER_SITE_OVERRIDE で指定されたサイト
  2. Makefile 中の MASTER_SITES で指定されたサイト
  3. MASTER_SITE_BACKUP で指定されたサイト

とのことなので、/etc/make.confに設定してみることにする。

参考:Makefile のサンプル

いまいちよくわからないのですが、わかるところだけ抜粋すると

・#はコメントと最初のほうで作者とかPortの名前とか入っている。

・依存portsに関してRUN_DEPENDSとLIB_DEPENDSの2つらしい。

ってことくらい。

あとでもっといろいろ調べてみる必要あり。いまいち動作の行動が把握できないや。

 

 

 

続きを読む

サーバを入れなおす前に、いろいろ調べてみよう。

いつもながらに適当にやってたので、すこし環境設定を調べてみようということで

WindowsのVirtualPCでいろいろやりつつ勉強を。

とりあえず、CUIオンリーのサーバマシン構築のため

インストールは、X Windowなしでインストール。

カーネルとかのソースは勉強するためにすべて入れて、セットアップ。

初期設定で、ユーザとルートパスワードとネットワークIFの設定を終了させる。

これでインストールは終了で、これからが本番。

まず最初にするのは、コンパイラの設定がいいかなと思って調べてみる。

portsを作成するときやKernelを再構築するときにgccを使って作成するらしいので

そこで使うgccのオプションを設定しなければならないらしい。

gcc自体が使うのが/etc/make.confを見てオプションを読み込むらしいので

設定してみる。

参考Url

【FreeBSD】kernel/portsを最適化コンパイルする

otsune’s FreeBSD memo :: /etc/make.confの設定例

読んでみるとあまり設定しすぎても変になると書いてあるので

CPUTYPEのみ設定することにする。

覚書資料:

見本:/usr/share/examples/etc/make.conf

実物:/etc/make.conf

 

FreeBSD6でも7でもデフォルトでは、P3程度での最適化されているようです。

P4以降だとカーネル等もコンパイルしなおすほうがいいのかもしれません。

見本を見るとcore2やopteronなどあるのでそれらの場合は変更してみるのがいいかも。

まあ、サーバだとあまり変わらない気もしますが。

 

やっとでたが

スラッシュドット・ジャパン | FreeBSD 7.0-RELEASE登場

7.0が出たのでサーバマシーンを新しくするか迷い中。

性能はどうでもいいけど、省電力に重点置いて組み直す予定。

少し前に買ったワットチェッカーだと120W(アイドル)になってて

ちょい多いので100W以下にはしたい。おそらく1番の問題は5個付いてるHDD

だと思われるので、Core2でHDD2台、Memory4Gくらいになると思う。

どうせならamd64に移行する予定。

ただBackupどうするか迷い中。Mainの方のデータとんだ件も考えて、

Raidだけでは心許ないので全体バックアップを考えた方がいいのかもしれません。

 

 

続きを読む

Sendmailを勉強中なのだが

うまく情報を見つけられない。

Webをいろいろ見てみると、設定の仕方は書いてあっても

設定の説明をしているページは少ないです。

いわゆるSoftwareDesign的な書き方をされてるページが多いが

UnixMagazine的な書き方をしているページは少ないです。

みんな英語の説明書読んでるのかな。大体だと読めるんだけど理解するには

結構不足なのと、読むのが遅いです。

sendmailで見つけたページで使えそうなのは、

http://www.imasy.or.jp/~ume/published/sendmail-auth/ sendmail.mcの解説

http://www.imasy.or.jp/~ume/published/sendmail-milter/ 解説としては、
説明部分がすくないが図での解説あり

http://www.linux.or.jp/JM/html/sendmail/man8/sendmail.8.html Sendmailの起動コマンド一覧

くらいでした。FreeBSD系からのデータが多いな。Linuxはこうすれば動くよと書くが説明ないからなにしてるか

分からないし勉強には使えない。

ハックするにはやっぱりBSD系がいいですね。

 

FreeBSD自体のUPDATE用いろいろ

FreeBSD自体のUPDATE用コマンド

「freebsd-update」(6.2Rから組み込み済み)

いま入ってるのは6.1なんだがこれのために6.2できれいに入れなおすかな。

Portで入れてもいいのだが6.2のがすっきりする感じがする。

Ports用コマンド

「portsnap」(6Rから組み込み済み)

初回起動時は、

portsnap fetch (リストの更新をDLする。)

postsnap extract (リストの展開と更新をする。)

を実行。

2回目以降は、

portsnap fetch (リストの更新をDLする。)

postsnap update (リストの更新をする。)

をします。そのときのPortsリストをすべて更新します。

extractには、update+展開の機能があるので初回にextractすれば、updateはいらない。

portsの現在のバージョン比較する。

「pkg_version」

portsnapを実行した後に、実行すると現在入っているVersionと最新のVersionを比較してくれる。

portsで入れたソフトの更新

「portupgrade」

portupgrade -all (入っているすべてのソフトをUpgradeする。)

 

やっと復活

やっとサーバが復活しました。

IPアドレス取れてるのになぜか通信できなくて迷いまくってました。

で、結局問題は、natdとかの設定でpingすらとばなくなっていたぽいです。

原因わからずにずっと放置してましたが正月休みでがんばりました。

・portsnap
http://wiki.fdiary.net/BSDmad/?portsnap
はじめから入っているのでインストールの必要はなし。
portsnap fetch && portsnap extract && portsnap
update
を入力するだけ。

・samba
portsでインストール。
samba3系を入れた。
今までの日本語にするために、
デフォルトと違うのは、
/usr/local/etc/smb.conf
display charset = CP932
unix charset = EUC-JP
dos charset = CP932
を追加。いろいろ見ると、unix charset=eucJP-msとなっているが、
これにすると今までのが見えないので、EUC-JPにした。
http://www.fkimura.com/samba1.html

・bind
portsでインストール後
設定ファイルを作成して終わり。

・apache
PORTからインストールして終了。
mod_usedirを入れて、USERのディレクトリ表示させる。

・qmail
http://www.yomaigoto.jp/freebsd/qmail_bsd.html
ports:mail
ほぼこれと同じことを実行。
FreeBSD6だとPorts実行時にパッチが選べるので、パッチ宛必要なし。

・pop:checkpw
ポートにはないので、落としてくるしかない。
http://checkpw.sourceforge.net/checkpw/
make;make setup check
で終了。
/usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup Wired
/bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildir &

・squid

・dhcpd:isc-dhcp3-server
ports:net
そのままインストール。
/etc/dhcpd.conf
を編集。
http://www.hayagui.com/dhcp.html

・tcpserver
http://www.y-min.or.jp/~nob/qmail/tcpserver.html
ports:sysutils
ルール設定
smtp.data
192.168.:allow,RELAYCLIENT=””
127.:allow,RELAYCLIENT=””
:deny

$tcprules /etc/smtp.cdb /etc/smtp.tmp < /etc/tcp.smtp
tcpserverを起動するときに、-xコマンドで、smtp.cdbを読み込む。

http://www.fmmc.or.jp/~fm/nwmg/TL6.1Svr/secure/mailserver9.html

・mfs
インストール必要なし。元からはいっている。
mount_mfs -s 256000 -o nodev,nosuid md /tmp
## TMPのRAMDISK作成。

・firewall
natdと帯域制限で使用できるようになっている。
/sbin/ipfw -f flush
## ipfwの初期化。すべての条件をまっさらにする。
/sbin/ipfw add 10137 deny tcp from any to any 137 via fxp1
137ポートに行くのを止める。

・natd
元から入っている。
http://hiiro-sou.hp.infoseek.co.jp/unix/freebsd/2-4.html
カーネル再構築が必要。
IPFIREWALLの関係
カーネルに追加
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPDIVERT

/etc/sysctl.confに
net.inet.ip.forwarding = 1
/etc/rc.confに
gateway_enable=”YES”
コマンドラインで
natd -dynamic -n re0

・帯域制限
http://infonet.cse.kyutech.ac.jp/~nori/memo/dummynet.html
カーネルに追加
option        DUMMYNET
option        BRIDGE
/etc/sysctl.confに追加
net.link.ether.bridge=1
net.link.ether.bridge_ipfw=1
net.link.ether.bridge_cfg=(WORLD側インターフェイス):1

帯域制限のコマンド
/sbin/ipfw add divert natd all from any to any via fxp1
## fxp1を通るものをフィルターリングする。
/sbin/ipfw add 110 pipe 10 tcp from any 80 to any out via
fxp1
## TCP 80を通る外向けをpipe 10に送る。
/sbin/ipfw pipe 10 config bw 100Kbyte/s
## pipe 10を 100k/Sに制限する。

ssh
ホームディレクトリに.sshディレクトリ作成して、
ssh-keygen -t rsa
で、キーを作成する。
その後、id_rsa.pubをauthorized_keysに入れる。
id_rsaの方は、クライアントに入れる。

ということでMEMO残し。

まあ、最後わからなくなると思いますが、というか前と同じにやったら死んだし。

Version変わってかなり変更あるみたいなのに読まないでそのままやっちまったのが今回の原因。

1月近く放置状態でした。