2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Apacheのアクセス制御!

ネット上の全ての人に自サイトのネタを観覧させたくないときがある。さらには、これを限られた人だけに見せたい場合がある。これをApache上ではどのように拒否・許可したらいいか?以下の方法で簡単にできるので試してほしい 。


1..htaccessへディレクティブを書いてアクセス制御する
たとえば、いきなりTOPページから見せない場合は、ドキュメントルートに.htaccessというファイルを作る。
そして、以下のような内容を記載する。とても簡単だ。

sub2:~# cd /usr/local/apache/htdocs/
sub2:/usr/local/apache/htdocs# vi .htaccess
<Limit GET>
order deny,allow
Allow from all
deny from < 観覧を拒否したいIPアドレスもしくはホスト名 >
</Limit>

これで、 denyで指定した相手が観覧できなくなる。


2.DoS攻撃のような、短い時間に大量にリクエストをアクセスされた場合の防御
ワームに感染しているか、故意的なのか?どうせまともなホストでは無いだろうが、大量(一時間に10000アクセス)にGETリクエストを送信してくる。こやつを、Apacheのアクセス制御でブロック!

sub2:/ # cd /usr/local/apache/logs
sub2:/usr/local/apache/logs# tail -f access_log
省略
220.181.34.183 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/telnet/security/mail/gengo/virus/mailgate.html HTTP/1.1" 403 274 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.183 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/debian/mail/kernel/sitepolicy/sitepolicy.html HTTP/1.1" 403 273 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.169 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/debian/apache/backup/virus/amavis.html HTTP/1.1" 403 266 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.169 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/debian/debian/apache/backup/network/NW_1.htm HTTP/1.1" 403 265 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.161 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/debian/mail/mail/win/etc/finger.html HTTP/1.1" 403 257 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.170 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/network/hard/win/video/solaris/solaris1.html HTTP/1.1" 403 265 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.172 - - [05/Feb/2007:10:03:47 +0900] "GET /index.php3/debian/telnet/backup/postgres/musen/ofdm.html HTTP/1.1" 403 266 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
省略

IPアドレスころころ変えられて来るから立ち悪いぜ。Apacheからは、403エラー(アクセス権限違反)で跳ね返えされてるのにひつこいぜ、この馬鹿野郎!そこで、netstatでホストの接続情報を見てみる。

sub2:~# netstat -an | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:80 220.181.34.187:44515 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.171:35971 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:20057 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.187:43411 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40113 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.165:22637 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:2214 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:1360 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.170:28691 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.163:43994 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:35970 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:20056 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.187:43410 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40112 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32861 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.161:48728 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3317 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22694 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.189:2452 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.178:2443 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.163:43322 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.181:37855 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.181:38111 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:37009 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.184:1026 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32862 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.165:22191 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40723 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:1412 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:2952 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.184:1059 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2213 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:1870 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2834 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:4925 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:22682 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32238 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:1871 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22050 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.189:1840 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:22683 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.170:29591 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.162:32783 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22994 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:1411 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:2119 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:1567 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.185:4391 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:2444 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:2118 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:28949 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.184:1639 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2833 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:4926 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3875 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32237 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.187:44027 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32292 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:43127 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:29434 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.189:1421 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32293 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:33251 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.185:4392 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:31829 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.177:1568 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.179:2514 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.173:20620 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.181:37220 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:31830 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3010 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33052 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32784 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.179:1969 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:42180 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3011 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:4047 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3503 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33498 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.167:42179 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:23186 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.184:2508 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:28318 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:43250 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:37294 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.166:23187 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.178:2951 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.174:33051 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3749 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.185:1359 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:33252 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.181:37715 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:48727 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.165:22435 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.184:2446 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:29164 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3750 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.187:44028 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33497 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.179:2516 ESTABLISHED
省略

うーん、案の定 220.181.34.160~220.181.34.190 あたりまでくっついて離れないとみえる。迷惑だから離れろ!って感じ。もちろん、逆引きるホストでは無いので、アクセスをさせないようにするには、IPアドレスでブロックするしか無いだろう。
Apacheで静的なホストをDenyしたい場合は、1項で説明したようにディレクトリへ.htaccessファイルを、作り以下のLimitディレクティブで構文を囲む。

<Limit GET>
構文
</Limit>

この方法は制限セクションでGETやPOSTなどのコマンドを指定して、ロケーションが一致したらDenyする方法だ。しかし、この定義の方法では、ほとんどDoS攻撃のようにGETコマンド要求パケットを乱射されるとすり抜けてしまうパケットが有るようで思ったほど効果が無い。したがって、俺の場合は、とにかく指定のディレクトリへの無条件のアクセス拒否設定をhttpd.confへ以下のように設定した。DenyしたいディレクトリのDirectoryディレクティブへDeny from構文を追加する。

sub2:~# cd /usr/local/apache/conf/
sub2:/usr/local/apache/conf# vi httpd.conf

省略
<Directory “/usr/local/apache/htdocs”>
Options FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
Deny from 220.181.34.
</Directory>
省略

以上

コメント