Inhaltsverzeichnis
Apache HTTP Server CentOS 6
Der Apache HTTP Server ist ein Open Source Webserver und der seit 1996 am meisten im Internet eingesetzte Webserver weltweit. Der freie und quell offenen Webserver wird von der Apache Software Foundation kostenlos zur Verfügung gestellt und als das Hauptprojekte weiterentwickelt.
Installation
Zur Installation des Apache HTTP Servers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete httpd
installiert:
# yum install httpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.halifax.rwth-aachen.de * extras: ftp.halifax.rwth-aachen.de * updates: ftp.halifax.rwth-aachen.de base | 3.7 kB 00:00 extras | 3.0 kB 00:00 updates | 3.5 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.2.15-5.el6.centos set to be updated --> Processing Dependency: httpd-tools = 2.2.15-5.el6.centos for package: httpd-2.2.15-5.el6.centos.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-5.el6.centos.x86_64 --> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-5.el6.centos.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-5.el6.centos.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-5.el6.centos.x86_64 --> Running transaction check ---> Package apr.x86_64 0:1.3.9-3.el6_0.1 set to be updated ---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 set to be updated ---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 set to be updated ---> Package httpd-tools.x86_64 0:2.2.15-5.el6.centos set to be updated ---> Package mailcap.noarch 0:2.1.31-1.1.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: httpd x86_64 2.2.15-5.el6.centos base 811 k Installing for dependencies: apr x86_64 1.3.9-3.el6_0.1 updates 124 k apr-util x86_64 1.3.9-3.el6_0.1 updates 87 k apr-util-ldap x86_64 1.3.9-3.el6_0.1 updates 15 k httpd-tools x86_64 2.2.15-5.el6.centos base 68 k mailcap noarch 2.1.31-1.1.el6 base 27 k Transaction Summary ================================================================================ Install 6 Package(s) Upgrade 0 Package(s) Total download size: 1.1 M Installed size: 3.6 M Is this ok [y/N]: y Downloading Packages: (1/6): apr-1.3.9-3.el6_0.1.x86_64.rpm | 124 kB 00:00 (2/6): apr-util-1.3.9-3.el6_0.1.x86_64.rpm | 87 kB 00:00 (3/6): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00 (4/6): httpd-2.2.15-5.el6.centos.x86_64.rpm | 811 kB 00:00 (5/6): httpd-tools-2.2.15-5.el6.centos.x86_64.rpm | 68 kB 00:00 (6/6): mailcap-2.1.31-1.1.el6.noarch.rpm | 27 kB 00:00 -------------------------------------------------------------------------------- Total 616 kB/s | 1.1 MB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : apr-1.3.9-3.el6_0.1.x86_64 1/6 Installing : apr-util-1.3.9-3.el6_0.1.x86_64 2/6 Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 3/6 Installing : httpd-tools-2.2.15-5.el6.centos.x86_64 4/6 Installing : mailcap-2.1.31-1.1.el6.noarch 5/6 Installing : httpd-2.2.15-5.el6.centos.x86_64 6/6 Installed: httpd.x86_64 0:2.2.15-5.el6.centos Dependency Installed: apr.x86_64 0:1.3.9-3.el6_0.1 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-5.el6.centos mailcap.noarch 0:2.1.31-1.1.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket httpd
installiert wurden.
# rpm -qil httpd Name : httpd Relocations: (not relocatable) Version : 2.2.15 Vendor: CentOS Release : 5.el6.centos Build Date: Thu 07 Jul 2011 12:31:46 PM CEST Install Date: Thu 27 Oct 2011 11:05:46 AM CEST Build Host: c6b6.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: httpd-2.2.15-5.el6.centos.src.rpm Size : 3057369 License: ASL 2.0 Signature : RSA/8, Thu 07 Jul 2011 01:50:26 PM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server. /etc/httpd /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.d/README /etc/httpd/conf.d/welcome.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/httpd/logs /etc/httpd/modules /etc/httpd/run /etc/logrotate.d/httpd /etc/rc.d/init.d/httpd /etc/sysconfig/httpd /usr/lib64/httpd /usr/lib64/httpd/modules /usr/lib64/httpd/modules/mod_actions.so /usr/lib64/httpd/modules/mod_alias.so /usr/lib64/httpd/modules/mod_asis.so /usr/lib64/httpd/modules/mod_auth_basic.so /usr/lib64/httpd/modules/mod_auth_digest.so /usr/lib64/httpd/modules/mod_authn_alias.so /usr/lib64/httpd/modules/mod_authn_anon.so /usr/lib64/httpd/modules/mod_authn_dbd.so /usr/lib64/httpd/modules/mod_authn_dbm.so /usr/lib64/httpd/modules/mod_authn_default.so /usr/lib64/httpd/modules/mod_authn_file.so /usr/lib64/httpd/modules/mod_authnz_ldap.so /usr/lib64/httpd/modules/mod_authz_dbm.so /usr/lib64/httpd/modules/mod_authz_default.so /usr/lib64/httpd/modules/mod_authz_groupfile.so /usr/lib64/httpd/modules/mod_authz_host.so /usr/lib64/httpd/modules/mod_authz_owner.so /usr/lib64/httpd/modules/mod_authz_user.so /usr/lib64/httpd/modules/mod_autoindex.so /usr/lib64/httpd/modules/mod_cache.so /usr/lib64/httpd/modules/mod_cern_meta.so /usr/lib64/httpd/modules/mod_cgi.so /usr/lib64/httpd/modules/mod_cgid.so /usr/lib64/httpd/modules/mod_dav.so /usr/lib64/httpd/modules/mod_dav_fs.so /usr/lib64/httpd/modules/mod_dbd.so /usr/lib64/httpd/modules/mod_deflate.so /usr/lib64/httpd/modules/mod_dir.so /usr/lib64/httpd/modules/mod_disk_cache.so /usr/lib64/httpd/modules/mod_dumpio.so /usr/lib64/httpd/modules/mod_env.so /usr/lib64/httpd/modules/mod_expires.so /usr/lib64/httpd/modules/mod_ext_filter.so /usr/lib64/httpd/modules/mod_filter.so /usr/lib64/httpd/modules/mod_headers.so /usr/lib64/httpd/modules/mod_ident.so /usr/lib64/httpd/modules/mod_include.so /usr/lib64/httpd/modules/mod_info.so /usr/lib64/httpd/modules/mod_ldap.so /usr/lib64/httpd/modules/mod_log_config.so /usr/lib64/httpd/modules/mod_log_forensic.so /usr/lib64/httpd/modules/mod_logio.so /usr/lib64/httpd/modules/mod_mime.so /usr/lib64/httpd/modules/mod_mime_magic.so /usr/lib64/httpd/modules/mod_negotiation.so /usr/lib64/httpd/modules/mod_proxy.so /usr/lib64/httpd/modules/mod_proxy_ajp.so /usr/lib64/httpd/modules/mod_proxy_balancer.so /usr/lib64/httpd/modules/mod_proxy_connect.so /usr/lib64/httpd/modules/mod_proxy_ftp.so /usr/lib64/httpd/modules/mod_proxy_http.so /usr/lib64/httpd/modules/mod_proxy_scgi.so /usr/lib64/httpd/modules/mod_reqtimeout.so /usr/lib64/httpd/modules/mod_rewrite.so /usr/lib64/httpd/modules/mod_setenvif.so /usr/lib64/httpd/modules/mod_speling.so /usr/lib64/httpd/modules/mod_status.so /usr/lib64/httpd/modules/mod_substitute.so /usr/lib64/httpd/modules/mod_suexec.so /usr/lib64/httpd/modules/mod_unique_id.so /usr/lib64/httpd/modules/mod_userdir.so /usr/lib64/httpd/modules/mod_usertrack.so /usr/lib64/httpd/modules/mod_version.so /usr/lib64/httpd/modules/mod_vhost_alias.so /usr/sbin/apachectl /usr/sbin/htcacheclean /usr/sbin/httpd /usr/sbin/httpd.event /usr/sbin/httpd.worker /usr/sbin/httxt2dbm /usr/sbin/rotatelogs /usr/sbin/suexec /usr/share/doc/httpd-2.2.15 /usr/share/doc/httpd-2.2.15/ABOUT_APACHE /usr/share/doc/httpd-2.2.15/CHANGES /usr/share/doc/httpd-2.2.15/LICENSE /usr/share/doc/httpd-2.2.15/NOTICE /usr/share/doc/httpd-2.2.15/README /usr/share/doc/httpd-2.2.15/VERSIONING /usr/share/man/man8/apachectl.8.gz /usr/share/man/man8/htcacheclean.8.gz /usr/share/man/man8/httpd.8.gz /usr/share/man/man8/rotatelogs.8.gz /usr/share/man/man8/suexec.8.gz /var/cache/mod_proxy /var/lib/dav /var/log/httpd /var/run/httpd /var/www /var/www/cgi-bin /var/www/error /var/www/error/HTTP_BAD_GATEWAY.html.var /var/www/error/HTTP_BAD_REQUEST.html.var /var/www/error/HTTP_FORBIDDEN.html.var /var/www/error/HTTP_GONE.html.var /var/www/error/HTTP_INTERNAL_SERVER_ERROR.html.var /var/www/error/HTTP_LENGTH_REQUIRED.html.var /var/www/error/HTTP_METHOD_NOT_ALLOWED.html.var /var/www/error/HTTP_NOT_FOUND.html.var /var/www/error/HTTP_NOT_IMPLEMENTED.html.var /var/www/error/HTTP_PRECONDITION_FAILED.html.var /var/www/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var /var/www/error/HTTP_REQUEST_TIME_OUT.html.var /var/www/error/HTTP_REQUEST_URI_TOO_LARGE.html.var /var/www/error/HTTP_SERVICE_UNAVAILABLE.html.var /var/www/error/HTTP_UNAUTHORIZED.html.var /var/www/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var /var/www/error/HTTP_VARIANT_ALSO_VARIES.html.var /var/www/error/README /var/www/error/contact.html.var /var/www/error/include /var/www/error/include/bottom.html /var/www/error/include/spacer.html /var/www/error/include/top.html /var/www/error/noindex.html /var/www/html /var/www/icons /var/www/icons/README /var/www/icons/README.html /var/www/icons/a.gif /var/www/icons/a.png /var/www/icons/alert.black.gif /var/www/icons/alert.black.png /var/www/icons/alert.red.gif /var/www/icons/alert.red.png /var/www/icons/apache_pb.gif /var/www/icons/apache_pb.png /var/www/icons/apache_pb2.gif /var/www/icons/apache_pb2.png /var/www/icons/apache_pb2_ani.gif /var/www/icons/back.gif /var/www/icons/back.png /var/www/icons/ball.gray.gif /var/www/icons/ball.gray.png /var/www/icons/ball.red.gif /var/www/icons/ball.red.png /var/www/icons/binary.gif /var/www/icons/binary.png /var/www/icons/binhex.gif /var/www/icons/binhex.png /var/www/icons/blank.gif /var/www/icons/blank.png /var/www/icons/bomb.gif /var/www/icons/bomb.png /var/www/icons/box1.gif /var/www/icons/box1.png /var/www/icons/box2.gif /var/www/icons/box2.png /var/www/icons/broken.gif /var/www/icons/broken.png /var/www/icons/burst.gif /var/www/icons/burst.png /var/www/icons/c.gif /var/www/icons/c.png /var/www/icons/comp.blue.gif /var/www/icons/comp.blue.png /var/www/icons/comp.gray.gif /var/www/icons/comp.gray.png /var/www/icons/compressed.gif /var/www/icons/compressed.png /var/www/icons/continued.gif /var/www/icons/continued.png /var/www/icons/dir.gif /var/www/icons/dir.png /var/www/icons/diskimg.gif /var/www/icons/diskimg.png /var/www/icons/down.gif /var/www/icons/down.png /var/www/icons/dvi.gif /var/www/icons/dvi.png /var/www/icons/f.gif /var/www/icons/f.png /var/www/icons/folder.gif /var/www/icons/folder.open.gif /var/www/icons/folder.open.png /var/www/icons/folder.png /var/www/icons/folder.sec.gif /var/www/icons/folder.sec.png /var/www/icons/forward.gif /var/www/icons/forward.png /var/www/icons/generic.gif /var/www/icons/generic.png /var/www/icons/generic.red.gif /var/www/icons/generic.red.png /var/www/icons/generic.sec.gif /var/www/icons/generic.sec.png /var/www/icons/hand.right.gif /var/www/icons/hand.right.png /var/www/icons/hand.up.gif /var/www/icons/hand.up.png /var/www/icons/icon.sheet.gif /var/www/icons/icon.sheet.png /var/www/icons/image1.gif /var/www/icons/image1.png /var/www/icons/image2.gif /var/www/icons/image2.png /var/www/icons/image3.gif /var/www/icons/image3.png /var/www/icons/index.gif /var/www/icons/index.png /var/www/icons/layout.gif /var/www/icons/layout.png /var/www/icons/left.gif /var/www/icons/left.png /var/www/icons/link.gif /var/www/icons/link.png /var/www/icons/movie.gif /var/www/icons/movie.png /var/www/icons/p.gif /var/www/icons/p.png /var/www/icons/patch.gif /var/www/icons/patch.png /var/www/icons/pdf.gif /var/www/icons/pdf.png /var/www/icons/pie0.gif /var/www/icons/pie0.png /var/www/icons/pie1.gif /var/www/icons/pie1.png /var/www/icons/pie2.gif /var/www/icons/pie2.png /var/www/icons/pie3.gif /var/www/icons/pie3.png /var/www/icons/pie4.gif /var/www/icons/pie4.png /var/www/icons/pie5.gif /var/www/icons/pie5.png /var/www/icons/pie6.gif /var/www/icons/pie6.png /var/www/icons/pie7.gif /var/www/icons/pie7.png /var/www/icons/pie8.gif /var/www/icons/pie8.png /var/www/icons/portal.gif /var/www/icons/portal.png /var/www/icons/poweredby.png /var/www/icons/ps.gif /var/www/icons/ps.png /var/www/icons/quill.gif /var/www/icons/quill.png /var/www/icons/right.gif /var/www/icons/right.png /var/www/icons/screw1.gif /var/www/icons/screw1.png /var/www/icons/screw2.gif /var/www/icons/screw2.png /var/www/icons/script.gif /var/www/icons/script.png /var/www/icons/small /var/www/icons/small/back.gif /var/www/icons/small/back.png /var/www/icons/small/binary.gif /var/www/icons/small/binary.png /var/www/icons/small/binhex.gif /var/www/icons/small/binhex.png /var/www/icons/small/blank.gif /var/www/icons/small/blank.png /var/www/icons/small/broken.gif /var/www/icons/small/broken.png /var/www/icons/small/burst.gif /var/www/icons/small/burst.png /var/www/icons/small/comp1.gif /var/www/icons/small/comp1.png /var/www/icons/small/comp2.gif /var/www/icons/small/comp2.png /var/www/icons/small/compressed.gif /var/www/icons/small/compressed.png /var/www/icons/small/continued.gif /var/www/icons/small/continued.png /var/www/icons/small/dir.gif /var/www/icons/small/dir.png /var/www/icons/small/dir2.gif /var/www/icons/small/dir2.png /var/www/icons/small/doc.gif /var/www/icons/small/doc.png /var/www/icons/small/forward.gif /var/www/icons/small/forward.png /var/www/icons/small/generic.gif /var/www/icons/small/generic.png /var/www/icons/small/generic2.gif /var/www/icons/small/generic2.png /var/www/icons/small/generic3.gif /var/www/icons/small/generic3.png /var/www/icons/small/image.gif /var/www/icons/small/image.png /var/www/icons/small/image2.gif /var/www/icons/small/image2.png /var/www/icons/small/index.gif /var/www/icons/small/index.png /var/www/icons/small/key.gif /var/www/icons/small/key.png /var/www/icons/small/movie.gif /var/www/icons/small/movie.png /var/www/icons/small/patch.gif /var/www/icons/small/patch.png /var/www/icons/small/ps.gif /var/www/icons/small/ps.png /var/www/icons/small/rainbow.gif /var/www/icons/small/rainbow.png /var/www/icons/small/sound.gif /var/www/icons/small/sound.png /var/www/icons/small/sound2.gif /var/www/icons/small/sound2.png /var/www/icons/small/tar.gif /var/www/icons/small/tar.png /var/www/icons/small/text.gif /var/www/icons/small/text.png /var/www/icons/small/transfer.gif /var/www/icons/small/transfer.png /var/www/icons/small/unknown.gif /var/www/icons/small/unknown.png /var/www/icons/small/uu.gif /var/www/icons/small/uu.png /var/www/icons/sound1.gif /var/www/icons/sound1.png /var/www/icons/sound2.gif /var/www/icons/sound2.png /var/www/icons/sphere1.gif /var/www/icons/sphere1.png /var/www/icons/sphere2.gif /var/www/icons/sphere2.png /var/www/icons/tar.gif /var/www/icons/tar.png /var/www/icons/tex.gif /var/www/icons/tex.png /var/www/icons/text.gif /var/www/icons/text.png /var/www/icons/transfer.gif /var/www/icons/transfer.png /var/www/icons/unknown.gif /var/www/icons/unknown.png /var/www/icons/up.gif /var/www/icons/up.png /var/www/icons/uu.gif /var/www/icons/uu.png /var/www/icons/uuencoded.gif /var/www/icons/uuencoded.png /var/www/icons/world1.gif /var/www/icons/world1.png /var/www/icons/world2.gif /var/www/icons/world2.png
Dienst/Deamon-Start einrichten
Um einen Apache HTTP Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# chkconfig httpd on
Eine Überprüfung, ob beim Neustart des Server der httpd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# chkconfig --list | grep httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables Regel
Damit der Apache HTTP Server auch erreichbar ist und nicht die Web-Anfragen vom Paketfilter iptables
blockiert werden, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 1562 1266K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 39 1248 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 987 packets, 169K bytes) num pkts bytes target prot opt in out source destination
Nachfolgender Befehl, fügt folgende iptables
-Regel dem iptables
-Regelwerk nach der Position 5 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 80 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 70 5752 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 6 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 5 packets, 692 bytes) num pkts bytes target prot opt in out source destination
Die neue Zeile ist an Position 5 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Port Forwarding
Falls sich der Apache HTTP Server NICHT auf dem Server befinden sollte, welcher z.B. die offizielle IP-Adresse verwaltet und auf diesem Server, welche die offizielle IP-Adresse inne hat, kein Apache HTTP Server läuft, können auf z.B. Port 80 ankommende TCP/IP-Pakete mit Hilfe von iptables
-Regeln auf einen anderen Server umgeleitet werden.
Beispiel:
- Alle Anfragen kommen auf dem Server
192.168.0.1
auf Port 80 an - Alle Anfragen sollen auf den Server
192.168.0.100
auf Port 80 - weitergeleitet werden!
Nachfolgende Regel muss dazu auf dem Server, welche die IP-Adresse 192.168.0.1 inne hat, zum iptables
-Regelwerk hinzugefügt werden. Das Ergänzen erfolgt in der iptables
-Kette:
nat
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -t nat -L -nv --line-numbers Chain PREROUTING (policy ACCEPT 1216 packets, 118K bytes) num pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 372 packets, 25706 bytes) num pkts bytes target prot opt in out source destination 1 790 59392 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 238 packets, 17722 bytes) num pkts bytes target prot opt in out source destination
WICHTIG - Bei der MASQUERADE-Regel darf NICHT das Interface enthalten sein, an dessen geFORWARDED wird !!!
Nachfolgender Befehl, fügen folgende iptables
-Regel dem iptables
-Regelwerk hinzu, ohne das der Paketfilter angehalten werden muss:
-A PREROUTING -t nat -d 192.168.0.1 -p tcp --dport 80 -j DNAT --to-dest 192.168.0.100:80
und hier der Befehl:
# iptables -A PREROUTING -t nat -d 192.168.0.1 -p tcp --dport 80 -j DNAT --to-dest 192.168.0.100:80
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -t nat -L -nv --line-numbers Chain PREROUTING (policy ACCEPT 1216 packets, 118K bytes) num pkts bytes target prot opt in out source destination 1 110 6600 DNAT tcp -- * * 0.0.0.0/0 192.168.0.1 tcp dpt:80 to:192.168.0.100:80 Chain POSTROUTING (policy ACCEPT 372 packets, 25706 bytes) num pkts bytes target prot opt in out source destination 1 790 59392 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 238 packets, 17722 bytes) num pkts bytes target prot opt in out source destination
WICHTIG - Bei der MASQUERADE-Regel darf NICHT das Interface enthalten sein, an dessen geFORWARDED wird !!!
Die neue Zeile ist an Position 1 (PREROUTING) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 1 110 6600 DNAT tcp -- * * 0.0.0.0/0 192.168.0.1 tcp dpt:80 to:192.168.0.100:80 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Erster Start
Falls alle voranstehenden Schritte wie beschrieben durchgeführt wurden, Installation, iptables usw., sollte dem ersten Start nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:
# service httpd start Starting httpd: [ OK ]
Webserver Überprüfung
Ob der Apache HTTP Server, sprich der httpd
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):
# ps auxwwwf | grep httpd root 6131 0.0 0.0 103148 824 pts/0 S+ 11:21 0:00 \_ grep httpd root 6117 0.0 0.3 178656 3884 ? Ss 11:21 0:00 /usr/sbin/httpd apache 6119 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6120 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6121 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6122 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6123 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6124 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6125 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd apache 6126 0.0 0.2 178656 2516 ? S 11:21 0:00 \_ /usr/sbin/httpd
Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien
/var/log/httpd/error_log
durchgeführt werden.
Ausgabe der LOG-Datei /var/log/httpd/error
mit nachfolgendem Befehl, die Ausgabe sollte wie nachfolgend dargestellt aussehen:
# cat /var/log/httpd/error_log [Thu Oct 27 11:21:10 2011] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Thu Oct 27 11:21:10 2011] [notice] Digest: generating secret for digest authentication ... [Thu Oct 27 11:21:10 2011] [notice] Digest: done [Thu Oct 27 11:21:10 2011] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations
Interface Überprüfung
Ob und an welchen Interface der Apache HTTP Server „lauscht“, bzw. Web-Anfragen beantwortet, kann mit nachfolgendem Befehl überprüft werden:
# netstat -tulpen | grep httpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 12438 6117/httpd
Erster Browser-Aufruf
Wenn der Start des Apache HTTP Server erfolgreich durchgeführt wurde, kann die Abfrage mittels eines Browsers erfolgen, wie im nachfolgenden Bild dargestellt:
Basis-Konfiguration
Standardmäßig kann ein Apache HTTP Server ohne weitere Konfigurationsschritte betrieben werden. Allerdings sollten einige Anpassungen sinnvollerweise durchgeführt werden.
Folgende Änderungen sollten (je nach Bedarf und Einsatzzweck des Apache HTTP Server) an der Konfigurationsdatei
/etc/httpd/conf/httpd.conf
durchgeführt werden:
Nachfolgend Auszüge aus der Konfigurationsdatei /etc/httpd/conf/httpd.conf
, welche abgeändert wurden (nur relevante Ausschnitte):
... # Tachtler # default: ServerTokens OS ServerTokens Prod ... # Tachtler # default: KeepAlive Off KeepAlive On ... # Tachtler # Only required moduls should be loaded LoadModule auth_basic_module modules/mod_auth_basic.so # LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so # LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so # LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so LoadModule logio_module modules/mod_logio.so # LoadModule env_module modules/mod_env.so # LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so # LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so # LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule info_module modules/mod_info.so # LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so # LoadModule actions_module modules/mod_actions.so # LoadModule speling_module modules/mod_speling.so # LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so # LoadModule substitute_module modules/mod_substitute.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so # LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so # LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_connect_module modules/mod_proxy_connect.so # LoadModule cache_module modules/mod_cache.so # LoadModule suexec_module modules/mod_suexec.so # LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule cgi_module modules/mod_cgi.so # LoadModule version_module modules/mod_version.so ... # Tachtler # default: #ExtendedStatus On ExtendedStatus On ... # Tachtler # default: ServerAdmin root@localhost ServerAdmin webmaster@tachtler.net ... # Tachtler # default: #ServerName www.example.com:80 ServerName tachtler.net:80 ... # Tachtler # default: DirectoryIndex index.html index.html.var DirectoryIndex index.html ... # Tachtler # default: ServerSignature On ServerSignature Off ... # Tachtler # default: LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW LanguagePriority de en ca cs da el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW ... <IfModule mod_negotiation.c> <IfModule mod_include.c> <Directory "/var/www/error"> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all # Tachtler # default: LanguagePriority en es de fr LanguagePriority de en es fr ForceLanguagePriority Prefer Fallback </Directory> # Tachtler - enable all ErrorDocument entrys - # default: disabled ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var ErrorDocument 410 /error/HTTP_GONE.html.var ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var </IfModule> </IfModule> ... # Tachtler - default is DISABLED - <Location /server-status> SetHandler server-status Order deny,allow # Deny from all # Allow from .example.com </Location> ... # Tachtler - default is DISABLED - <Location /server-info> SetHandler server-info Order deny,allow # Deny from all # Allow from .example.com </Location> ... # Tachtler # LDAPs extended configuration, using a self-signed-certificate <IfModule mod_authnz_ldap.c> LDAPTrustedGlobalCert CA_BASE64 /etc/pki/tls/certs/ca-bundle.trust.crt LDAPVerifyServerCert Off </IfModule> ... # Tachtler # X-Frame-Options, Framebuster - Break out of frame and iframe Header always append X-Frame-Options SAMEORIGIN ...
HINWEIS - Falls ein self-signed-certificate bei der Implementierung des LDAP-Servers verwendet wurde sind nachfolgende Hinweise zu beachten
Es muss das self-signed-certificate dessen Erstellung, z.B. wie hier Beschrieben
durchgeführt wurde, an einem dem Apache HTTP Server lesbaren Ort im Dateisystem hinterlegt werden, hier z.B.
/etc/pki/openldap/certs/CAcert.pem
Nachfolgend muss der Apache HTTP Server diesem Zertifikat vertrauen und die Prüfung gegen ein sogenanntes root-Zertifikat muss deaktiviert werden, da es sich ja um ein self-signed-certificate handelt:
... # Tachtler # LDAPs extended configuration <IfModule mod_authnz_ldap.c> LDAPTrustedGlobalCert CA_BASE64 /etc/pki/openldap/certs/CAcert.pem LDAPVerifyServerCert Off </IfModule> ...
Minimaler Server
Nach dem Start des Apache HTTP Server wird über die Konfigurationsdatei
/etc/httpd/conf.d/welcome.conf
geregelt, dass wenn keine Standard-Index-Datei im DocumentRoot
-Verzeichnis, standardmäßig ist dies /var/www/html
, sich befindet, ein „Fehler - 403 Forbidden erzeugt wird, doch anstelle der Standard-Fehlerseite wird hier die statische HTML-Seite
/var/www/error/noindex.html
angezeigt.
Um nun die Auslieferung einer HTML-Seite aus dem DocumentRoot
, standardmäßig ist dies /var/www/html
, und dadurch den Rückgabe-Wert 200 - OK zu erzeugen, kann nun z.B. diese „Willkommen-Seite“ mit nachfolgendem Befehl in das Standard DocumentRoot
-Verzeichnis kopiert werden und gleichzeitig in eine gültige Index-Datei umbenannt werden:
# cp -a /var/www/error/noindex.html /var/www/html/index.html
Anschließend kann, wie empfohlen der komplette Inhalt der Konfigurationsdatei /etc/httpd/conf.d/welcome.conf
auskommentiert werden, - oder - es kann eine einfach Umbenennung der Konfigurationsdatei mit nachfolgendem Befehl erfolgen, damit diese nicht mehr beim nächsten Start des Apache HTTP Server mit angezogen wird:
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.orig
Anschließend kann der Apache HTTP Server mit nachfolgendem Befehl neu gestartet werden:
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
Ein Aufruf des Apache HTTP Server mit dem Standard-Host, hier z.B. http://tachtler.net, würde folgende Anzeige im Apache HTTP Server-Access-Log erzeugen und kann mit nachfolgendem Befehl zur Anzeige gebracht werden:
# tail -f /var/log/httpd/access_log 192.168.0.50 - - [28/Oct/2011:13:04:55 +0200] "GET / HTTP/1.1" 403 5039 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20110412 CentOS/3.6.9-2.el6.centos Firefox/3.6.9" 192.168.0.50 - - [28/Oct/2011:13:04:59 +0200] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20110412 CentOS/3.6.9-2.el6.centos Firefox/3.6.9" 192.168.0.50 - - [28/Oct/2011:14:04:13 +0200] "GET / HTTP/1.1" 200 5039 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20110412 CentOS/3.6.9-2.el6.centos Firefox/3.6.9" 192.168.0.50 - - [28/Oct/2011:14:04:18 +0200] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20110412 CentOS/3.6.9-2.el6.centos Firefox/3.6.9"
HIWNEIS - Nach dem Rückgabe-Code „GET / HTTP/1.1“ 403 5039
, erscheint nun der Rückgabe-Code „GET / HTTP/1.1“ 200 5039
!!!