不要なパッケージを消したり不要なサービスを止めたりしたあとは、アクセスを最小限に制限しましょう。この章では、各種サービス毎にアクセス制限のしかたを紹介します。 以下、127.0.0.1 および 192.168.1.1/24 からのアクセスのみ許可する例です。なお、あらかじめ /etc/hosts.deny は
all : all
と設定されているものとします。
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 (後略)
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
セキュリティに重点を置いた 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)
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
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
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
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)
/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
/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
/etc/wwwoffle.conf で設定します。
AllowedConnectHosts { 127.0.0.1 192.168.1.* }
なお、LocalHost {...} に列挙されているホストは自動的に接続許可されます。
参考:man wwwoffle.conf
対応ファイルシステム上では、任意のユーザおよびグループに対してアクセス制限をすることができます。 以下の例では userhoge というユーザや groupburoro というグループからのアクセスを許していますが、chown userhoge:groupburoro する必要はありません。
$ chmod go-rwx filefuga $ setfacl -m u:userhoge:rwx,g:groupburoro:rw filefuga