{"id":294,"date":"2022-12-20T13:41:18","date_gmt":"2022-12-20T12:41:18","guid":{"rendered":"http:\/\/www.tippex.net\/?p=294"},"modified":"2022-12-20T13:43:22","modified_gmt":"2022-12-20T12:43:22","slug":"apache2-absichern-mit-mod_security","status":"publish","type":"post","link":"https:\/\/www.tippex.net\/?p=294","title":{"rendered":"Apache2 absichern mit mod_security"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In der heutigen Zeit tummeln sich immer mehr Gefahren im Netz. Die Zahl der Hackerangriffe steigt stetig, daher ist es um so wichtiger, geeignete Ma\u00dfnahmen zu ergreifen, um dem entgegenzuwirken. Wer einen eigenen Webserver betreibt kommt nicht umher, sich um eine vern\u00fcnftige Absicherung zu k\u00fcmmern. Diese Absicherung f\u00e4ngt schon auf Betriebssystemebene an, auf der durch sinnvolle Iptables Filter nur gewollte Dienste erreichbar sind, oder via Geoblocking mittels z.B. <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.rackspace.com\/support\/how-to\/block-ip-range-from-countries-with-geoip-and-iptables\/\" data-type=\"URL\" data-id=\"https:\/\/docs.rackspace.com\/support\/how-to\/block-ip-range-from-countries-with-geoip-and-iptables\/\" target=\"_blank\">xtables Addon<\/a> b\u00f6se Buben aus gewissen Teil der Welt ausgesperrt werden. F\u00fcr monet\u00e4r betriebene Webpr\u00e4senzen kann ein zus\u00e4tzlicher Schutz mithilfe einer vorgeschalteten Firewall-Appliance und IDS\/IPS n\u00f6tig sein. Ein absolut wichtiger Faktor ist ebenfalls, immer schnell die aktuellen Updates einzuspielen. Wer privat unterwegs ist, der kann, wenn er Ubuntu im Einsatz hat, auf die Ubuntu Pro Variante zur\u00fcckgreifen. Diese ist f\u00fcr bis zu 5 PCs kostenlos und erh\u00f6ht die Sicherheit auf Betriebssystemebene nochmals. Wie da zu bewerkstelligen ist habe ich in einem vorherigen <a rel=\"noreferrer noopener\" href=\"http:\/\/www.tippex.net\/?p=217\" data-type=\"URL\" data-id=\"http:\/\/www.tippex.net\/?p=217\" target=\"_blank\">Artikel<\/a> bereits erl\u00e4utert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diese Artikel zeige ich euch, wie ihr auf einer vorhanden Apache2 Installation mod_security installiert und aktiviert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mod_security ist eine sog. Web Application Firewall, welche sich zwischen dem anfragenden Client und dem Webserver schaltet und den Traffic auf bekannte Muster und Kommandos scannt. Wird etwas verd\u00e4chtiges erkannt, dann wird die Anfrage komplett geblockt und der Client erh\u00e4lt lediglich eine 403 Meldung &#8222;Permission denied&#8220;.  Unter Ubuntu 22.04 ist mod_security bereits als Paket im Repository vorhanden. Erkennt mod_security <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.tippex.net\/wp-content\/uploads\/2022\/12\/image.png\" alt=\"\" class=\"wp-image-297\" width=\"999\" height=\"168\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Auf meinem Testsystem ist es bereits installiert. Falls es bei euch noch fehlt, dann k\u00f6nnt ihr mit folgendem  Befehl die Installation durchf\u00fchren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install libapache2-mod-security2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Apache2 listet alle Module unter \/etc\/apache2\/mods-available\/ auf<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1685\" height=\"403\" src=\"http:\/\/www.tippex.net\/wp-content\/uploads\/2022\/12\/image-1.png\" alt=\"\" class=\"wp-image-300\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das Modul muss noch aktiviert werden. Dies erreichen wir mit nachfolgendem Befehl<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod security2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In dieser Grundkonfiguration ist aber noch kein Schutz vorhanden. Als erstes muss noch die Konfigurationsdatei erstellt werden. Dazu kopiert man &#8222;\/etc\/modsecurity\/modsecurity.conf-recommended&#8220; nach &#8222;\/etc\/modsecurity\/modsecurity.conf&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der Grundeinstellung werden Anfragen auch nicht geblockt, sondern nur geloggt. Dies reicht f\u00fcr einen wirksamen Schutz nat\u00fcrlich nicht aus. Um dies zu \u00e4ndern gehen wir in der &#8222;\/etc\/modsecurity\/modsecurity.conf&#8220; zum Abschnitt &#8222;SecRuleEngine&#8220; und stellen den Wert auf &#8222;On&#8220;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.tippex.net\/wp-content\/uploads\/2022\/12\/image-2.png\" alt=\"\" class=\"wp-image-305\" width=\"998\" height=\"140\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Danach muss der Apache noch neu gestartet werden<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um zu sehen, welche Anfragen geblockt werden, k\u00f6nnt ihr folgenden Befehl nutzen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep ModSecurity \/var\/log\/apache2\/error.log | grep \"\\&#91;id\" | sed -E -e 's#^.*\\&#91;id \"(&#91;0-9]*).*hostname \"(&#91;a-z0-9\\-\\_\\.]*)\"].*uri \"(.*?)\".*\"#\\1 \\2 \\3#' | cut -d\\\" -f1 | sort -n | uniq -c | sort -n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auf meinem Produktivsystem sieht das Ergebnis z.B so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"436\" height=\"380\" src=\"http:\/\/www.tippex.net\/wp-content\/uploads\/2022\/12\/image-3.png\" alt=\"\" class=\"wp-image-307\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In der ersten Spalte steht die H\u00e4ufigkeit, also wie oft ein spezifisches Event getriggert wurde. Die 2. Spalte zeigt euch die eindeutige ID und dahinter steht, was den Eintrag verursacht hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun kommt es immer wieder vor, das mod_security Falscherkennungen durchf\u00fchrt, sog. false\/positives,also Blockierung, die legitimen Traffic aussperren. Die kommt leider immer wieder vor, daher ist es wichtig, dies zu erkennen und einen Weg zu finden, damit umzugehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sofern wir geblockten Inhalt einer spezifischen ID zuordnen k\u00f6nnen, ist es ohne weiteres m\u00f6glich, diese ID f\u00fcr zuk\u00fcnftige Scans zu sperren. Auf meinem System kam es leider in der Grundkonfiguration vor, dass gewisse Dinge bzw. Anfragen \u00fcber das Backend blockiert wurden und ich somit nicht in der Lage war, gewisse administrative Aufgaben durchzuf\u00fchren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der Datei &#8222;\/etc\/modsecurity\/crs\/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf&#8220; lassen sich Ausnahmen definieren. Folgender Eintrag f\u00fchrt z.B. dazu, dass innerhalb einer ganzen Webpr\u00e4senz mehrere IDs ausgeschlossen werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;LocationMatch '^\/'&gt;\nSecRuleRemoveById 941100,941160,942350,949110,980130\n&lt;\/LocationMatch&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Es l\u00e4sst sich auch eine einzige IP Adresse whitelisten.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SecRule REMOTE_ADDR \"@ipMatch 10.0.0.8\" \\\n     \"id:1000,\\\n     phase:1,\\\n     pass,\\\n     nolog,\\\n     ctl:ruleEngine=Off\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Im obigen Beispiel werden Anfragen von 10.0.0.8 gar nicht geblockt. Dies kann in bestimmten Szenarien sinnvoll sein. Man sollte aber vorsichtig mit solchen weitreichende Ausnahmen sein und besser dediziert filtern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es existieren nat\u00fcrlich noch zahlreiche weitere M\u00f6glichkeiten, mod_security granularer anzupassen bzw. zu konfigurieren. Auf <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/SpiderLabs\/ModSecurity\/wiki\" data-type=\"URL\" data-id=\"https:\/\/github.com\/SpiderLabs\/ModSecurity\/wiki\" target=\"_blank\">Github <\/a>findet man weitere Infos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abschlie\u00dfend m\u00f6chte ich euch noch daf\u00fcr sensibilisieren, bei ungew\u00f6hnlichen Fehlern auf der Webseite, die ihr entweder selbst merkt, oder die durch Besucher gemeldet werden, auch an mod_security als Verursacher zu denken. H\u00e4ufig vergisst man im Eifer des Gefechts, dass bei WordPress oder \u00e4hnlichem nicht nur das z.B. Plugin ein Problem verursacht, sondern mod_security der &#8222;\u00dcbelt\u00e4ter&#8220; sein k\u00f6nnte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun viel Erfolg bei der Umsetzung!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der heutigen Zeit tummeln sich immer mehr Gefahren im Netz. Die Zahl der Hackerangriffe steigt stetig, daher ist es um so wichtiger, geeignete Ma\u00dfnahmen zu ergreifen, um dem entgegenzuwirken. Wer einen eigenen Webserver betreibt kommt nicht umher, sich um eine vern\u00fcnftige Absicherung zu k\u00fcmmern. Diese Absicherung f\u00e4ngt schon auf Betriebssystemebene an, auf der durch [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":49,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,17],"tags":[32,30,31],"class_list":["post-294","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-security","tag-absichern","tag-apache2","tag-modsecurity","wpbf-post"],"_links":{"self":[{"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/posts\/294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tippex.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=294"}],"version-history":[{"count":15,"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/posts\/294\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/posts\/294\/revisions\/314"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tippex.net\/index.php?rest_route=\/wp\/v2\/media\/49"}],"wp:attachment":[{"href":"https:\/\/www.tippex.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tippex.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tippex.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}