6. アクセスの制限

不要なパッケージを消したり不要なサービスを止めたりしたあとは、アクセスを最小限に制限しましょう。この章では、各種サービス毎にアクセス制限のしかたを紹介します。 以下、127.0.0.1 および 192.168.1.1/24 からのアクセスのみ許可する例です。なお、あらかじめ /etc/hosts.deny は

all : all

と設定されているものとします。

6.1. Canna (かな漢字変換サーバ)

Canna-3.6 以降では、cannaserver に -inet オプションをつけないかぎりデフォルトでは TCP 接続を許可しません。 Momonga Linux のパッケージでもそのようになっています。127.0.0.1 と 192.168.1.1/24 からの TCP 接続も許可するには、/etc/init.d/canna の

daemon cannaserver -syslog -u bin

となっている部分を

daemon cannaserver -syslog -u bin -inet

とし、/etc/hosts.canna を以下のように編集します。なお、hosts.canna ではサブネット表記が使えないので、必要なホストはすべて列挙する必要があります (ホスト名でも可)。

127.0.0.1
192.168.1.1
192.168.1.2
(後略)

6.2. ntpd (時刻合わせサーバ)

ntpd は、デフォルトではどこからの接続も許可してしまいますが、アクセス制限をする場合は、問い合わせ先の上位サーバとの通信も許可しないといけません。

例えば ntp1.jst.mfeed.ad.jp (210.173.160.27) と ntp2.jst.mfeed.ad.jp (210.173.160.57) を上位サーバに指定するなら、/etc/ntp.conf を

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
driftfile /etc/ntp/drift
restrict default ignore
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 noquery nomodify nopeer notrust notrap
restrict 210.173.160.27 noquery nomodify
restrict 210.173.160.57 noquery nomodify

のようにします。restrict 行ではホスト名は使えないので IP アドレスで指定してください。

なお、/etc/ntp/step-tickers に上位サーバのホスト名を一行に一ホストずつ列挙しておくと、起動時にそれらのホストと時刻をあわせてから ntpd が起動しますので、ぜひ設定しておきましょう。

参考:/usr/share/doc/ntp-*/html/accopt.htm

6.3. openntpd (NTP サーバ)

セキュリティに重点を置いた OpenBSD 由来の NTP サーバ OpenNTPD はデフォルトではアクセスを受け付けません。127.0.0.1 と 192.168.1.127 への接続のみを受け付けるには、/etc/ntpd.conf を以下のように書きます。

listen on 127.0.0.1
listen on 192.168.1.127

参考:ntpd(8) ntpd.conf(5)

6.4. netatalk (AppleTalk サービス)

netatalk は tcp_wrappers によるアクセス制御ができますので、/etc/hosts.allow を以下のように設定します。

# AppleTalk ファイリングプロトコルデーモン
afpd: 127.0.0.1 192.168.1.1/255.255.255.0
# AppleTalk プリントサーバデーモン
papd: 127.0.0.1 192.168.1.1/255.255.255.0

参考:man afpd papd hosts.allow hosts.deny

6.5. openssh (Secure Shell サーバ)

sshd は tcp_wrappers によるアクセス制御ができますので、/etc/hosts.allow を以下のように設定します。

# OpenSSH SSH daemon
sshd: 127.0.0.1 192.168.1.1/255.255.255.0

なお、sshd をよりセキュアに使うなら、パスワードによるログインは不許可にして、パスフレーズによるログインのみを許可しましょう。 具体的には、/etc/ssh/sshd_config を以下のように設定します。

PasswordAuthentication no

参考:man sshd sshd_config hosts.allow hosts.deny

6.6. proftpd (FTP サービス)

proftpd は tcp_wrappers によるアクセス制御ができますので、/etc/hosts.allow を以下のように設定します。

# ftp daemon
proftpd: 127.0.0.1 192.168.1.1/255.255.255.0

なお、/etc/proftpd.conf も必要に応じて編集しましょう。

参考:man proftpd hosts.allow hosts.deny

6.7. vsftpd (FTP サービス)

vsftpd は /etc/vsftpd.conf に

tcp_wrappers=YES

と書いて tcp_wrappers を有効にすると /etc/hosts.allow に以下のように書けます。

vsftpd: 127.0.0.1 192.168.1.1/255.255.255.0

スタンドアロンモードでは /etc/vsftpd.conf に listen_address (xinetd.conf では bind 設定) も記述しておくと良いでしょう。ただし、ひとつの vsftpd.conf では listen_address に複数 IP を指定することができません。

参考:vsftpd(8) vsftpd.conf(5) hosts_access(5)

6.8. samba (SMB サーバ)

/etc/samba/smb.conf で以下のように設定します。

hosts allow = 127.0.0.1 192.168.1.1/255.255.255.0
hosts deny = 0.0.0.0/0.0.0.0

参考:man smb.conf

6.9. squid (HTTP/FTP プロキシサーバ)

/etc/squid/squid.conf で設定します。デフォルトの squid.conf の該当部分を参照しながら、以下のような設定をしましょう。

acl localhost src 127.0.0.1/255.255.255.255
http_access allow localhost
acl localnet src 192.168.1.0/255.255.255.0
http_access allow localnet
http_access deny all

6.10. wwwoffle (HTTP キャッシュサーバ)

/etc/wwwoffle.conf で設定します。

AllowedConnectHosts
{
127.0.0.1
192.168.1.*
}

なお、LocalHost {...} に列挙されているホストは自動的に接続許可されます。

参考:man wwwoffle.conf

6.11. acl (ファイルシステムによるアクセス制御)

対応ファイルシステム上では、任意のユーザおよびグループに対してアクセス制限をすることができます。 以下の例では userhoge というユーザや groupburoro というグループからのアクセスを許していますが、chown userhoge:groupburoro する必要はありません。

$ chmod go-rwx filefuga
$ setfacl -m u:userhoge:rwx,g:groupburoro:rw filefuga

6.12. もっとたくさん紹介すること (FIXME)