IPv6 環境で ufw を使ってみた

我が家の回線は KDDI の au ひかりなんですが、
auひかりといえばネイティブな IPv6 環境を提供してくれるナウい回線なわけで、いろいろ遊べるんですね。
それで、今日は我が家で運用しているサーバに載っているWordpress に対してロシアからアタックを食らっていたので、
そろそろファイウォールの導入でもしようかと考え、思い立ったら吉日でさっそく ufw を使ってみました。

ufw についての詳細は割愛しますが、Ubuntu に採用されている簡易的なファイアウォールで、
ベースは iptables なのですが、簡単に使えるようにした wrapper 的なプログラムといったところです。

以下のオプションで簡単に設定ができてしまいます。
ゆとり世代の私には大変ありがたい。

wktk# ufw –help

Usage: ufw COMMAND

Commands:
enable                          enables the firewall
disable                         disables the firewall
default ARG                     set default policy
logging LEVEL                   set logging to LEVEL
allow ARGS                      add allow rule
deny ARGS                       add deny rule
reject ARGS                     add reject rule
limit ARGS                      add limit rule
delete RULE|NUM                 delete RULE
insert NUM RULE                 insert RULE at NUM
reset                           reset firewall
status                          show firewall status
status numbered                 show firewall status as numbered list of RULES
status verbose                  show verbose firewall status
show ARG                        show firewall report
version                         display version information

Application profile commands:
app list                        list application profiles
app info PROFILE                show information on PROFILE
app update PROFILE              update PROFILE
app default ARG                 set default application policy

たとえば、192.167.79.29というロシアのIPからの接続をすべて拒否したいときは

wktk# ufw deny from 192.167.79.29

といった感じでルールを追加できます。
ここについても詳しく述べられているサイトがほかにありますので割愛します。

wktk# ufw status
Status: active

To                         Action      From
—                         ——      —-
Anywhere                   ALLOW       Anywhere
Anywhere                   DENY        192.167.79.29

で、ここからが本題です。

この ufw ですが、ルールを入れた後に enable したら、自宅ネットワーク内からサーバへの疎通が一切取れなくなってしまいました。
なぜかグーグル先生に聞いてみたところ、どうやら答えは /etc/default/ufw というファイルにあるようでした。

wktk# vi /etc/default/ufw

# /etc/default/ufw
#

# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to ‘disable’ and then ‘enable’ the firewall for
# the changes to take affect.
IPV6=no

ん?OS入れるとき v6 有効にしたままなのに、IPV6=no って・・・

IPV6=no を yes にしてあげたら無事に自宅内のLANからでも v6 でつなげるようになりましたとさ。

前置きが長かったですが、ご了承ください。

 

参考資料

Ubuntu Forums [ubuntu] ufw and ipv6  :http://ubuntuforums.org/showthread.php?t=1214543

 

BIND9とAAAAレコードと私(追記あり)

自分のBlogを自宅サーバに移転していてDNSのゾーンファイルを弄っていたのですが変な挙動をしたのでメモします。

バージョンはUbuntuのパッケージ最新版の

sakura# named -v
BIND 9.7.0-P1
sakura#

です。

IPv6ユーザとしてはAレコードよりAAAAレコードが好きなので以下のようにゾーンを定義しました。

 

ゾーンファイル(Before)

sakura# cat yutarommx.com.zone
$TTL   180
@               IN SOA  yutarommx.com.  yutaro.mykw.jp. (
2012041506     ; serial (d. adams)
3H             ; refresh
15M            ; retry
1W             ; expiry
15M)           ; minimum

IN NS           ns0.mykw.jp.
IN NS           ns1.mykw.jp.

IN AAAA         240f:1:33f2:1::beef
www             IN AAAA         240f:1:33f2:1::beef
IN A            124.214.243.203
www             IN A            124.214.243.203

tumblr          IN A            72.32.231.8

そうしたところ、家のPCからはBlogが見えるのですが、リモートで繋いでいた会社(IPv4)から閲覧ができないorz
何だろなとおもい、自宅サーバから dig してみたところ、以下のような結果が。

AAAAレコードの結果(Before)

micro# dig @ns0.mykw.jp yutarommx.com aaaa

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51434
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      AAAA

;; ANSWER SECTION:
yutarommx.com.          180     IN      AAAA    240f:1:33f2:1::beef

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      NS      ns1.mykw.jp.
yutarommx.com.          180     IN      NS      ns0.mykw.jp.

;; ADDITIONAL SECTION:
ns0.mykw.jp.            180     IN      A       49.212.22.200
ns0.mykw.jp.            180     IN      AAAA    2001:e41:31d4:16c8::1
ns1.mykw.jp.            180     IN      A       183.181.172.61
ns1.mykw.jp.            180     IN      AAAA    2001:2e8:603:0:2:1:0:3d

;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:08:35 2012
;; MSG SIZE  rcvd: 190

Aレコードの結果(Before)

micro# dig @ns0.mykw.jp yutarommx.com a

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com a
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50777
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      A

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      SOA     yutarommx.com. yutaro.mykw.jp. 2012041509 10800 900 604800 900

;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:08:30 2012
;; MSG SIZE  rcvd: 81

むむ!!?

Aレコードが引けてない・・・・
ということで以下のように書き換えてみたところ・・・

 

ゾーンファイル(Before2)

sakura# cat yutarommx.com.zone
$TTL   180
@               IN SOA  yutarommx.com.  yutaro.mykw.jp. (
2012041510     ; serial (d. adams)
3H             ; refresh
15M            ; retry
1W             ; expiry
15M)           ; minimum

IN NS           ns0.mykw.jp.
IN NS           ns1.mykw.jp.

IN A            124.214.243.203
www             IN A            124.214.243.203
IN AAAA         240f:1:33f2:1::beef
www             IN AAAA         240f:1:33f2:1::beef

tumblr          IN A            72.32.231.8

AAAAレコードの結果(Before2)

 

micro# dig @ns0.mykw.jp yutarommx.com aaaa

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      AAAA

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      SOA     yutarommx.com. yutaro.mykw.jp. 2012041510 10800 900 604800 900

;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:29:57 2012
;; MSG SIZE  rcvd: 81

Aレコードの結果(Before2)

micro# dig @ns0.mykw.jp yutarommx.com a

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com a
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37995
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      A

;; ANSWER SECTION:
yutarommx.com.          180     IN      A       124.214.243.203

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      NS      ns0.mykw.jp.
yutarommx.com.          180     IN      NS      ns1.mykw.jp.

;; ADDITIONAL SECTION:
ns0.mykw.jp.            180     IN      A       49.212.22.200
ns0.mykw.jp.            180     IN      AAAA    2001:e41:31d4:16c8::1
ns1.mykw.jp.            180     IN      A       183.181.172.61
ns1.mykw.jp.            180     IN      AAAA    2001:2e8:603:0:2:1:0:3d

;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:29:41 2012
;; MSG SIZE  rcvd: 178

 

今度はAAAAレコードが返ってこない・・・
次にサブドメイン(FQDN)を揃えつつAレコードを優先して定義してみた。

ゾーンファイル(After)

sakura# cat yutarommx.com.zone
$TTL   180
@               IN SOA  yutarommx.com.  yutaro.mykw.jp. (
2012041507     ; serial (d. adams)
3H             ; refresh
15M            ; retry
1W             ; expiry
15M)           ; minimum

IN NS           ns0.mykw.jp.
IN NS           ns1.mykw.jp.

IN A            124.214.243.203
IN AAAA         240f:1:33f2:1::beef
www             IN A            124.214.243.203
www             IN AAAA         240f:1:33f2:1::beef

tumblr          IN A            72.32.231.8

AAAAレコードの結果(After)

micro# dig @ns0.mykw.jp yutarommx.com a

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62064
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      A

;; ANSWER SECTION:
yutarommx.com.          180     IN      A       124.214.243.203

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      NS      ns1.mykw.jp.
yutarommx.com.          180     IN      NS      ns0.mykw.jp.

;; ADDITIONAL SECTION:
ns0.mykw.jp.            180     IN      A       49.212.22.200
ns0.mykw.jp.            180     IN      AAAA    2001:e41:31d4:16c8::1
ns1.mykw.jp.            180     IN      A       183.181.172.61
ns1.mykw.jp.            180     IN      AAAA    2001:2e8:603:0:2:1:0:3d

;; Query time: 16 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:39:01 2012
;; MSG SIZE  rcvd: 178

Aレコードの結果(After)

micro# dig @ns0.mykw.jp yutarommx.com aaaa

; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64265
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yutarommx.com.                 IN      AAAA

;; ANSWER SECTION:
yutarommx.com.          180     IN      AAAA    240f:1:33f2:1::beef

;; AUTHORITY SECTION:
yutarommx.com.          180     IN      NS      ns1.mykw.jp.
yutarommx.com.          180     IN      NS      ns0.mykw.jp.

;; ADDITIONAL SECTION:
ns0.mykw.jp.            180     IN      A       49.212.22.200
ns0.mykw.jp.            180     IN      AAAA    2001:e41:31d4:16c8::1
ns1.mykw.jp.            180     IN      A       183.181.172.61
ns1.mykw.jp.            180     IN      AAAA    2001:2e8:603:0:2:1:0:3d

;; Query time: 16 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:39:21 2012
;; MSG SIZE  rcvd: 190

micro#

今度はちゃんと返ってきた。

教訓:FQDNはソートしてAAAAレコードはAレコードより後に書こう!(Aレコードを併記する場合)

これって昔の公務員より融通が利かないなw

この辺の挙動はバンディー君に期待しましょう。

 

追記

ブログを投稿した後に某JP〇〇の @OrangeMorishita 氏からご指摘がございました。
以下、引用文

これ、正しい動作なんじゃないかな。INの前の名前を省略した場合、*直前の行の*継続行になります。
なので、beforeの例ではIN A 124.214.243.203はwwwの継続行だし、before2の例ではIN AAAA 240f:1:33f2:1::beefはwwwの継続行になります。

なるほど、INの前を省略すると勝手にOriginのドメインが補完されると思っていたのですが、
そうではなく空白の場合は前の行の内容を引き継ぐとのことだそうです。

ということは、こんな書き方もできるということですね!

sakura# cat yutarommx.com.zone
$TTL   180
@               IN SOA  yutarommx.com.  yutaro.mykw.jp. (
2012041513     ; serial (d. adams)
3H             ; refresh
15M            ; retry
1W             ; expiry
15M)           ; minimum

IN NS           ns0.mykw.jp.
IN NS           ns1.mykw.jp.

IN AAAA         240f:1:33f2:1::beef
IN A            124.214.243.203

www                     IN A            124.214.243.203
IN AAAA         240f:1:33f2:1::beef

tumblr                  IN A            72.32.231.8
sakura#

 

ほんとにこんなんで大丈夫なのかなと思いながら dig してみると。

wktk# dig @ns0.mykw.jp yutarommx.com a +short
124.214.243.203

wktk# dig @ns0.mykw.jp yutarommx.com aaaa +short
240f:1:33f2:1::beef

wktk# dig @ns0.mykw.jp www.yutarommx.com a +short
124.214.243.203

wktk# dig @ns0.mykw.jp www.yutarommx.com aaaa +short
240f:1:33f2:1::beef

お!ちゃんと引けているではないですか!

ゾーンファイルの内容がわかりづらいのでわかってないと気持ち悪いけど、
ルールがわかってすっきりしました。

森下氏 ありがとうございました!

お家でUnboundつかってISPのDNSポイズニングから逃れてみる

数年前の話題だが、児童ポルノ法の施工に伴って、ISPのDNSキャッシュ汚染が常習的に行われるようになったのですが、
そんな自由を侵すようなリゾルバは使ってられないということ(嘘)で自宅にもUnboundを導入してみました。

※本当は自宅サービスサーバのユーザが増えてきたので、何となくLAN内でリゾルバを持ちたくなっただけ。

0. 運用環境

OS : Ubuntu 10.04 LTS
HW : HP Proliant MicroServer

1. apt-get で インストール

ゆとり世代なのでapt-getでインストール。
apt 簡単でいいね。

micro# apt-get install unbound

2. ルートヒントファイルをダウンロードしておく

これがないと、どこに聞きに行くのかわからない。はず。(なくても名前解決できたけどね。)

micro# cd /etc/unbound && wget ftp://FTP.INTERNIC.NET/domain/named.cache

3. confを目的・環境に合わせて書き換える

自分の場合は自宅内のローカルからのみ名前解決できるようするのが目的だったので、
以下の箇所を書き換えた。ちなみにIPv6を使わない場合はv6系の項目は無視しておk

micro# diff -u unbound.conf.def unbound.conf
— unbound.conf.def    2012-04-14 16:33:20.268064334 +0900
+++ unbound.conf        2012-04-14 16:47:19.748193075 +0900
@@ -34,7 +34,10 @@
# specify 0.0.0.0 and ::0 to bind to all available interfaces.
# specify every interface[@port] on a new ‘interface:’ labelled line.
# The listen interfaces are not changed on reload, only on restart.
–       # interface: 192.0.2.153
+       interface: 127.0.0.1
+       interface: 192.168.0.128
+       interface: ::1
+       interface: 240f:1:33f2:1::cafe
# interface: 192.0.2.154
# interface: [email protected]
# interface: 2001:DB8::5
@@ -44,7 +47,7 @@
# interface-automatic: no

# port to answer queries from
–       # port: 53
+       port: 53

# specify the interfaces to send outgoing queries to authoritative
# server from by ip-address. If none, the default (all) interface
@@ -116,7 +119,7 @@

# the time to live (TTL) value cap for RRsets and messages in the
# cache. Items are not cached for longer. In seconds.
–       # cache-max-ttl: 86400
+       cache-max-ttl: 86400

# the time to live (TTL) value for cached roundtrip times and
# EDNS version information for hosts. In seconds.
@@ -137,16 +140,16 @@
# infra-cache-lame-size: 10k

# Enable IPv4, “yes” or “no”.
–       # do-ip4: yes
+       do-ip4: yes

# Enable IPv6, “yes” or “no”.
–       # do-ip6: yes
+       do-ip6: yes

# Enable UDP, “yes” or “no”.
–       # do-udp: yes
+       do-udp: yes

# Enable TCP, “yes” or “no”.
–       # do-tcp: yes
+       do-tcp: yes

# Detach from the terminal, run in background, “yes” or “no”.
# do-daemonize: yes
@@ -157,9 +160,11 @@
# Choose deny (drop message), refuse (polite error reply),
# allow (recursive ok), allow_snoop (recursive and nonrecursive ok)
# access-control: 0.0.0.0/0 refuse
–       # access-control: 127.0.0.0/8 allow
+       access-control: 127.0.0.0/8 allow
+       access-control: 192.168.0.0/24 allow
# access-control: ::0/0 refuse
–       # access-control: ::1 allow
+       access-control: ::1 allow
+       access-control: 240f:1:33f2:1::0/64 allow
# access-control: ::ffff:127.0.0.1 allow

# if given, a chroot(2) is done to the given directory.
@@ -214,7 +219,7 @@

# file to read root hints from.
# get one from ftp://FTP.INTERNIC.NET/domain/named.cache
–       # root-hints: “”
+       root-hints: “/etc/unbound/named.cache”

# enable to not answer id.server and hostname.bind queries.
# hide-identity: no
@@ -437,27 +442,27 @@
remote-control:
# Enable remote control with unbound-control(8) here.
# set up the keys and certificates with unbound-control-setup.
–       # control-enable: no
+       control-enable: yes

# what interfaces are listened to for remote control.
# give 0.0.0.0 and ::0 to listen to all interfaces.
–       # control-interface: 127.0.0.1
–       # control-interface: ::1
+       control-interface: 127.0.0.1
+       control-interface: ::1

# port number for remote control operations.
–       # control-port: 953
+       control-port: 953

# unbound server key file.
–       # server-key-file: “/etc/unbound/unbound_server.key”
+       server-key-file: “/etc/unbound/unbound_server.key”

# unbound server certificate file.
–       # server-cert-file: “/etc/unbound/unbound_server.pem”
+       server-cert-file: “/etc/unbound/unbound_server.pem”

# unbound-control key file.
–       # control-key-file: “/etc/unbound/unbound_control.key”
+       control-key-file: “/etc/unbound/unbound_control.key”

# unbound-control certificate file.
–       # control-cert-file: “/etc/unbound/unbound_control.pem”
+       control-cert-file: “/etc/unbound/unbound_control.pem”

# Stub zones.
# Create entries like below, to make all queries for ‘example.com’ and
micro#

4. リモートコントロールできるようにする

unbound-control を使えるようにするために秘密鍵、公開鍵を生成。
unbound-control は BIND でいうところの rndc ですね。

# unbound-control-setup
setup in directory /etc/unbound
generating unbound_server.key
Generating RSA private key, 1024 bit long modulus
………………..++++++
………………………….++++++
e is 65537 (0x10001)
generating unbound_control.key
Generating RSA private key, 1024 bit long modulus
……….++++++
..++++++
e is 65537 (0x10001)
create unbound_server.pem (self signed certificate)
create unbound_control.pem (signed client certificate)
Signature ok
subject=/CN=unbound-control
Getting CA Private Key
Setup success. Certificates created. Enable in unbound.conf file to use
micro#

5. Unboundを再起動する

micro# /etc/init.d/unbound restart
* Restarting recursive DNS server unbound                                                                       [ OK ]
micro#

6. 名前解決ができるか確認

とりあえずローカルホストから確認。
LAN内のほかのホストからも確認した方が良い。

micro# dig @localhost mykw.jp

; <<>> DiG 9.7.0-P1 <<>> @localhost mykw.jp
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13101
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;mykw.jp.                       IN      A

;; ANSWER SECTION:
mykw.jp.                180     IN      A       180.222.80.63

;; AUTHORITY SECTION:
mykw.jp.                180     IN      NS      ns0.mykw.jp.
mykw.jp.                180     IN      NS      ns1.mykw.jp.

;; ADDITIONAL SECTION:
ns0.mykw.jp.            180     IN      A       49.212.22.200
ns0.mykw.jp.            180     IN      AAAA    2001:e41:31d4:16c8::1
ns1.mykw.jp.            180     IN      A       183.181.172.61
ns1.mykw.jp.            180     IN      AAAA    2001:2e8:603:0:2:1:0:3d

;; Query time: 15 msec
;; SERVER: ::1#53(::1)
;; WHEN: Sat Apr 14 17:00:02 2012
;; MSG SIZE  rcvd: 165

micro#

7. リモートコントロールの動作確認

ステータスが取れれば成功

micro# unbound-control status
version: 1.4.1
verbosity: 1
threads: 1
modules: 2 [ validator iterator ]
uptime: 4 seconds
unbound (pid 5050) is running…
micro#

 

これでISPのDNSポイズニングから抜け出せますね。

めでたしめでたし

 

参考資料・サイト

日本Unboundユーザ会 http://unbound.jp/

 

Ubuntu 10.04 で quota メモ

インストール

[email protected]:/# apt-get install quota quotatool

fstab編集

[email protected]:/# vi /etc/fstab

“/etc/fstab” 12 lines, 681 characters
# /etc/fstab: static file system information.
#
# Use ‘blkid -o value -s UUID’ to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/vda1 during installation
UUID=c65156da-fd9f-4694-a3a3-cba8dd1db6bf /               ext4    errors=remount-ro,usrquota,grpquota 0       1
# swap was on /dev/vda5 during installation
UUID=2c8d9c41-c46a-4906-a633-cfd7be97d018 none            swap    sw              0       0

再マウント

[email protected]:/# mount -o remount /dev/vda1

wktk# mount
/dev/vda1 on / type ext4 (rw,errors=remount-ro,usrquota,grpquota)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)

クオータの有効化

[email protected]:/# quotaon -p /dev/vda1
group quota on / (/dev/vda1) is on
user quota on / (/dev/vda1) is on
[email protected]:/# quota

[email protected]:/# quotaon -avug
/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on
[email protected]:/#

ファイルの所有権チェック

[email protected]:/# quotacheck -avugm
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quot
a to avoid running quotacheck after an unclean shutdown.
quotacheck: WARNING – Quotafile //quota.user was probably truncated. Cannot save quota settings…
quotacheck: WARNING – Quotafile //quota.group was probably truncated. Cannot save quota settings…
quotacheck: Scanning /dev/vda1 [/] done
quotacheck: Checked 11909 directories and 76257 files
[email protected]:/#

 

クオータの状況確認

wktk# repquota -a
*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
———————————————————————-
root      — 1502740       0       0          78726     0     0

・・・(略)
wktk0002  —     120       0       0             14     0     0
wktk0003  —   51552       0       0           2517     0     0
wktk0004  —   47432       0       0           1168     0     0
wktk0005  —     860       0       0             82     0     0
・・・(略)
wktk#

 

クオータのDB更新

wktk# quotacheck -m -a

クオータテンプレートの適用

wktk# edquota -p tempuser wktk0003

 

 

メモ Ubuntu 10.04 でnologinなFTP環境を作りたいとき

FTP接続はできてSSHできないユーザーを作りたいときは

/usr/sbin/nologin

をログインシェルにする。

useradd “$USERID” -m -k /etc/wktk_skel -g 1001 -p `perl -e “print(crypt(‘$PASSWD’, ’64’));”` -s /usr/sbin/nologin

これだけではFTPでログインできないので

/etc/shells

/usr/sbin/nologin を追記する。

[email protected]:/home/yutaro/scripts# cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/sbin/nologin

これでFTP接続はできてSSHできないユーザー環境が出来上がり。

参考文献:https://help.ubuntu.com/10.04/serverguide/C/ftp-server.html

メモ Ubuntu 10.04 でsuPHPを使うと出るエラー

Ubuntu 10.04 でsuPHPを使うと下記のエラーが Apache のエラーログに残る。

 

[Sun Aug 07 16:50:16 2011] [error] [client 192.168.0.100] PHP Deprecated:  Comments starting with ‘#’ are deprecated in /etc/php5/cgi/conf.d/imagick.ini on line 1 in Unknown on line 0, referer: http://wktk.so/

[Sun Aug 07 16:50:02 2011] [error] [client ::1] PHP Deprecated:  Comments starting with ‘#’ are deprecated in /etc/php5/cgi/conf.d/imagick.ini on lin
e 1 in Unknown on line 0

 

原因は単純。

 

[email protected]:/etc/php5# vi /etc/php5/cgi/conf.d/imagick.ini

# configuration for php imagick module ←こいつ
extension=imagick.so

 

#でコメントアウトされていて文法エラー。

消してあげると治ります。

apt-getしたものなにの・・・