# Hardened gentoo

## raptoni

Ich habe jetzt schon einiges gelesen darüber, aber bin nur noch verwirrter.

Wenn ich das richtig verstanden habe gibt es für den GCC 4x keine offizielle Version. Wenn ich ein Paket installiere kommt aber immer die Meldung ich sollte das hardened Profil benutzen, wenn ich GCC 4x nicht brauche. Außerdem gibt es das hardened USE FLAG bei ziemlich vielen Programmen. 

Ich möchte später einmal einen Web/Mail Server einrichten also sollte ich hardened verwenden?

Kann man die Version aus diesem Thread in Produktivsystemen benutzen?

https://forums.gentoo.org/viewtopic-t-668885-postdays-0-postorder-asc-start-0.html

Allgemeine Verständnisfrage:

hardened ist ein spezieller Compiler, welcher zusätzliche "Sicherheits/Stablitäts" USE FLAGS hinzufügt?

mfg

----------

## schachti

 *raptoni wrote:*   

> Kann man die Version aus diesem Thread in Produktivsystemen benutzen?
> 
> https://forums.gentoo.org/viewtopic-t-668885-postdays-0-postorder-asc-start-0.html

 

Auf einem Produktivsystem würde ich das normale hardened Profil (inkl. gcc 3.x) nutzen.

 *raptoni wrote:*   

> 
> 
> Allgemeine Verständnisfrage:
> 
> hardened ist ein spezieller Compiler, welcher zusätzliche "Sicherheits/Stablitäts" USE FLAGS hinzufügt?
> ...

 

Das ist nur der entsprechende gcc. Das hardened Projekt besteht aus mehr, unter anderem einem speziell gepatchten Kernel, der Unterstützung für (unter anderem) grsecurity bietet. Siehe http://www.gentoo.org/proj/en/hardened/index.xml.

----------

## raptoni

Ist GCC 3x langsamer oder lassen sich damit gewisse Sachen nicht kompilieren? Ist es "Pflicht" auf einem Server Hardened zu verwenden? Für was gibt es das USE FLAG hardened und selinux bei manchen Programmen obwohl ich nicht hardened benutze? Was is wenn ich jetzt doch das experimentelle benutze. Treten die Fehler beim Kompilieren auf oder kann es sein das sie beim laufenden Betrieb auftreten?

Fragen über Fragen. 

mfg

----------

## ChrisJumper

Hallo raptoni,

also SE-Linux ist wie ich finde etwas das du nicht brauchst. Es ist noch ein relativ hoher Mehraufwand und als ich das letzte mal versuchte ein SE-Linux Gentoo aufzusetzen bin ich gescheitert. Woran weiß ich nicht genau.. es ging um das verteilen der Rechte nach diesen Label-Policy's und ich hatte nur den Eindruck das die Howtos zu dem Thema recht veraltet sind.

Wenn du doch Wert auf eine Zugriffskontrolle für Programme/Prozesse legst lohnt sich vielleicht das werten und Nachforschen zum Stichwort SMACK, ein recht neues Mandatory-Access-Controll-System und im Kernel seit 2.6.25. Allerdings weiß ich noch nicht wie und ob Gentoo das schon unterstützt.

Setze doch einfach schon mal den Rechner auf und schau wie du voran kommst. Und welche Probleme auftreten. Werfe auch einen Blick in das Gentoo Sicherheisthandbuch.

Hast du eigentlich einen eigenen Rechner mit fester Netzadresse oder einen Root-Server bei einem Hoster? 

 *Quote:*   

> Treten die Fehler beim Kompilieren auf oder kann es sein das sie beim laufenden Betrieb auftreten?

  Diese Frage hättest du dir sparen können, da man immer nur mit "Ja, möglicherweise." antworten kann. Es gibt kein System bei dem man das Ausschließen kann.. das es z.B. Überhitzt und zu Speicherzugriffsfehlern kommt. Aber bezogen auf gcc 3.x zu 4.x würde ich einfach behaupten das es keine gravierenden Unterschiede gibt. Compilerfehler treten immer nur beim Kompilieren auf, mit Ausnahme bei nicht vollendeten Versionswechseln (aus welchem Grund auch immer).. also immer da wenn man das ganze System neu bauen muss.

Auf einem Server würde ich (es sei denn es geht um sehr kritische Sicherheitslücken), keine unstable Programme verwenden. Es kommt aber immer auf den Zweck des Servers oder der Daten an und welche Verantwortung man trägt. Danach entscheidet man ob sich der Aufwand lohnt und wie viel Sicherheit man braucht. Generell reicht es ja ein Backup zu haben.. und Verantwortungsvoll zu überprüfen ob der Server nicht schon Kompromittiert wurde. Dann kann man bei Befall immer schnell den Stecker ziehen und ein das Backup starten.

Grüße

Chris

P.s. Wenn die Entscheidung drängt ist es vielleicht besser du verwendest ein anderes Linux (z.B. Debian) als Gentoo. Da du noch recht unerfahren in Security-Fragen wirkst und ein leicht Vorkonfiguriertes System von der Stange ist vielleicht die bessere ("sicherere") Wahl.

----------

## raptoni

Ja ich bin ein absoluter noob was linux betrifft. Es drängt aber nicht, dass es fertig wird. 

Das mit dem Auftreten der Fehler hast du falsch verstanden. Ich meinte wenn ich so einen Compiler benutzte, ob die fehler gleich beim kompileren auftreten oder kann es sein, dass er kompilliert und dann während dem Betrieb zum spinnen anfängt. Überhitzen kann immer passieren das ist mir klar. Hat ja damit nichts zutun =).

Unstable Programme hatte ich nicht vor zu benutzten.

Wenn es keinen Performanceunterschied zwischen GCC 4x und 3x gibt kann ich also einfach den 3er und hardened benutzen?

Was ich suche sind Erfahrungswerte. Ich kann zwar alles mögliche lesen (was ich auch mach) aber wenn ich irgendwie eine Richtung hab ist das doch was anderes. Es soll aufjedenfall was ordentliches werden und nicht irgendein Funprojekt. 

mfg

----------

## kernelOfTruth

 *schachti wrote:*   

>  *raptoni wrote:*   Kann man die Version aus diesem Thread in Produktivsystemen benutzen?
> 
> https://forums.gentoo.org/viewtopic-t-668885-postdays-0-postorder-asc-start-0.html 
> 
> Auf einem Produktivsystem würde ich das normale hardened Profil (inkl. gcc 3.x) nutzen.
> ...

 

sicher, ich nutze das ganze momentan auf 2 systemen: hardened gcc 4.3.1,

durch das testen haben wir einige bugs gefunden, die aber leicht umgangen werden können (z.B. -D_FORTIFY_SOURCE=2 kurz wegzulassen)

alles in allem läuft es sicher + performant

wenn du dich (wie bereits geschrieben) nicht so gut mit linux generell auskennst, würde ich es für den anfang langsam angehn & mit default oder hardend + gcc-3 mal anfangne

----------

## raptoni

Ich werde das neue hardened Profil vielleicht mal lokal testen wo ich leichter neuinstallieren kann. Bezgl. Fehler beim Kompilieren hab ich noch keine richitge Antwort. Treten Fehler wenn nur beim kompilieren auf oder können sie auch während dem Betrieb passieren, wenn ich zb Hardened 4.3.1 benutzte. 

Für die Zwischenzeit: Reicht es das Gentoo Sicherheitshandbuch zubeachten um einen sicheren Webserver hinzubekommen? Oder ist das wie einen Server mit Windows ME zubetreiben. Ich mein es wird keine User oder dergleichen auf dem Server geben. Das fällt somit schon mal weg. Für Dritte wird bis auf http(PHP) nichts zur Verfügung gestellt.

Ich hab noch nicht ganz verstanden, was genau der Nachteil am GCC3 ist. Die ganzen CFLAGS zb sind nicht wirklich unterschiedlich. Kann ich neue Programme wie Apache 2.2.9 und MySQL damit kompilieren. 

mfg

----------

## ChrisJumper

 *Quote:*   

> Kann ich neue Programme wie Apache 2.2.9 und MySQL damit kompilieren.

 

Ja das geht.

 *Quote:*   

> Für Dritte wird bis auf http(PHP) nichts zur Verfügung gestellt.

 

*hust*

 *Quote:*   

> Ich hab noch nicht ganz verstanden, was genau der Nachteil am GCC3 ist.

 

Es gibt keinen. Evtl braucht er mehr Speicherplatz beim kompilieren oder braucht etwas länger.. aber eigentlich sollte er ebenfalls ein zufriedenstellendes Ergebnis liefern. Ich denke als User bemerk man beim ausführen auch keinen Unterschied zwischen einem 3.x und einem 4.x kompilierten Programm.

 *Quote:*   

> Reicht es das Gentoo Sicherheitshandbuch zubeachten um einen sicheren Webserver hinzubekommen? Oder ist das wie einen Server mit Windows ME zubetreiben.

 

Wie gesagt. Es kommt immer darauf an wie sicher dir sicher genug ist. Persönlich denke ich das man auch ein gut konfiguriertes Windows entsprechend Sicher einrichten kann (Aber da ist der Aufwand größer.). Ein falsch konfiguriertes, oder schlecht gepatchtes Gentoo ist da auch nicht unbedingt besser. Es gibt für beides immer Methoden.. (kommt aber auf den Aufwand an, auch den der sich der Angreifer macht.)  Aber mit einem Linux bist du in der Regel schon gegen die ganze Malware,Spyware usw. "geschützt". Man kann aber nie davon ausgehen das ein System, selbst mit dem befolgen des Sicherheitshandbuchs "Sicher" ist. Es ist aber schon besser als ohne ;)

Ein Fehler in deinem PHP-Progamm kann dazu führen das jemand die Daten in deiner Datenbank auslesen, modifizieren oder Inhalte deiner Webseite verändern kann. Ich will dir jetzt keine Angst machen. Man stirbt ja auch nicht jeden Tag wenn man die Straße überquert.

Richte dein Gentoo nach bestem Gewissen ein. Schalte Netzwerkdienste ab die du nicht brauchst. Verwende keine Closed-Source-Treiber und nur die nötigste Software. Halte das System aktuell (stable) und lausche auf die Liste der Patches. Dann hast du einen Computer der Sicher genug ist. Und wenn dein Server, Einbrecher nicht mit sensiblen Daten oder einer Breitbandanbindung mit exorbitanten Ressourcen anlockt (solche die zu Reichtum führen). Ist es recht unwahrscheinlich das da groß was passiert.

----------

## raptoni

Was war das für eine noob Aussage: http(php), dass es mit einem *hust* quittiert wird  :Very Happy: 

Ob der Gefahren von PHP weiß ich Bescheid (SQL Injects etc.) Damit kenn ich mich ganz gut aus und hab schon einiges an Erfahrung.(*Selbstüberschätzung* =)) Bis jetzt hatte ich aber immer nur normalen Webhost wo das dritte nicht funktioniert hat, darum die Entscheidung für den eigenen Server.

Sry wenn ich jetzt da nochmals nachhacke aber wie sieht es jetzt aus mit dem GCC 4.3.1 hardened. Wenn Fehler dann beim Kompilieren oder kann auch sein, dass er ordentlich kompilliert und dann das Programm während dem Betrieb zickt.

mfg

----------

## Bloodsurfer

 *raptoni wrote:*   

> Sry wenn ich jetzt da nochmals nachhacke aber wie sieht es jetzt aus mit dem GCC 4.3.1 hardened. Wenn Fehler dann beim Kompilieren oder kann auch sein, dass er ordentlich kompilliert und dann das Programm während dem Betrieb zickt.

 

Wurde doch schon beantwortet: Möglicherweise ja.

Genauer kann man es nicht sagen. Möglich ist es, aber mir ist kein konkreter Fall bekannt bzw fällt mir gerade keiner ein. Das hängt so sehr vom jeweiligen Programm und Konfigurationen ab dass man es nicht sicher sagen kann. Ausschließen sollte man es jedoch nicht.

Wenn du dir nicht sicher bist was du tust, solltest du bei der stabilen und empfohlenen Lösung bleiben.

----------

## kernelOfTruth

 *Bloodsurfer wrote:*   

>  *raptoni wrote:*   Sry wenn ich jetzt da nochmals nachhacke aber wie sieht es jetzt aus mit dem GCC 4.3.1 hardened. Wenn Fehler dann beim Kompilieren oder kann auch sein, dass er ordentlich kompilliert und dann das Programm während dem Betrieb zickt. 
> 
> Wurde doch schon beantwortet: Möglicherweise ja.
> 
> Genauer kann man es nicht sagen. Möglich ist es, aber mir ist kein konkreter Fall bekannt bzw fällt mir gerade keiner ein. Das hängt so sehr vom jeweiligen Programm und Konfigurationen ab dass man es nicht sicher sagen kann. Ausschließen sollte man es jedoch nicht.
> ...

 

es gibt schon ein paar:

 *klick* 

 *klick* 

----------

## schachti

 *raptoni wrote:*   

> Für die Zwischenzeit: Reicht es das Gentoo Sicherheitshandbuch zubeachten um einen sicheren Webserver hinzubekommen?

 

Man bekommst kein sicheres System, indem man einmalig ein paar Befehle aus einer Anleitung abtippt. Wenn Du die Empfehlungen des Gentoo Sicherheitshandbuchs umsetzt und regelmäßig Dein System aktualisierst erhöhst Du ohne Frage die Sicherheit des Systems. Um ein wirklich sicheres System zu bekommen, muss man aber mehr tun: Sich regelmäßig mit der Materie beschäftigen, um mögliche Angriffe zu kennen und Strategien gegen diese Angriffe entwickeln zu können.

----------

## kernelOfTruth

 *schachti wrote:*   

>  *raptoni wrote:*   Für die Zwischenzeit: Reicht es das Gentoo Sicherheitshandbuch zubeachten um einen sicheren Webserver hinzubekommen? 
> 
> Man bekommst kein sicheres System, indem man einmalig ein paar Befehle aus einer Anleitung abtippt. Wenn Du die Empfehlungen des Gentoo Sicherheitshandbuchs umsetzt und regelmäßig Dein System aktualisierst erhöhst Du ohne Frage die Sicherheit des Systems. Um ein wirklich sicheres System zu bekommen, muss man aber mehr tun: Sich regelmäßig mit der Materie beschäftigen, um mögliche Angriffe zu kennen und Strategien gegen diese Angriffe entwickeln zu können.

 

++

eine gesunde portion paranoia  & skepsis gehört auch dazu   :Wink: 

----------

## raptoni

Jetzt wollte ich mir gestern die hardened source kompilieren, aber es gibt ja gar keine aktuelle 2.6.26 source. Über emerge schlägt mir porage 2.6.24 vor obwohl es im ordner eine 2.6.25 source gibt. Einen PaX Patch für 2.6.26 gibt es auch nicht. Ich kenn das Change Log von x.26 nicht aber tauscht man da nicht Buffer Overflow Schutz etc. gegen andere Sicherheitslücken wenn man einen alten Kernel benutzt. Auf der gentoexperimental.com Seite gibt es ja nur die Stages. Gibt es die 2.6.26 hardened sources. 

mfg

----------

## schachti

 *raptoni wrote:*   

> Über emerge schlägt mir porage 2.6.24 vor obwohl es im ordner eine 2.6.25 source gibt.

 

Das liegt daran, dass die 2.6.25'er Versionen der hardened-sources noch als testing markiert sind (Du scheinst x86 zu verwenden). Du musst also entweder warten, bis sie als stabil markiert sind, oder die Zeile

```

sys-kernel/hardened-sources ~x86

```

in /etc/portage/package.keywords eintragen, um die noch nicht stabilen Versionen nutzen zu können.

----------

## raptoni

Ja alles klar. Hab ich mir eh gedacht. Aber ist es nicht eine Sicherheitslücke einen alten Kernel zu benutzen? Zumal ja schon die Fehler bekannt sind wenn es eine neue Version gibt. 

Wie sieht es mit dem GCC aus? Gibt es da auch eine spezielle hardened Version? Der 4.3.1 von Zorry ist ja speziell gepacht aber auf der Hardened Project Seite ist keine Rede von einem Speziellen Compiler. So gut wie das Handbuch ist, für das Hardened Gentoo braucht man einen Dr. in Informatik  :Very Happy: 

mfg

----------

## schachti

 *raptoni wrote:*   

> Aber ist es nicht eine Sicherheitslücke einen alten Kernel zu benutzen? Zumal ja schon die Fehler bekannt sind wenn es eine neue Version gibt. 

 

In der Regel gibt es für Sicherheitslücken Patches, die auch in gentoo schnell eingepflegt werden. Man sollte also auf der sicheren Seite sein, wenn man immer die aktuelle Version aus portage benutzt (etnweder die aktuelle stabile Version oder die aktuelle Testversion).

----------

## raptoni

Also ich hab jetzt die hardened sources. Muss ich jetzt noch einen anderen Compiler installieren? Momentan hab ich den 4.1.2. Im Hardened Handbuch steht leider nichts drinnen. Die gehen wahrscheinlich davon aus, dass man die hardened stage benutzt.

Was muss ich bei der Option Enforce non-executable pages beachten. Da steht, dass man unter Umständen den Kernel dann nicht mehr booten kann.

----------

## raptoni

Wie kann ich jetzt einen hardened gcc 3 installieren. reicht es wenn ich einfach in portage eine 3er Version installiere, oder ist das eine spezielle?

Was passiert dann mit der installierten 4.1.2? Ich habe wie gesagt eine ganz normales 2008.0 pre Installed System.

----------

## kernelOfTruth

 *raptoni wrote:*   

> Wie kann ich jetzt einen hardened gcc 3 installieren. reicht es wenn ich einfach in portage eine 3er Version installiere, oder ist das eine spezielle?
> 
> Was passiert dann mit der installierten 4.1.2? Ich habe wie gesagt eine ganz normales 2008.0 pre Installed System.

 

schaumal:

https://forums.gentoo.org/viewtopic-p-5179893.html#5179893

https://forums.gentoo.org/viewtopic-p-5179560.html#5179560

----------

## raptoni

Da gehts ja um den neuen 4.3.2? Ich will ja wissen was ich machen muss wenn ich auf GCC3 hardened downgraden will.

----------

## kernelOfTruth

 *raptoni wrote:*   

> Da gehts ja um den neuen 4.3.2? Ich will ja wissen was ich machen muss wenn ich auf GCC3 hardened downgraden will.

 

hm   :Confused: 

sorry - ich war wohl gestern nicht mehr ganz wach   :Laughing: 

also Folgendes:

1.) du musst zum hardened-profil wechseln

2.) einen hardened gcc-4* haben und dann mit diesem gcc-3* hardened emergen (von vanilla -> hardened ging es mit den gcc-3*ern für mich bis jetzt noch nicht)

vielleicht kann ja jemand noch seinen senf beisteuern ...

warum willst du überhaupt einen gcc-3* hardened ? damit kann doch gar nicht mehr alles kompilieren (z.B. den kernel in einigen Fällen, weiters kannst du damit auch kein STACK-PROTECTOR zeugs im kernel aktivieren --> unsicherer), wenn du nur auf hardened wechseln willst folge den geposteten anweisungen / links und nimm den gcc-4* damit musst du nicht mal das profil wechseln & kannst mit dem default-Profil & hardened use-flags alles das machen, was man mit dem hardened-Profil auch macht 

du musst also nur hardened in den globalen USE-flags setzen (in /etc/make.conf) & dies für gcc, glibc und noch ein paar freischalten

wenn ich mich irre bitte ich um eine verbesserung   :Rolling Eyes: 

so - genug gelabert, ich muss wieder an die arbeit   :Arrow: 

----------

## raptoni

Ok jetzt kenn ich mich überhaupt nicht mehr aus. Es hat doch 5 Post vorher geheißen ich soll den offizellen GCC 3 nehmen. Außerdem hat es geheißen mann kann damit eh alles kompilieren.

Wenn du sagst ich brauch zuerst den hardened GCC4 um den GCC3 zukompilieren, wie bekomm ich dann den 4er.

Ich habe jetzt die hardened source runtergeladen. Soll ich die mit dem normalen GCC4.1.2 und hardened USE FLAG kompilieren?

Was ist dann mit den ganzen Patches.

In gentoo-wiki gibts wirklich alles nur nichts zu hardened.

mfg

----------

## vitae

 *raptoni wrote:*   

> Ja ich bin ein absoluter noob was linux betrifft. Es drängt aber nicht, dass es fertig wird. 

 

ich will ja wirklich kein spielverderber sein und ich weiß, dass man durch ausprobieren am besten lernen kann, aber ich würde an deiner stelle vielleicht mal etwas kleiner anfangen.

vielleicht suchst dir eine andere distribution, wie z.b. Debian, zum üben, um zu sehen wie ein derartiger server mit deinen wünschen funktioniert.

danach würde ich an deiner stelle ein normales hardened system mit gcc 3 aufsetzen und wenn das dann klappt, kannst du ja noch die serverapplikationen installieren.

nimms mir nicht übel, aber ich weiß aus erfahrung, dass man gerade am anfang erstmal einen überblick braucht und den kriegst du eher durch meinen vorschlag  :Smile: 

vielleicht reicht dir ein debian auch aus und sparst dir so die mühe  :Wink: 

----------

## raptoni

Also ich habe jetzt den GCC 3.4x hardened installiert. Wusst nicht, dass ich einfach das profile ändern muss und dann noch mal emerge gcc.

Das hat soweit alles funktioniert. Komischerweise musste ich den gcc3.4 3mal emergen, dass er das hardened USE FLAG  auch angezeigt hat.(eix)

Jetzt habe ich 6 Profile und zwei gcc. Der GCC 4 wird jetzt aber rot und mit einem [M] suffix in eix angezeigt.

Soweit hat aber alles funktioniert. Ich habe auch kleine Pakete wie git und layman emergen können.

Als nächstes habe ich versucht den GCC 4 hardened zuinstallieren. Das Overlay habe ich heruntergeladen, den Ordner in der make.conf eingetragen und nochmal emerge gcc gemacht.

Der Ordner wurde gefunden, dann kam zuerst eine Warnung, dass 4 .eclass Dateien überschrieben werden.

Aber vorgeschlagen wurde wieder nur der 3.4. hardened. Ich habe auch sys-devel/gcc unter package.unmask eingetragen.

Aufjedenfall dürfte jetzt irgendwas kaputt sein weil als ich man emerge aufrufen wollte, sagte er die libstdc++.so.6 konnte nicht gefunden werden.

Bin jetzt gerade am reemergen von gcc 3.4

Mein Frage jetzt: Was habe ich  jetzt. Einen funktionierenden 3.4 hardened. KernelofTruth hat ja gesagt mit dem vanilla gcc4 kann ich kein hardened GCC3 emergen. Ich hatte aber keine Fehler und nachher hat der gcc 3.4 auch funktioniert.

Wenn ja: Was hab ich falsch gemacht, das ich den gcc4 hardened nicht installieren kann?

Was muss ich beim 3er beachten wenn ich damit die hardened sources kompilieren will?

Was muss ich bei der Option Enforce non-executable pages beachten. Da steht, dass man unter Umständen den Kernel dann nicht mehr booten kann?

mfg

PS: jetzt hab ich, nachdem ich gcc3 neu emerged habe und der fehler bei man immer noch da war, revdep-rebuild --library libstdc++.so.6 ausgeführt und prompt geht emerge mit 9 Packeten los. unteranderm eix, welches ich schon installiert habe.

----------

