Home

Main Menu


Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in /homepages/16/d15835303/htdocs/huegele-de/cms/libraries/joomla/cache/handler/callback.php on line 100

Anmelden



ESX Server 3.x Firewall Administration PDF Drucken E-Mail
Beitragsseiten
ESX Server 3.x Firewall Administration
Kommandozeilen-Administration
Firewall: Grundlegendes
Firewall: Eigene Dienste
Alle Seiten

Eine der Änderungen ab ESX Server 3.x, die jedem Administrator zwangsläufig sehr schnell aufgefallen sein dürfte, war die auf der ESX Service Console  standardmäßig aktivierte IPTables Firewall. Grund: viele Netzwerkdienste (u.a. der SMB- und NTP-Client) sind hier standardmässig gesperrt und müssen manuell freigeschaltet werden. Im folgenden Artikel möchte ich einen kurzen Überblick geben, wie man am besten mit der Firewall umgeht und wie man neue, noch nicht vorkonfigurierte Services (z.B. für Service Agenten) hinzufügt und freischaltet.

Da jeder spezifischere Eingriff ohnehin die Verwendung der CLI erfordert, werde ich die Konfiguration über VirtualCenter außen vor lassen!


Kommandozeilen-Administration

Folgendes sind die wichtigsten Kommandos um die Firewall per CLI zu steuern:

  

Firewall-Service starten/stoppen bzw. Status anzeigen:

/etc/init.d/firewall <start | stop | restart | status>

 
 

Über das Commandline-Skript „esxcfg-firewall“ kann die Konfiguration angepasst werden.

 

Liste der verfügbaren Dienste („Known Services“) anzeigen:

esxcfg-firewall –s

 

Service aktivieren (greift sofort - kein Firewall-Neustart erforderlich!):

esxcfg-firewall –e <servicename>

 

Service deaktivieren (greift sofort - kein Firewall-Neustart erforderlich!):

esxcfg-firewall –d <servicename>

 
 
Beispiel: Freischalten des NTP-Ports für Zeitsynchronisation:

esxcfg-firewall -e ntpClient

 

Hinweis: Wenn die Firewall-Konfiguration per Kommandozeile geändert wird, werden diese Änderungen zunächst nicht automatisch in der Virtual Center GUI angezeigt! Um die geänderten Einstellungen auch in der VC-GUI korrekt anzeigen zu lassen, muss nach jeder Änderung der „Management Services“-Prozess „vmware-hostd“ auf dem ESX-Server neu gestartet werden: service mgmt-vmware restart


Firewall anpassen: Grundlegendes

Grundlegender Aufbau:

  • Jede Firewall-Policy besteht aus einer oder mehreren aktivierten "services".
  • Jeder "service" besteht seinerseits aus einer (odere mehreren!) Regeln ("rules") und hat einer eindeutigen Kennung ("<id>" Tag).
  • Eine Regel besteht aus:
    • Richtung des Traffics (inbound/outbound)
    • verwendetes Protokoll (TCP/UDP)
    • Port Typ (Source/Destination)
    • Port Nummer bzw. Port Range
    • (optional) TCP-Flags
  • Alle nicht explizit freigegebenen Services werden geblockt.

 

Die Konfigurationsdateien für die ESX-Firewall, anhand derer die verfügbaren Services/Rules aufgebaut werden, befinden sich unter "/etc/vmware/firewall/":

  • Alle hier abgelegten XML-Files werden geparst.
  • Die Datei "services.xml" mit den ESX-Standard-Services sowie alle bestehenden XML-Files sollten am besten nicht verändert werden.

 

Seit ESX 3.5 gibt es außerdem folgende Änderungen:

  • Es existieren nun standardmässig auch weitere XML-Files für die Hersteller-spezifischen Backup-Agents. Vorher waren diese ebenfalls direkt in der "services.xml" enthalten.
  • Die Services "veritasBackupExec" und "veritasNetBackup" wurden in "symantecBackupExec" und "symantecNetBackup" umbenannt.
  • Neue, vorkonfigurierte Dienste: "caARCserve", "LDAP", "LDAPS", "legatoNetWorker", "updateManager", "VCB"

 

Die Syntax und Struktur der XML-Dateien ist relativ selbsterklärend, wenn man die mitgelieferten XML-Files betrachtet (siehe Beispiele).

 

Folgende Dinge gibt es beim Anlegen einer eigenen XML-Datei allerdings zu beachten:

  • Der Wert der "<id>"-Tags (<id>Service-Name</id>) muss Server-weit eindeutig sein! Mit dieser Kennung werden die Services beim Ausführen der "esxcfg-firewall"-Kommandos angezeigt und referenziert!
  • Falls innerhalb einer XML-Datei mehrere Services definiert werden, müssen diese mit unterschiedlichen ID's versehen werden (<service id='xxxx'>). Wird in einer XML-Datei hingegen lediglich ein Service definiert, ist der id='...' Zusatz im "service"-Tag nicht erforderlich, dann genügt auch ein einfaches "<service>".
  • Analog gilt: Wenn innerhalb eines Services mehrere Rules zusammengefasst sind, müssen die Regeln durch eindeutige "rule id's" im "rule" Tag gekennzeichnet werden (<rule id='yyyy'>). Wenn pro Service jedoch nur eine Regel enthalten ist, ist auch hier der id='...' Zusatz im "rule"-Tag nicht erforderlich, dann genügt auch ein einfaches "<rule>".

Beispiel: Mehrere Services pro XML File:

<ConfigRoot>
  <service id='0000'>
    <id>sshServer</id>
    <rule>
      <direction>inbound</direction>
      <protocol>tcp</protocol>
      <port type='dst'>22</port>
      <flags>-m state --state NEW</flags>
    </rule>
  </service>

  <service id='0001'>
    <id>sshClient</id>
    <rule>
      <direction>outbound</direction>
      <protocol>tcp</protocol>
      <port type='dst'>22</port>
      <flags>-m state --state NEW</flags>
    </rule>
  </service>
</ConfigRoot>


  

Beispiel: Mehrere Rules pro Service mit Port Ranges ("legatoNetworker.xml):

<!-- Firewall configuration information for EMC/Legato Networker -->
<ConfigRoot>
  <service>
    <id>legatoNetWorker</id>
    <rule id='0001'>
      <direction>inbound</direction>
      <protocol>tcp</protocol>
      <port type='dst'>
        <begin>7937</begin>
        <end>9936</end>
      </port>
      <flags>-m state \-\-state NEW</flags>
    </rule>
    <rule id='0002'>
      <direction>outbound</direction>
      <protocol>tcp</protocol>
      <port type='dst'>
        <begin>7937</begin>
        <end>9936</end>

      </port>
      <flags>-m state \-\-state NEW</flags>
    </rule>
  </service>
</ConfigRoot>


 


Firewall anpassen: Eigene Dienste definieren

Es gibt zwei grundlegende Möglichkeiten, wie man der ESX-Firewall eigene Dienste hinzufügen kann.

  1. Man legt ein eigenes, neue XML-File mit der Dienste-Konfiguration an bzw. ändert eine der bestehenden XML-Dateien.
  2. Mit Hilfe des "esxcfg-firewall" Kommandos kann die Konfiguration auch direkt vorgenommen werden:

esxcfg-firewall --openPort <port,Protocol,Direction,name>
esxcfg-firewall --closePort <port,Protocol,Direction>

 

Ich persönlich empfehle aus folgenden Gründen jedoch Variante Nr. 1:

  • Das einmal angelegte XML-File durch einfaches Kopieren auf mehrere ESX-Server verteilt und dort verwendet werden kann.
  • Das Aktivieren/Deaktivieren eines Dienstes kann über die gleichen Wege erfolgen wie für alle Standard-Dienste auch!

 

Empfehlungen:

  • Um neue, noch nicht vorkonfigurierte Services einzupflegen, am besten eine separate Datei "services-custom.xml" anzulegen. Damit ist eine saubere Trennung zwischen Default-Services und selbst hinzugefügten Diensten möglich. Außerdem beugt man dem Fall vor, dass die "services.xml" z.B. durch einen ESX-Patch überschrieben wird.
  • Außerdem könnte es sinnvoll sein, die selbst eingepflegen Dienste mit einem Namens-Suffix zu versehen, z.B. mit einem einfach Underscore: "_<servicename>". Damit können Sie auch beim Ausführen von "esxcfg-firewall" Kommandos "Ihre" Dienste sofort erkennen, ohne die XML-Files betrachten zu müssen.

Achtung: Wenn ein bereits vorhandener Service in der „services-custom.xml“ geändert werden soll, sollte er unbedingt vorher per "esxcfg-firewall –d <service>" aus dem Regelsatz herausgenommen werden! Danach erst die Änderungen an der XML-Datei vornehmen und dann den Service mit "esxcfg-firewall –e <service>" wieder aktivieren! Andernfalls kann es passieren, dass im Regelsatz Leichen zurückbleiben (z.B. wenn Regeln/Ports innerhalb eines Service entfernt werden, die vorher enthalten waren!)

 

Beispiel: "services-custom.xml"

In der nachfolgenden Datei sind beispielsweise die Dienste für ausgehenden Syslog (udp/514) und SMTP (tcp/25) Traffic definiert:

<ConfigRoot>
 <!-- Outgoing SMTP -->
 <service id='0200'>
    <id>_smtp</id>
    <rule>
      <direction>outbound</direction>
      <protocol>tcp</protocol>
      <port type='dst'>25</port>
    </rule>
  </service>   
 
 <!-- Outgoing Syslog -->
 <service id='0201>
    <id>_syslog</id>
    <rule>
      <direction>outbound</direction>
      <protocol>udp</protocol>
      <port type='dst'>514</port>
    </rule>
  </service>  
</ConfigRoot>

 

Wichtig: Durch das Hinzufügen der XML-Datei sind die neuen Dienste zwar definiert, aber noch nicht aktiv! Um die neu angelegten Dienste verwenden zu können, müssen Sie zur aktiven Firewall-Policy hinzugefügt werden. Hierzu einfach wie oben beschrieben das "esxcfg-firewall"-Kommando verwenden: "esxcfg-firewall -e _smtp" bzw. "esxcfg-firewall -e _syslog".

 

Weitere Informationen zur ESX Service Console Firewall finden Sie in den jeweiligen "Server Configuration Guides" in der offiziellen VMware-Dokumentation!

 

 
Huegele.de, Powered by Joomla! and designed by SiteGround web hosting