色々なサービスでアクセス元IPアドレスを制限する方法
firewalldで制限
セキュリティ対策として、
- 不要な、プロセスを起動しない
- 不要な、ポートを閉塞する
- 許可するアクセス元を制限する
などを求められている。
アクセス元制限の解決策は
- 専用のファイヤウォールを導入する
- NW機器のACLで制限する
- OSで制限する
- /etc/hosts.allow,/etc/hosts.denyで制限
- firewalld,iptableでサービス毎に制限
- サービス自体で制限
などあるが、影響範囲を限定するには「サービス自体で制限」が最も望ましいと考える。サービス毎にこの具体例を例示する。
firewalld,iptableでサービス毎に制限も可能であるが、設定が煩雑(自分がよく理解できていないだけ、でもある)なので、サービスごとの設定ファイルに書く。
sshd
sshd_configに、AllowUsers,DenyUsers,AllogGroups,DenyGroupdを指定
指定の参照順は[DenyUsers 、AllowUsers 、DenyGroups 、AllowGroups ]
全てのユーザのアクセス元を限定
/etc/ssh/sshd_config
AllowUsers *@www.xxx.yyy.zzz/nnn
ユーザ毎に指定
/etc/ssh/sshd_config
AllowUsers user1 # 全てのアドレスから
AllowUsers user2@192.168.0.0/16 # 192.168.0.0/16 から許可
AllowUsers user3@192.168.0.99 # 192.168.0.99 からのみ許可
httpd
ホワイトリスト方式
ホワイトリスト方式で、次のように書く
- Order Allow,Deny
- Allow from xxx
- Deny from all
サイト(ディレクトリ)毎に指定
サイトのconfに書くか、レンタルサーバなどでconfに書けないなら、[ .htaccess ]が利用可能なら、それに書く
/etc/httpd/conf.d/xxxx.conf
<Directory "/directory/to/path">
Order allow,deny
Allow from wwww.xxxx.yyyy.zzz/nnn
Deny from all
</Directory>
dns
ホワイトリスト方式
ホワイトリスト方式で、次のように書く
- allow-queryで許可するIPアドレスを指定する
- allow-queryは、optionに書けば全体、zoneに書けばそのゾーンだけに有効
- blackholeで接続そのものを拒否できる。optionのみ指定可能
/etc/named.conf
option {
allow-query { 192.168.0.0/16; 127.0.0.1; };
....
}