アクセス制限に使われる英語の話
2015-01-08
英語って難しい。
Allow? Accept? Permit?
ITインフラ、つまりサーバーやネットワーク機器といった情報システムを稼働させるための基盤は、利用者に正しくサービスを供給するために、しばしばアクセス制限をかけます。送信元IPアドレスや宛先ポート番号を制限したり、ユーザー認証をかけてみたり…。
サーバーやネットワーク機器のアクセス制限の設定は、コマンドや設定ファイルの編集により行いますが、ネットワーク機器やサーバー(サービス)毎に設定に使う英単語が違うのでいつも苦労します。
アクセス制限は基本的には「許可」「拒否」「制限」の3種類ですが、それは日本語だけの話みたいで、英語だと主に以下の英単語を使います。
許可
- allow
- accept
- permit
- grant
- pass
- valid
拒否
- deny
- drop
- reject
- invalid
制限
- restrict
今回は、英語の勉強も兼ねて、まとめてみようと思います。コマンドや設定ファイルに関する詳しい説明はここでは省いて、使われている英単語に着目していきます。
なお、下記に記載する英単語の意味は、全てWeblio辞書 英和辞典・和英辞典から引用したものになります。
Linuxサーバー
Linuxでは、以下の2つのファイルにより、アクセス制限をかけることができます。
- /etc/hosts.allow
- /etc/hosts.deny
/etc/hosts.allowはアクセス許可条件を設定するファイルで、/etc/hosts.denyはアクセス拒否条件を設定するファイルです。
allowとdenyが出てきましたね。それぞれの単語は下記の意味を持っているそうです。
- allow
【動詞】
- deny
【動詞】
allowが単に許す、denyが単に拒む、といった意味のようですね。これが一般的だと思います。個人的には全てこれで統一してほしかった…。
Apache HTTP Server
言わずと知れたWebサーバーソフトウェアの代表格。以下のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/httpd/conf/httpd.conf
# apache 2.2以前
Allow from all
Deny from 192.168.1.0/24
# apache 2.4系
Require all granted
Require all denied
# 共通
AllowOverride None
SetEnvIf Accept-Language "^$" non_japanese
Require valid-user
allow・denyの他にgrant(5行目)・accept(9行目)・valid(10行目)が出てきました。早速、それぞれの意味を確認してみましょう。
- grant
【動詞】
- accept
【動詞】
- valid
【形容詞】
上記の3つの単語は、全て肯定的な意味で、許可するための設定に使われます。
grantは、頼まれたことをしてあげる。acceptは、積極的に受け入れる。validは、主にユーザー認証の許可ユーザー指定に使われることから、ちゃんとした・正当な、といった意味でしょうか。
いやはや、難しいですね。違いがさっぱりわかりません。acceptは積極的に受け入れるニュアンスを含んでいるようですが、システムのインプットアウトプットに積極的もクソもねえだろ、と。ソースコードをよく読めば、本当に積極的なのかも知れませんがね…。
SSH(Secure Shell)
次は、SSH設定ファイルです。以下のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/ssh/sshd_config
AllowUsers myuser
DenyUsers myuser
これは簡単ですね。わかりやすい。最初に出てきたオーソドックスなallowとdenyです。安心します。
しかしながら、apacheの設定では、ユーザー指定でvalidを使っていましたが、これを見る限りallowでもいいんじゃ?と思ってしまいますね。英語に疎い私だからでしょうか。
こういうのは開発者の気分で決めてるんでしょうかね。
FTP(File Transfer Protocol)
FTPは、次のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/vsftpd/vsftpd.conf
userlist_deny=YES
こちらも簡単。denyのみ。値をNOに変更すると、allow的な動きをします。
Samba
Sambaは、次のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/samba/conf/smb.conf
hosts allow = 127. 192.168.
hosts deny = 192.168.2.
valid users = root, @validgroup
invalid users = @invalidgroup
単純といえば単純ですね。ホストの指定にはallowとdeny、ユーザー指定にはvalidとinvalid。invalidはvalidの対義語で、以下の意味を持ちます。
- invalid
【形容詞】
まあ、ユーザー関連はvalidとinvalidで行こうという考えなのでしょう。英語に疎い私としては、SSHのように全部allowとdenyでいいじゃんってどうしても思ってしまいますが…。
Postfix
次は、メール転送エージェント(MTA)のPostfixです。次のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/postfix/main.cf
smtpd_client_restrictions = permit_mynetworks, reject
smtpd_helo_restrictions = reject_unknown_hostname
smtpd_sender_restrictions = reject_unknown_sender_domain
はい、新単語の連発です。がっかりします。ここで登場したのは以下の単語です。
- permit
【動詞】
- reject
【動詞】
- restrict
【動詞】
permitは肯定的な意味で、rejectは否定的な意味、restrictはその中間の制限といった意味です。
日本語の意味を見る限り、私にはpermitとallow、rejectとdenyの意味の区別がつきません。やっぱり単語のチョイスは開発者の好み?
Sendmail
次は古くからのメールサーバーソフトウェアである、Sendmail。設定が複雑なだけに、イヤな予感。次のファイル・構文でアクセス制御に関連する設定ができます。
- /etc/mail/sendmail.cf
CHECK_HOST_ALLOW='foobar.co.jp'
CHECK_RELAY_DEFAULT=allow
ALLOW_RECIPIENT_DOMAIN='foobar.co.jp'
ALLOW_RELAY_FROM='foobar.co.jp'
ALLOW_RELAY_TO='foobar.co.jp'
ACCEPT_ADDRS='$m'
CHECK_HOST_ALLOW=/etc/mail/sendmail.host.allow
CHECK_HOST_DENY=/etc/mail/sendmail.host.deny
CLIENT_DENY_TO=/etc/sendmail.deny.to
REJECT_SOURCE_ROUTE_RELAY=yes
REJECT_EXTERN_SRR=yes
HDR_REJECT_BADMID=no
HDR_REJECT_RCPTADDRS=/etc/sendmail.hdrrejaddr
HDR_REJECT_ACTION=error
MAIL_RELAY_RESTRICTION=yes
上に挙げた設定構文は、ごく一例です。登場した単語は、allow・deny・accept・reject・restrictionです。入り乱れています。
やはり様々な単語が使われるのは、古くからあるソフトウェアだからなのでしょうか。それとも高機能が故に微妙なニュアンス毎に単語を使い分けているのでしょうか。私には、さっぱりわかりません。
ただ今回、denyとrejectの微妙な違いが分かった気がします。ここでは、denyは主にホストの拒否、rejectは主に転送の拒否を示しています。つまり、denyは他人に原因がある拒否、rejectは自分に原因がある拒否のような気がします。…気がするだけです。違うかもしれません。
…Sendmail設定むずすぎ。
SQL
ここで、ちょっと変わってSQL文。SQLでは、ユーザー権限を付与する命令が用意されています。
grant create on *.* to 'user'@'localhost';
grantですね。頼まれたことを承諾する、といった意味でしたから、権限として頼まれたらやってやるよ、という設定と考えれば自然ですかね。
そろそろ頭の中ぐちゃぐちゃになってきた。
iptables(firewalls)
Linuxのパケットフィルタリングを行うiptables(firewalld)は、次のコマンドを実行することでアクセス制御に関連する設定ができます。iptablesの例を示しますが、firewalldも使う英単語は同一です。
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j DROP
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
ここで、新たにdropという単語が出てきました。意味は以下のとおりです。
- drop
【動詞】
- 〔動詞(+down)(+from+(代)名詞)〕〔…から〕ポタポタ落ちる,しずくがたれる.
- 〔動詞(+down)〕〈ものが〉落ちる; 〈幕などが〉下りる.
- 〔動詞(+副詞(句))〕〈人が〉(ばったり)倒れる,疲れて倒れる.
- 〈強さ・程度・価値・音調などが〉下がる.
- 〔+into+(代)名詞〕自然に〔…の状態に〕なる,陥る.
- 〈事が〉やめになる.
- 〔動詞(+前置詞+(代)名詞)〕〔…から〕〔…へ〕〈人が〉ひょいと下りる,飛び降りる 〔from〕 〔to,into〕《★【比較】 fall は誤ったりして「落ちる」の意》.
- 〔+from+(代)名詞〕〈言葉が〉〔…から〕ふと漏れ出る.
- 〔動詞(+前置詞+(代)名詞)〕〔…から〕落伍(らくご)する,やめる,脱落する 〔out of,from〕.
dropは6か9の意味でしょうか。中断するといったニュアンスのようですね。
iptablesは、rejectで拒否した場合、パケットを破棄したことを送信者に返答しますが、dropで拒否した場合には、返答も何も行わないという差があるそうです。dropは中断してそれっきりってことですね。
そして、許可はallowでもpermitでもなく、acceptと…。区別のしようがないね。しょうがないね。
Cisco機器
ここから打って変わって、ネットワーク機器の設定コマンドです。
言わずと知れた世界最大のコンピュータネットワーク機器開発会社のCisco社のネットワーク機器設定コマンドです。
Cisco(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Cisco(config)# access-list 102 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
許可がpermitで、拒否がdenyです。
私は初めて触ったネットワーク機器がCisco社製だったため、このコマンドはあまり忘れないですが、こうやって考えてみるとごちゃごちゃになりますね…。
Allied Telesis機器
Allied Telesis社製のネットワーク機器のアクセス制御設定コマンドは以下のとおりです。
awplus(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
awplus(config)# access-list 102 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
Cisco社と同じく、許可がpermitで、拒否がdenyです。
ネットワーク機器に入ってるOSって、割とみんなCisco社のネットワーク機器OSの”Cisco IOS”を参考にしているみたいで、permitとdenyが多い印象です。
Allied Telesis社に関してはコマンド丸パクリですがね…。
YAMAHA機器
とうとう最後です。私が個人的に大好きなYAMAHA社製のネットワーク機器のアクセス制御設定コマンドです。
pp auth accept pap chap
ip filter 101 pass 192.168.1.0/24 192.168.2.0/24 * * *
ip filter 102 reject 192.168.1.0/24 192.168.3.0/24 * * *
ip filter 103 restrict 192.168.1.0/24 192.168.4.0/24 * * *
ネットワーク機器では珍しい、独自路線です。出てきた単語はaccept・pass・reject・restrictです。ここで初めて出てきた、passの意味は以下のとおりです。
- pass
【動詞】
2の意味ですかね。ネットワーク機器にとって、次に回します=許可します、なので。
ここで出てきたacceptに関しては、これまでとは違って積極的な意味にも取れますね。"pp auth accept pap chap"は、papかchap認証を受け入れる、というコマンドなので。
restrictは、許可でも拒否でもない、制限という意味で先ほど出てきましたが、この設定をすると、WAN回線の接続状態に応じて通したり通さなかったりするみたいです。
雑談ですが、YAMAHA社製のネットワーク機器は、音が全くしないんですよね。小さくて、なのに性能もいいし、なによりコマンド仕様が独自で日本語対応してるので、すごく設定しやすいです。WebインターフェースのGUIもありますし。大好きです。あなたも自宅に1台、どうですか?(ステマじゃないです)
まとめ
結果、よくわかりませんでした。
各英単語の登場回数と、私が判断したITに使われる際の意味をまとめておきます。英語に関してはそこら辺の中学生の方が私よりできるくらい苦手なので、意味が若干違うかもしれませんが、ご容赦ください。コメントいただければ反映します。
動作 | 英単語 | 登場回数 | 意味 |
---|---|---|---|
許可 | allow | 5 | 単なる許可 |
許可 | accept | 4 | 積極的な許可 |
許可 | permit | 3 | 転送の許可 |
許可 | grant | 2 | 受け身な許可 |
許可 | valid | 2 | 信用する |
許可 | pass | 1 | 転送の許可 |
拒否 | deny | 8 | 単なる拒否 |
拒否 | reject | 4 | 拒絶する拒否 |
拒否 | drop | 1 | 中断する |
拒否 | invalid | 1 | 信用しない |
制限 | restrict | 3 | 制限する |
allowとdenyが多数派ですね。denyに関しては2位と倍の差をつけた圧勝です。
もういっそ、allowとdenyだけにしてほしいです…。英単語によって違いがあるのであれば、素人にもわかるくらいの違いにしてほしい。明確な動作の差があれば納得なんですけどねー…。
ただ、今回調べてみて、英単語による若干のニュアンスの違いは掴み取れました。すごく感覚的な、言葉には表しにくい違いですが。開発者の方は、それを使い分けているのかも知れないですね。