Security: Apache: using tcp wrappers

(last edit: 2002-06-27)

Introduction

Apache is a fine webserver but what if you would like to control who views your websites? You could setup a firewall or you could use tcpwrappers. This article describes how you can set this up.

Configuring apache

You don't have to recompile apache, you just have to alter you configuration. Apache doesn't come with tcpwrappers support (dunno if you can compile it in) but you can run it from inted. Somewhere in your configuration file is a line beginning with "ServerType" followed by "standalone". This means exactly what is says. Change the "standalone" to "inted". Stop apache with "apachectl stop" if it is runnen (don't forget to be root).

Configuring inetd

Add the following line to the "/etc/inetd.conf": http stream tcp nowait root /usr/local/sbin/httpd httpd Do a "killall -HUP inetd" as root and you're set.

Allowing ip's

You can allow / disallow ip's from connecting to the httpd. This is done with tcp wrappers. The configuration file is "/etc/hosts.allow". Make sure the last line in this file is "ALL : ALL : DENY". This makes sure that all ip's which don't match any line above this one are blocked. If you forget this line or you don't want to do this then you have to make sure you specify 'deny' rules for 'httpd'. Two setups: 1: httpd : 1.1.1.1 2.2.2.2 3.3.3.3 : ALLOW ALL : ALL : DENY 2: httpd: 1.1.1.1 2.2.2.2 3.3.3.3 : ALLOW httpd: ALL : DENY Setup 1 just denies all connections (not just to httpd) except the httpd ones we allow (this is the best setup IMHO). If you don't want to do this make sure you specify a 'deny' line for httpd like setup 2.

Conclusion

I've runed apache from inetd and the protection works great. The disavantage is the apache is slow and slows down more when more users connect to it. I guess this is the price you have to pay. If someone knows the answer to this let me know on i do get it. It isn't the 'nowait'/'wait' option in inetd, i've read the documentation and tried them both.

Click here to go back to the index.