接続元IPアドレスでアクセスを弾く
何故か家から繋がらんのだが?
家からssh接続してサーバ内見るかーとか思ったら、
オフィスからつないだ時と違う挙動。あれれ。
その時はVPNでオフィスを踏み台にする方法で
事なきを得たけども、後々設定変更が必要になって
自分で許可IPを追加する必要が出たので調査した。
1. /etc/hosts.allowファイルを使う
まずサーバ内で確認したのが/etc配下にある
/etc/hosts.allow /etc/hosts.deny
このファイルで出来るのは
特定サービス、特定IPアドレスからのアクセスを許可(または拒否)
動きとしては、
1. allowで許可するリストに含まれていれば許可
2. denyで拒否するリストに含まれていれば拒否
3. どちらにも設定されていないものは許可
なので、この仕組みを使う場合は/etc/hosts.denyの最終行に
全てのアクセスを弾くような設定を入れていた。
詳しくは下記のリンクが分かりやすかった。
トリガを元にメール飛ばしたり、色々出来るようなので割と柔軟っぽい。
止められないUNIXサーバのセキュリティ対策(3):サービスをセキュアにするための利用制限〜TCP Wrapperによるサービスのアクセス制限〜 (1/3) - @IT
ただ、今回の件は/etc/hosts系ファイルを使っていなかった。
2. iptablesでパケットフィルタリングをする
他の方法よりもっと込み入った設定ができるやつ。
たしか、前職ではサーバセンターの中でごにょごにょしてる人が使ってた気がする。
今のオフィス規模と用途では使わないので、全然良くわかってない。
確認したけど、残念ながらそもそも何も設定されていなかった。
3. .htaccessでアクセスを弾く
名前を".htaccess"として
一行目が拒否、許可の優先度設定
二行目以降で、一行目が許可なら拒否リストを
一行目が拒否なら許可リスト記載したテキストファイルを作成。
ディレクトリ内に配置をすれば、そのディレクトリ配下は
.htaccessで指定されたアクセス設定になる。
普通、指定したアクセス元のみ受け入れる設定なら下記のような感じ。
order deny,allow deny from all allow from 123.45.67.89
あるにはあったけどほぼデフォルトみたいな感じ。
ここに書いてね!みたいな。うーむ。
4. ソースコード内からアクセス元IPを評価して弾く
結局コレだった。
アプリケーション側のスクリプト内で直接アクセス元のIPをチェックして
リストに入っていなければ返却するデータを空にするという仕組み。
以下チェックする必要があるかなーと思ってたリスト