No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 |...| 17 | 18 | 19 || Next»

ssh でのエスケープ

開業直後の ~ がエスケープキャラクタになってたとは.開業直後に ~? とかやるとヘルプが出る.

とりあえず,~C でポートフォワーディングを動的に追加(削除)できるってのは便利かも知れない.~C して出てきたプロンプトで help とやるとヘルプが出る.

全然知らんかった……

X復活

カーネルのログを見てたら,カーネルモジュールのバージョンとXのモジュールのバージョンが違うぞボケというメッセージが出ていた.

kernel: [   18.759371] NVRM: API mismatch: the client has the version 304.108, but
kernel: [   18.759372] NVRM: this kernel module has the version 304.88.  Please
kernel: [   18.759373] NVRM: make sure that this kernel module and all NVIDIA driver
kernel: [   18.759374] NVRM: components have the same version.

nvidia-304-updates というパッケージで 304.108 のカーネルモジュールが入っているし X のログから X 側のモジュールも 304.108 となっていたので問題ないだろとか思ってたら…… 先に入っていた nvidia-304 というパッケージの 304.88 のカーネルモジュールがロードされとったと.このミスマッチのせいで月曜から X が立ち上がらなかった.

ということで,nvidia-XXX なパッケージを全部消してから nvidia-304-updates を入れなおしたら無事 X が立ち上がるようになった.とりあえず,パッケージのアップデートが不親切なんじゃないかなと思わなくもない.もしくは何かがバグってたのか.

sshd で応答しないクライアントを切断

ClientAliveInterval と ClientAliveCountMax を設定すればいいのかね.ClientAliveInterval 秒ごとに応答を返すようにクライアントに要求して,ClientAliveCountMax 回要求しても応答がないと切断?

3分で切るには下のように書くのけ?

ClientAliveInterval=60
ClientAliveCountMax=3

とりあえず,試すのも面倒なのでそのうち効果を確認しよう.

screen を detached の状態で起動するオプション -d -m

端末持ってないと動いてくれないコマンドを cron で起動して暫く動かし続けたいのだけど…… とかいう場合に使える.screen で仮想端末を割り当てるけどそれを画面には出さないでいきなり放置する.

screen -d -m コマンド

とりあえずバックアップ回線上に ssh でトンネルを掘っておくのに使った.

Linux の電源周りの情報

/proc/acpi/battery/ とか /proc/acpi/ac_adapter/ とかを見れば分かるのね.液晶閉じてるかどうかとかも /proc/acpi/lid/LID/state で分かると.へ〜.

んで,バッテリーふたつ積んでると /proc/acpi/battery/ に BAT1 と BAT2 のふたつが出てきた.個別に情報がとれるので,バッテリーの数だけバッテリーインジケータを増殖させるとかも出来そう.まあ,バッテリーを複数積んでるPCとかあまりない気もするのだけど.

Ubuntu 12.04 LTS で L2TP/IPsec を証明書で

VPN サーバを Ubuntu 10.04 から 12.04 にクリーンインストールで更新.ついでなので証明書で認証できるように設定追加.前回と同様,VPNの接続先は VPN サーバに作った仮想的な LAN (192.168.222.0/24) で,そこから VPN のぶら下がっている LAN に IPマスカレードで出ていくと.

とりあえず,openswan と xl2tpd をインストール.openswan のインストールで X.509 certification は使わないとしとく.

sudo apt-get install openswan xl2tpd

そしたら ipsec の設定./etc/ipsec.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

ついで /etc/ipsec.secrets で秘密鍵の設定.下記の行の PRE SHARED KEY HERE に共有鍵である文字列を突っ込んで /etc/ipsec.secrets に追記する.

: PSK "PRE SHARED KEY HERE"

以上で ipsec の設定はひとまず終了.次に xl2tpd の設定.まず /etc/xl2tpd/xl2tpd.conf を下記の内容に.

[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 部分の設定を /etc/ppp/options.l2tpd.lns に書く.内容は下記の通り.YOUR_DNS_SERVER には vpn サーバのあるLANのDNSサーバを指定.

require-mschap-v2
ms-dns YOUR_DNS_SERVER
auth
lock
hide-password
modem

んで ppp用のユーザパスワードを /etc/ppp/chap-secrets に書き込む.面倒なのでサーバ名とかワイルドカードで.USERNAME と PASSWORD_HERE にユーザ名と対応するパスワードを適当に.

USERNAME * PASSWORD_HERE *

デーモン達の設定は以上で終わって,次にファイアウォールとかの設定を.とりあえず ufw で 500 (IKE)と 4500 (IPsec NAT-T) のUDPを開けておく.

sudo ufw allow 500/udp     
sudo ufw allow 4500/udp   

ついで ufw では設定できない部分を /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

さらにフォワーディングなどの設定を /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

さらについでに /etc/default/ufw で ufw のフォワーディングのデフォルト値を許可に変えておく.これをしておかないと ufw に全てブロックされて悲しくなる.

DEFAULT_FORWARD_POLICY="ACCEPT"

最後に,SSH を使っているならその許可をしつつ,ufw を有効化して再起動.

sudo ufw allow 22/tcp
sudo ufw enable
sudo reboot

ここまでで共有鍵で L2TP/IPsec が使えるようになった.Windows の VPN のプロパティのセキュリティで L2TP/IPsec を指定したうえで詳細設定で事前共有キー(/etc/ipsec.secrets に書いたやつ)を入れてやって,あとは /etc/ppp/chap-secrets に書いたユーザ名とパスワードでつなぐだけ.

閑話休題.

PCの認証に証明書を使う設定を入れてみる.そのために,まずはオレオレ認証局を作る.

とりあえず openssl が入っていることを確認.

sudo apt-get install openssl

ついで,簡便のために /etc/ssl/openssl.cnf のデフォルト値を変えてあげる.

default_days = 3650
countryName_default = JP
stateOrProvinceName_default = Tokyo
localityName_default = Chuoh-ku              # これだけ書換えでなく追記
0.organizationName_default = IPL

そしたら下記のコマンドでオレオレ認証局作成.とりあえず /var/certs/ とかに全部おいておくことにする.無駄に sudo がついているけど気にしない.CA用のパスワードを聞かれるので適当に.Common Name だけはまともに答える(このマシンの名前とか).他はデフォルト値でいい.最後にもう一度CA用のパスワードを聞かれるので,それを入れてあげると demoCA というディレクトリにオレオレ認証局が出来上がる.

sudo mkdir /var/certs
cd /var/certs
sudo /usr/lib/ssl/misc/CA.pl -newca

んで,鍵のパーミッションを変更しつつ,CRL を生成.CA用パスワードを入れてあげる.

sudo chmod 600 demoCA/private/cakey.pem
sudo openssl ca -gencrl -out crl.pem

以上で認証局が準備出来たので,次にホスト用の証明書を作成する為にホスト毎に以下の作業をば.整理のために各ホスト毎にサブディレクトリ作ってるけど,基本的に Common Name に各ホストの名前(ここでは VPNサーバの vpn と Windows のクライアント win)を入れてあげればいい.CA.pl -newreq-nodes でリクエストを作って,A.pl -sign で署名を入れる.署名の時に CA のパスワードが必要.

cd /var/certs
sudo mkdir vpn; cd vpn; sudo ln -s ../demoCA .
sudo /usr/lib/ssl/misc/CA.pl -newreq-nodes
# Common Name に vpn
sudo /usr/lib/ssl/misc/CA.pl -sign

Windows 用には最後にプライベートキーと証明書をまとめてあげる.

cd /var/certs
sudo mkdir win; cd win; sudo ln -s ../demoCA .
sudo /usr/lib/ssl/misc/CA.pl -newreq-nodes
# Common Name に win
sudo /usr/lib/ssl/misc/CA.pl -sign
openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -out win.p12

以上で証明書の準備完了.あとはこれらをそれぞれに配置する.

Windows には,オレオレ認証局の demoCA/cacert.pem と Windows マシンの証明書である win.p12 とを配置する.これらを適当に windows マシンにコピーした上で mmc.exe を実行して,ファイル → スナップインの追加と削除 → 証明書 → 追加 → コンピュータ アカウント → ローカルコンピュータ → 完了 → OK とやって,左のペインの証明書の個人で右クリック → すべてのタスク → インポート → win.p12 を個人へインポート,同様に証明書の信頼されたルート証明機関で右クリック → すべてのタスク → インポート → cacert.pem を信頼されたルート証明機関へインポート.

VPN サーバでの配置は下記のコマンドで.プライベートキーのフォーマットは PEM だと ipsec が読んでくれないので DER に変換しとく.

sudo cp /var/certs/demoCA/cacert.pem /etc/ipsec.d/cacerts/
sudo cp /var/certs/vpn/newcert.pem /etc/ipsec.d/certs/vpnCert.pem
sudo openssl rsa -in /var/certs/vpn/newkey.pem -out /etc/ipsec.d/private/vpnKey.pem -outform DER
sudo cp /var/certs/crl.pem /etc/ipsec.d/crls/crl.pem

そしたら最後に証明証での認証の設定を ipsec に追加する.まず /etc/ipsec.secrets に鍵の情報を追記.

: RSA vpnKey.pem

ついで /etc/ipsec.conf に証明証での認証の接続設定を追記.

conn L2TP-RSA
        forceencaps=yes
        authby=rsasig
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=%defaultroute
        leftprotoport=17/1701
        leftcert=vpnCert.pem
        right=%any
        rightprotoport=17/%any
        leftrsasigkey=%cert
        rightrsasigkey=%cert

あとは sudo reboot してあげれば準備完了.Windows の VPN のプロパティのセキュリティで L2TP/IPsec を指定して詳細設定で認証に証明書を使うにしてやって(デフォルトだけど), /etc/ppp/chap-secrets に書いたユーザ名とパスワードでつなぐだけ.

とりあえず以上で手元の環境でうまく行った.NAT越えをするときには windows のレジストリの設定に注意?

«Prev || 1 | 2 | 3 | 4 |...| 17 | 18 | 19 || Next»
Search
Feeds

Page Top