No Such Blog or Diary
L2TP/IPsec な VPNサーバを Ubuntu 10.04 LTS で設定したメモ
- 2011-12-15 (Thu)
- ソフトウェア ( Linux/coLinux )
そこら辺の wifi を使いまくるとセキュリティ的に心配な時があるので,さくらのVPSでL2TP/IPsec な VPNサーバを作って安全な経路を確保することにしようと考えたのが約一週間前.論文修正とかの合間にやる気なく設定をいじっていたらようやく安定して使えるようになったのでメモっておく.
環境:10.04 LTS amd64 上で,kernel, ipsec, xl2tpd, ppp のバージョンはそれぞれ linux-image-2.6.32-36-server, 2.6.23+dfsg-1ubuntu1, 1.2.5+dfsg-1, 2.4.5~git20081126t100229-0ubuntu3 で.サーバ側にはLANが無いので 192.168.222.0/24 なLANをでっち上げて NAT する(192.168.222.1 をサーバの ppp0 に振って 192.168.222.X を VPN 接続してきたクライアントに振る).
とりあえず白鳥さんなどをインストール.ppp も入るはず.とりあえずX509の鍵は作らない方向でインストール.
sudo apt-get install openswan xl2tpd
ipsec の設定.sudo vi /etc/ipsec.conf で下記の内容にした.後半は /etc/ipsed.d/examples/l2tp-psk.conf の内容をコピーしてゴニョゴニョ弄った結果.
version 2.0 config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.222.0/24 oe=off protostack=netkey conn L2TP-PSK forceencaps=yes authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any
ついで sudo vi /etc/ipsec.secrets で秘密鍵の設定.最後に改行いれないと動かないとかいうバグもあったりなかったり?
: PSK "PRE SHARED KEY HERE"
次に xl2tpd の設定を sudo vi /etc/xl2tpd/xl2tpd.conf で以下のように.まあ,name とか要らない気もするのだけどいいか.
[global] [lns default] ip range = 192.168.222.2-192.168.222.32 local ip = 192.168.222.1 length bit = yes refuse chap = yes require authentication = yes name = l2tpd pppoptfile = /etc/ppp/options.l2tpd.lns
上の xl2tpd の設定で指定した ppp 部分の設定を sudo vi /etc/ppp/options.l2tpd.lns して以下のように.
require-mschap-v2 ms-dns YOUR_DNS_SERVER auth lock hide-password modem
そんで ppp用のユーザパスワードを sudo vi /etc/ppp/chap-secrets で書き込む.面倒なのでサーバ名とかワイルドカードで.
USERNAME * PASSWORD_HERE *
デーモン達の設定は以上で終わって,次にファイアウォールとかの設定を.とりあえず ufw で 500 (IKE)と 4500 (IPsec NAT-T) のUDPを開けておく.
sudo ufw allow 500/udp sudo ufw allow 4500/udp
ついで ufw では設定できない部分を sudo vi /etc/ufw/before.rules で設定.ESP を通すための設定と,xl2tpd を IPsec 以外から使えないようにする設定と,LAN の NAT をさせる設定とを適切な場所に追加.
## *filter に対応する COMMIT の手前に # for ESP protocol of IPsec -A INPUT -p 50 -j ACCEPT # restricts l2tp to be used under ipsec -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT -A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT -A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable ## *filter の COMMIT の後に # nat Table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic from 192.168.222.0/24 -A POSTROUTING -s 192.168.222.0/24 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't be processed COMMIT # end of nat rules
さらにフォワーディングなどの設定を sudo vi /etc/ufw/sysctl.conf で下記のように変更.
net/ipv4/ip_forward=1 net/ipv4/conf/all/accept_redirects=0 net/ipv4/conf/all/send_redirects=0 net/ipv4/conf/default/accept_redirects=0 net/ipv4/conf/default/send_redirects=0 net/ipv4/conf/eth0/accept_redirects=0 net/ipv4/conf/eth0/send_redirects=0 net/ipv4/conf/lo/accept_redirects=0 net/ipv4/conf/lo/send_redirects=0
さらについでに sudo vi /etc/default/ufw で ufw のフォワーディングのデフォルト値を許可に変えておく.これをしておかないと ufw に全てブロックされて悲しくなる.
DEFAULT_FORWARD_POLICY="ACCEPT"
あとは再起動後に ipsec (というか pluto)がコケるのでその修正を.
sudo update-rc.d -f ipsec remove sudo update-rc.d ipsec defaults
ここまでやったら再起動して sudo ipsec verify でとりあえず ipsec の設定を確認.インターフェースが eth0, lo 以外にもあると send_redirects/accept_redirects を 0 にしろと怒られるかも? その場合は sudo vi /etc/ufw/sysctl.conf にその設定を追加して再起動.
多分,これくらいで動いているはず.フレッツ・スポット,b-mobile3G,自宅の NAT の下から windows 7で接続を確認.
TODO: ホストの認証を公開鍵にしたいなぁ.
嵌った所その1:Windows はレジストリをいじらないと IPsec NAT-T で通信できないらしい( http://jp.giganews.com/vyprvpn/setup/windows-7/l2tp.html ).つまり,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent に名前が AssumeUDPEncapsulationContextOnSendRule で値が 2 な32ビット値を書きこんでおく.
嵌った所その2:ESP の 50 はポート番号でなくプロトコル番号.PPTP の GRE もそうだけど.iptables や ufw の設定時に間違う.
嵌った所その3:/etc/ipsec.d/examples にある l2tp-psk のサンプル設定には rightsubnet=vhost:%priv が書かれていたのだけど,結果的にこいつがラスボスだった.これを書いておくと IPsec SA が確立しても xl2tpd がそれを使ってくれず通常の経路で通信しようとしてタイムアウト(つまり,クライアントが SCCRP を IPsec 経由で受け取ろうと待ち受けているのに xl2tpd が別経路でお返事するという状況.).tcpdump 使って次のようなログを見るまで気づかなかった.
01:12:32.024312 IP CLIENT.isakmp > SERVER.isakmp: isakmp: phase 1 I ident 01:12:32.050034 IP SERVER.isakmp > CLIENT.isakmp: isakmp: phase 1 R ident 01:12:32.116247 IP CLIENT.isakmp > SERVER.isakmp: isakmp: phase 1 I ident 01:12:32.139008 IP SERVER.isakmp > CLIENT.isakmp: isakmp: phase 1 R ident 01:12:32.168086 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 1 I ident[E] 01:12:32.179503 IP SERVER.4500 > CLIENT.4500: NONESP-encap: isakmp: phase 1 R ident[E] 01:12:32.191284 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] 01:12:32.216654 IP SERVER.4500 > CLIENT.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E] 01:12:32.228251 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] 01:12:32.231720 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x1), length 148 01:12:33.232121 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x2), length 148 # この次のが ESP でないといけないのに生のまま…… 01:12:34.233618 IP SERVER.l2f > CLIENT.l2f: l2tp:[TLS](16/0)Ns=0,Nr=1 *MSGTYPE(SCCRP) *PROTO_VER(1.0) *FRAMING_CAP(AS) *BEARER_CAP() |... 01:12:34.233824 IP SERVER.l2f > CLIENT.l2f: l2tp:[TLS](15/0)Ns=1,Nr=1 *MSGTYPE(StopCCN) *ASSND_TUN_ID(56876) *RESULT_CODE(1/0 Timeout) 01:12:34.234186 IP SERVER.l2f > CLIENT.l2f: l2tp:[TLS](16/0)Ns=0,Nr=1 ZLB # クライアントが SCCRP を受け取れないので再び問い合わせる.以下繰り返し. 01:12:35.232021 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x3), length 148
とりあえず困ったときの tcpdump .Windows だと wireshark つかうけど.
困ったときの debug 設定.
# /etc/ipsec.conf の config setup のところに klipsdebug=all plutodebug=all # xl2tpd.conf の [global] のところに debug tunnel = yes debug avp = yes debug network = yes debug state = yes debug packet = yes
- Comments: 0
- TrackBack (Close): -
早朝から迷惑メールフォルダがいっぱい
- 2011-12-15 (Thu)
- 一般
以下,タイトルと時間と本文.
「大事にできるかについて」(4:55)emokenさん 前よりは大事にできると思う。だけど、それで幸福になるかどうかは本人の問題で、私の問題じゃない 転送のみならじゃあemokenさんに送ったメールを〇〇さんに見せてもよい「あと」(4:59)
個人情報が迷惑ならはじめの自己紹介やめたらいいんじゃないか「Re: あと」(5:05)
つまり個人情報をたずねる意味合いも問われてしかるべきなんじゃ「見えてる?」(5:08)
(本文なし)「可能なら応答せよ」(5:09)
(本文なし)「読まなくてよい旨」(5:16)
二度とメール送ってくるなって言ってたのに送ったから、読まなくてよい気がした
まあ,スパムコメントもそうだけど迷惑メールもどうでもいい内容を短時間に細かく分けて大量に送ってくるんだよなぁ.今日来たのなんかただの誰かのつぶやきを見ているようにしか見えん.
そういやスパムツイートとかは無いのだろうか? bot は沢山いるけど迷惑な bot は見たこと無い気がする.
- Comments: 0
- TrackBack (Close): -
今日も迷惑メールが届く
- 2011-12-14 (Wed)
- 一般
今日もまた bot からの迷惑メールが届いた.
「聞かせろの件について」うーん、まぁ、職を鑑みて、どうするかを思うほど、シリアスな状況にはなかったと思う。より実際的に物事を慮する人には、役不足なのかなと思った。プレゼンしたように研究所?があるんでしょ?そちらに問い合わせるよりは、 まぁ趣旨は違っても、連絡先を集めている先に問うのも手かと思ったが、実際より実際的に物事を慮する人には、役不足なのかなと思った。
わけが分からない.サービスに対して不正な入力を送りまくる攻撃に似たようなものか.
「Re: 聞かせろの件について」というタイトルで続きが来た.
あ、い、いや、つまり、やっぱり職業倫理に反するかどうかを考えなくてはいけない事ってのは、やっぱりそんなにはないし、それが迷惑だって言うなら、ほとんどの事は迷惑な事象に属すると思うんだ
連絡先を知りたくて転送先のアドレスを聞く事自体はそんなに悪い事だと思わなかったよ。確かに、それで転送先のアドレスを知らせるのはちょっと難しいかも、とは思ったけど いや、だから質問がちょっと悪かったんだと思う
抽象的に言えば、転送先としてしかメールアドレスを聞かないという事は事前に伝えられていたから知っている。それだけど、実際にその運用上、連絡先を手にしている事は確かだから、実際に、連絡先を手にしている以上、その連絡先をどのように扱おうとしているのか、という事は関心がある。だから、連絡先を渡せ、と言っているわけではなくて、転送用に限る、と断っているとはいえ、実際に連絡先を入手しているのだから、入手している連絡先をどのように扱うのか、たとえば△△先生の退職など、特別な事情を有する場合には、転送先とはいえ、メールを送るとか、そういった状態を知ろうとしていた。正確には、大学院のメールアドレスに送りさえすれば、転送先があれば、実際手元には届く訳だから、特別な事情は発生しないと見るのが、順当で、どちらかといえば、オーディナリーな用途の話ではあるから、そういった場合にどのように運営ないし運用するつもりなのか、というポリシーに近いところを聞こうとした。反対に手に入るのだとしたら、という話をするなら、実際に渡されなければおかしいし、△△先生のお別れ会の時もこちらがこたえ次第では何かされるかと思ったかもだけど、実際は、〇〇さん来てたら別にemokenさん介してどうこうする理由ないから、別に逃げる事なかったのに だけど、△△先生のお別れ会の時も口聞いてくれなかったよ。あの人ひどくない?結局彼氏いるかどうかについて知ってる?どちらかといえばそのあたりの事の方が気になるよ。連絡先より、、なんというか。まぁだけど要らない争いはしたくないから、なんというか、とりあえず連絡先を聞いただけで、別に、それで、役に立てなかったからって、本人に危害を加えるほど手荒な真似はしないよ。とりあえず職場とか色々手だてはあるわけだから、関わらせる理由がないわけだから。ていうかたぶん、××さんとかも連絡先知ってるし、××さんに聞いても、なんで教えなあかんねん、って言ってたし、基本教えないのが普通やと思うよ。たださ、emokenさんも知ってて、××さんも知ってて、ずるくない?なんかそういう感じの事を思っただけやよ 蹴りたい背中みたいな感じで←全然大事にする感じじゃないでしょ? だから実際は全然大事にする感じじゃないと思う 聞きたい答えがあるとすればそんな感じと思う
なんとも馴れ馴れしい内容を吐く bot だこと.まあ,こういった馴れ馴れしい迷惑メールも多いよね.
閑話休題.
本当の敵は ufw だということが分かった.とりあえず秘密鍵でつながったので良しとしよう.
と思ったらやっぱ別のところで…… NAT越えのところでおかしくなっているような気も.
- Comments: 0
- TrackBack (Close): -
今日の迷惑メール
- 2011-12-13 (Tue)
- 一般
一応、△△先生に、emokenさんは、職業倫理を鑑みて、アドレスを渡さず、その意味で職能を全うしたと報告しました。
まあ,ヤクザと知り合いだとか偉い弁護士の先生に相談するだとかいう話に発展する迷惑メールもあったりするのだけど,この bot もその辺りを真似ようとしているのかね.
- Comments: 0
- TrackBack (Close): -
日程調整とかメンドクサすぎる
- 2011-12-13 (Tue)
- 一般
少なくとも4つのオブジェクトの都合を調整しなければならないのだけどインターセクションが存在しない……
とりあえず自分の都合を変えればシングルトンにはなるので出張計画を物凄くアグレッシブな旅程に変えて対応することにした.日付変更直後の深夜に出国し日付変更線越えて1日前に戻って西海岸に着きそこから再び深夜の便で東海岸へ行き,帰りは夕方の便から深夜の便に乗り継いで早朝に戻ってくるとか.
書いててやる気が萎えてきたなぁ……
- Comments: 0
- TrackBack (Close): -