OpenDNSによるセキュリティ対策
先日参加した、高専機構の情報担当者研修では、新しく導入された統一システムの機能説明や今後について色々と説明を受けた。
でも、興味深かったのは、OpenDNSとも呼ばれているCisco Umbrella 。DNSを使ったセキュリティ対策で、ブラックリストに掲載されているホストへの問い合わせがあったらブラックな正規IPアドレスを返さないことで怪しいホストに接続させない。また、怪しいか判断が困難なグレーゾーンのホスト名なら、OpenDNSのProxyのアドレスを返し、ユーザを怪しいサイト接続させず、実際はOpenDNSが怪しいサイトに接続しグレイな内容を分析して、最終的にブラック/グレイ/ホワイトを判断するというシステム。
設定は、DNS サーバのアドレスを、208.67.222.222 にするだけ。
学校では色々と問題がありそうだし、自宅でこの機能を試してみる。
(( /etc/bind9/named.conf.options ))
options {
:
forwarders {
# Google public DNS
#8.8.8.8;
#8.8.4.4;
# OpenDNS (Cisco Umbrella)
208.67.222.222 ;
208.67.220.220 ;
};
:
};
動作確認は、https://welcome.opendns.com にアクセスして、以下の表示になればいい。
Wikipedia の説明を見ると、以前はブラックなアドレスを引くと、Yahooの広告ページにリダイレクトされるので….といったことが書いてあるけど、今はどうなんだろ。”nslookup www.xxx”で、いかにも怪しいサイトのアドレスをひいたけど、同じだな。Cisco に OpenDNS が買収されてるから、変な広告はなくなったと思うんだけど。
サーバのメンテナンス
Azureサーバのバックアップ
管理しているAzureサーバだけど、クラウドだし簡単には落ちないとバックアップ処理を真面目にしてなかったけど、そろそろ対策をと設定を行った。
- 各仮想サーバの定時処理で、主要データディレクトリを .tar.gzでバックアップ
- 自室のサーバで、RAID-NAS上に仮想サーバのバックアップを rsync
- 仮想サーバの容量逼迫を防ぐために、2月以上は削除。自室サーバは空き容量をみて削除時期を考えよう。
差分バックアップを加える(2017/10/19追記)
バックアップ処理、2週間おきに設定していたけど、いざという時のためにもう少し頻繁にバックアップを取りたい。
そこで、1週間毎に差分バックアップを取るように、処理を追加する。
MovableTypeの記事を復活
サーバ故障による移行作業で、CMS を MovableType から WordPress に変更したけど、古い記事の移行ができていなかった。自宅サーバも同様の移行作業を行い、過去記事の吸出しがうまくいったので、同様に電子情報の過去記事を吸い出し、WordPress にインポート。
# メモ
((追記))
古い記事を抽出する際に、preタグ内の空白が削除されてらぁ。おかげで、プログラムのコードのインデントが消えてしまってる。(x_x;;
自宅で監視カメラを動かしてみた
今度の週末は、家族旅行の予定。 だけど、子どもがその間、最近病院に連れて行った婆ちゃん猫を 心配している。
そこで、使っていなかったWebカメラで、急遽、監視カメラを動かしてみた。 奥さんからは、解像度低いじゃんとツッコミを受けるが、 もともとのWebカメラの性能だと思うし…
余りにも他愛もないコードだけど、 この手のお遊びプログラムは、 学生さんに「こんなこと簡単にできるよ」と見せることも多いので、 PHPコードに改良&コメント付けをしておく。

監視カメラを動かすまで
fswebcamが一番簡単に使えそうだったので…
(( fswebcamをインストール)) $ sudo aptitude install fswebcam
fswebcamの出力をそのまま画像形式で返すプログラム。
(( webcam.php )) <?php // 画像形式、キャッシュさせない header( "Content-Type: image/jpg" ) ; header( "Cache-Control: no-store, no-cache, must-revalidate" ); // 連続読み出し用にファイルロック $flock = fopen( "/var/www-support/.webcam.lock" , (file_exists( "/var/www-support/.webcam.lock" ) ? "rb+" : "wb+" )) ; if ( flock( $flock , LOCK_EX ) ) { system( "/usr/bin/fswebcam -q -d /dev/video1" ." -p YUYV" // 画像形式 ." -D 0" // delay ." -S 3" // skip frame ." -r 320x240" // 解像度 //." -r 640x480" ." --title \"tsaitoh.net's webcam\"" ." --jpeg 75 -" ) ; fclose( $flock ) ; } ?>
webcam.php の出力画像を、連続で読み出すように、 JavaScriptで設定を書き加える。 <meta http-equiv=”refresh” content=”5″> みたいな方法だと、reload の度に画像がちらつくので、JavaScriptで reload させることになった。
(( index.php )) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=320,height=320,initial-scale=1"/> <title>自宅監視カメラ</title> <script type="text/javascript"> <!-- var count = 0 ; function reload() { count = (count + 1) % 100 ; // 画像を更新(キャッシュ画像を使わないように番号付) var img = document.getElementById( "image" ) ; img.src = "webcam.php?"+String(count) ; img.id = "image" ; // 動きの少ない相手用に確認表示 var txt = document.getElementById( "text" ) ; txt.innerText = "自宅監視カメラ: "+String( count ) ; } // --> </script> </head> <body> <p align="center"> <img id="image" src="webcam.php" onload="reload()" /> <div id="text"></div> </p>
sshfsを使ってみる
sshfs が、Mac OS X でも使えるとの記事を見つけて、試してみる。
まずは、osxfuse と sshfs を iMac にインストールする。 このサイトより、必要な .pkg と .dmg を取得&インストール。あっさり完了。
接続は、相手サイトにパスワード認証などが省略できるように、 ssh-keygen コマンドあたりを実行し、相手サイトに公開鍵をインストールしておく。 あとは、以下のコマンドで終わり。
(あらかじめ相手サイトに~/mntのマウントポイントを作っておく) $ sshfs useid@remotehost:/home/path ~/mnt
確かに便利にはなったけど、コマンドで scp を打ち慣れていると、 そんなに「便利になった」感は、ない。
リモートサイトからローカルをマウント
FWの内側のローカルホストから、相手サイトにトンネルを掘る場合、 以下のsshコマンドをよく使ってる。
(ローカルホストにて) $ ssh -R 100XX:localhost:22 remotehost # 100XXは適当なポート番号 (相手サイトにて) $ slogin -p 100XX localhost # これで、FW内部にloginできる。
これができれば、相手サイトからFW内部のディスクもマウントできるから、あとはGUIで簡単に触れるようにするために、sshfs を実行。
(相手サイトにて) $ sshfs userid@localhost: ~/mnt -p 100XX
ただし、実行しようとしたら、"/dev/fuse Permission Denied" のエラーが出た。 ということで、"sudo adduser 自分のID fuse"にて、fuseグループに所属させる。 一度、logout して再loginすれば、sshfs でマウントできる。
oldstableをstableに
学科サーバやらアンケートシステムやらで、 Debianベースで色々なサーバを運用しているけど、 どれも5年近くの稼働。
きちんと更新はかけているけど、lenny から squeeze に 上げるのが面倒で、squeeze 登場の時に oldstable/lenny だけに sources.list を書いて運用していた。 しかし、さすがに oldstable のメンテナンス期間も過ぎ、 最近は、"aptitude safe-upgrade"かけても更新が無い。 限界。
ということで、メイン稼働でない oldstable なサーバで、 stable 切り替えを行う。ただ、大きな変更だけあって、 パッケージ間競合で、うまく自動更新スクリプトが止まらない。
何台か作業したけど、以下の手順だと競合が少ないかな。
aptitude install aptitude aptitude install gcc g++ aptitude install apache2 php5 aptitude install xserver-xorg aptitude install gnome # kdeと競合が多いけど、ばっさりkdeを一時的にremove...
ああ、サーバなのに使ってもいない gnome , KDE なんか、 こんなに律儀にインストールしてるんだろう…>オレ。
PHPが一般ユーザで動かなくなる
更新をかけたら、一般ユーザでのPHPが動かなくなる。 でも、自分のホームでは、動く。さっぱり訳の分からない状況で、 userdir が原因と疑い、検索をかけたらようやく解明。 PHP 5.3 あたりから、安易にユーザがPHPコードを使えないように、 設定ファイルが、変更されてる。
自宅サーバでは、問題なく動いていたし、設定ファイルを比較しまくったのだが、 違いが見つからず、解明まで時間ががかった。 自宅では、mod-enabled/userdir.conf は触らずに、 conf.d/php5.conf で設定していたものだから、気付くまでに手間取ってしまった。
(( /etc/apache2/conf.d/php5.conf )) <IfModule mod_php5.c> <IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine on </Directory> </IfModule> </IfModule>
電子情報棟の無線LANの更新
電子情報棟では、学生実験などでのノートパソコンのネットワーク接続手段 として、FERECのルータを活用している。 アクセスポイントのSSID,パスワードを知っている利用者であれば、 WiFi接続後に、Web認証が要求されるので、 自分の学籍番号ベースのIDとパスワードを入力すれば、 ネットワークが利用できるようになる。
ただし、ネットワーク接続によるトラブルを避けるために、 http,httpsしか利用できないようにFirewall機能を設定してある。 特別の登録IDを設定すれば、Firewallの条件を変えることもできる。
IEEE.802.11n対応ハイパワーAPに更新
これまでは、主要な実験室にはハイパワーのアクセスポイント、 実験的に導入していた部屋には、小型のアクセスポイントを設置していた。 元々の機材は11a.b.gに対応していたが、フロアや実験室の場所によっては、 電波が弱く接続が困難であった。
今回、業務用の11n対応のハイパワーアクセスポイントに変更し、 電波条件もかなり改善し、電子情報棟のすべての教室・大きな実験室では、 十分な電波強度でアクセスポイントに接続が可能となった。
8/17(Wed) 9:00-13:00 まで作業停電
学校内の基幹設備点検が8/17に実施され、このため学内全域が停電となります。 これに伴い電子情報のサーバも、8/17 8:45 には shutdown をかけますので、 ご利用の方はご注意ください。
atコマンドで停止
といっても、私の管理しているサーバは、それなりに台数も多いので、 (緊急連絡システム×2,授業アンケート,Moodle,電子情報×2)、 自動でシステムを停止させるようにしておいた。 at コマンドは、日付記載方法を、毎度調べることになるので、以下にメモ。
# echo "/sbin/shutdown -h now" | at 08:45 08/17/11
Windowsマシン消滅
朝から授業用の資料を印刷しようと、ちょろちょろ仕事を初めていたが、 トイレに行ってもどってきたら、マウスもキーボードも動かない。 キーボード切替器が入っているので、切り替えるがLinux側では問題なく マウスもキーボードも動く。どうもUSBが怪しいのでFront USBにつないだり、 他のUSB機器をつなげたり。どうやってもマウスキーボードが動かない。 どうも、PCのマザーボード上のUSB回路がやられたとしか思えない。 備品番号をみると、購入時期もちょうど5年前だし寿命かな…
仕方が無いけど、デスクトップメインマシンが無くなったので、 代用品を探す…そういえば、卒研用にiMacを買ったけど、 今年は利用者がいなさそうだし、教官室に移動とした。 ということで、教官室は、iMac,Linux×2,MacBook構成となって、Windowsマシンなし。 さすがに、色々と無理も出てくるので、Parallels Desktop 6 for Mac を発注する。
でもWindowsで使っていた、NAS には重要な書類がぞろぞろ。 でも、Mac側でTeraStation を使うと、smb:// では文字化け、afp:// では漢字は表示できても読めないファイルがちょろちょろ…ということで、不便極まりない。でも年度末に買った Drobo S があるので、 HFS+にフォーマットし直し、中身をごっそり移動させることにした。 TeraStation も初期型の 500GB だし、これも寿命かな…
UPKIオープンドメイン証明の申請
学術研究機関を対象とした、無償のSSL認証キーの発行サービスの申請のTSVファイル生成を行う。 手順が長いので、肝心な所は記載しないが、その入力などの内容をメモ。 最終的に、電子情報工学科のTSVファイルと、緊急連絡システム用のTSVファイルを作った。
# mkdir /etc/apache2/ssl.key/ # cd /etc/apache2/ssl.key/ # cp 大きいファイル1 randfile1.txt # cp 大きいファイル2 randfile2.txt # cp 大きいファイル3 randfile3.txt # openssl genrsa -des3 -rand randfile1.txt:randfile2.txt:randfile3.txt 2048 > maisy.key Enter pass phrase: [passphrase] Verifying - Enter pass phrase: [passphrase] # lv maisy.key -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,xxxxxxxxx : -----END RSA PRIVATE KEY----- # openssl req -new -key maisy.key -sha1 -out maisy.csr Enter pass phrase for maisy.key: [passphrase] Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:Academe2 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fukui National College of Technology Organizational Unit Name (eg, section) []:Electronics and Information Department Common Name (eg, YOUR name) []:www.ei.fukui-nct.ac.jp Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:. maisy:/etc/apache2/ssl.key# lv maisy.csr -----BEGIN CERTIFICATE REQUEST----- : -----END CERTIFICATE REQUEST----- maisy:/etc/apache2/ssl.key# openssl req -noout -text -in maisy.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, L=Academe2, O=Fukui National College of Technology, OU=Electronics and Information Department, CN=www.ei.fukui-nct.ac.jp Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): https://tsvtool.nii.ac.jp/cgi-bin/tsvtool.cgi TSV作成ツール:発行申請TSV ・CSRファイルから maisy.csr [CSR送信] CSR 主体者DN CN=www.ei.fukui-nct.ac.jp,OU=... サーバFQDN www.ei.fukui-nct.ac.jp dNSName なし 加入者Email 自分のメール 加入者氏名 斉藤 徹 加入者所属 福井工業高等専門学校電子情報工学科 ソフトウェア名等 Apache 2.2.9 [完了] [ダウンロード] issue-YYYYMMDD.tsv
実際に鍵を登録
UPKIの事務局に、issue-YYYYMMDD.tsv を送ったら、 鍵を入手するための「UKPI-ODCert]Webサーバ証明書発行受付通知」なるメールが 送られてきた。指定されたURLをアクセスして、サーバ証明書を受け取る。 ファイル名は、"サーバFQDN.cer"であった。(Apacheへの登録では"*.crt"に直す)
これに加えて、別途 "nii-odca2.crt" を入手しておく。
# cd /etc/apache2/ssl.key # mv ...PATH.../サーバFQDN.cer ./maisy.crt # vi /etc/apache2/sites-enabled/100-default-ssl : SSLCertificateFile /etc/apache2/ssl.key/maisy.crt SSLCertificateKeyFile /etc/apache2/ssl.key/maisy.key SSLCertificateChainFile /etc/apache2/ssl.key/nii-odca2.crt : # /etc/init.d/apache2 restart 起動すると、鍵作成時のパスフレーズを聞かれるので、入力する。