Szolgáltatások 3.
Szolgáltatások 3.
  Webszolgáltatás (Apache2)
    Fogalmak
      HTTP
        HyperText Transfer Protocol ("Hipertext Átviteli Protokoll")
        Egyszerű, szöveg alapú kérdés-válasz protokoll (TCP alapú)
        80-as TCP port
        Eredetileg HTML dokumentumok átvitelére készült
        Minden üzenet két részből áll
          Fejléc, metaadatok (header)
          Törzs, adatok (body)
        Kérések (metódusok)
          GET - megadott nevű objektum lekérése (header+body)
          HEAD - metaadatok (header) lekérése a törzs (body) nélkül
          POST - megadott objektum számára adatok (body) eljuttatása
          PUT - objektum tartalmának felülírása
          DELETE - objektum törlése
          TRACE - kérés visszakérése (echo szolgáltatás)
          OPTIONS - szerver szolgáltatások lekérdezése az objektumra
          CONNECT - TCP csatorna nyitása (általában SSL proxy célokra)
        Válaszok (státuszok)
          három számjegyű decimális számok, az első számjegy a csoport
          1xx - információs üzenetek
          2xx - siker
            200 - OK
            204 - No content
            206 - Partial content
            stb...
          3xx - átirányítás
            301 - Moved Permanently
            302 - Found (más néven: Moved Temporarily)
            303 - See Other
            307 - Temporary Redirect
            stb...
          4xx - kliens hiba
            400 - Bad Request
            401 - Unauthorized
            403 - Forbidden
            404 - Not Found
            410 - Gone
            stb...
          5xx - szerver hiba
            500 - Internal Server Error
            501 - Not Implemented
            502 - Bad Gateway
            503 - Service Unavailable
            stb...
          http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
        HTTP 1.1
          több kérdés egy TCP csatornában
          perzisztens kapcsolatok
          kérések tömbösítése (request pipelining)
        HTTPS - HTTP over SSL - TCP 443
        http://hu.wikipedia.org/wiki/HTTP
      URL
        Uniform Resource Locator ("Egységes Erőforrás-Helymeghatározó")
        resource_type://domain:port/filepathname?query_string#anchor
        példák
          http://en.wikipedia.org/wiki/URL#Syntax
          http://www.google.hu/search?q=ldap&ie=utf-8
        a "HOL?" kérdésre válaszol
        http://en.wikipedia.org/wiki/Uniform_Resource_Locator
      URN
        Uniform Resource Name ("Egységes Erőforrás Név")
        "urn:" <NID> ":" <NSS>
          NID: Namespace Identifier
          NSS: Namespace Specific String
        példák
          urn:isbn:0451450523
          urn:ietf:rfc:2648
        a "MI?" vagy "KI?" kérdésre válaszol
        "you can find urn:ietf:rfc:3187 (URN) over at http://tools.ietf.org/html/rfc3187.html (URL)."
        URN Resolver - URN -> URL feloldás
        http://en.wikipedia.org/wiki/Uniform_Resource_Name
      URI
        Uniform Resource Identifier ("Egységes Erőforrás Azonosító")
        URI=URL+URN (átfedések is lehetnek)
        példák
          http://example.org/absolute/URI/with/absolute/path/to/resource.txt
          urn:issn:1535-3613
          /relative/URI/with/absolute/path/to/resource.txt
          ../../../resource.txt
        http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
      Virtual Host
        Multiplexálási technika
        Az URL hosztnév alapján a kiszolgáló átértelmezi a kért objektum helyét
        pl:
http://example.com/a.html
http://virtual.com/a.html
        Nem kompatibilis az SSL mechanizmussal
      Document Root
        A webszerver által feldolgozott URL helyi részének pozíciója a fájlrendszerben
    Konfiguráció
      Szekciók
        <Directory directory-path> ... </Directory>
        <DirectoryMatch regex> ... </DirectoryMatch>
        <Files filename> ... </Files>
        <FilesMatch regex> ... </FilesMatch>
        <Location URL-path|URL> ... </Location>
        <LocationMatch regex> ... </LocationMatch>
        <Limit method [method] ... > ... </Limit>
          HTTP protokoll fejléc korlátozása
          GET, POST, PUT, DELETE, CONNECT, OPTIONS,
PATCH, PROPFIND, PROPPATCH, MKCOL,
COPY, MOVE, LOCK, UNLOCK
          <Limit POST PUT DELETE>
Require valid-user
</Limit>
          <LimitExcept method [method] ... > ... </LimitExcept>
        Elosztott konfiguráció
          AccessFileName [filename]
            könyvtárakban (rekurzívan) feldolgozott opciófájl
            default: .htaccess
            AccessFileName .acl
          AllowOverride All|None|directive-type [directive-type]
            az AccesFile által felülbírálható opciók
            default: All
            direktíva típusok
              AuthConfig: authorizációs direktívák
              FileInfo: dokumentum típusok direktívái
              Indexes: könyvtár indexelési beállítások
              Limit: hozzáférési jogosultságok
              All: az összes fenti
              None: semmi
            AllowOverride AuthConfig Indexes
        Fizikai fájlokra vonatkozó beállítások
        Fizikai könyvtárakra vonatkozó beállítások
        URL-re vonatkozó beállítások
      Hozzáférés-vezérlés
        Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
          hostok hozzáférésének engedélyezése
          Allow from apache.org
Allow from .net example.edu
          Allow from 10.1.2.3
Allow from 192.168.1.104 192.168.1.205
          Allow from 10.1
Allow from 10 172.20 192.168.2
          Allow from 10.1.0.0/255.255.0.0
          Allow from 10.1.0.0/16
        Deny from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
          hostok hozzáférésének tiltása
          lásd: Allow direktíva
        Order ordering
          Allow és Deny direktívák kiértékelési sorrendje
          Default: Deny,Allow
          Lehetséges értékek
            Allow,Deny
              "minden tilos, ami nem szabad"
              a kérés elfogadásához:
              legalább egy Allow direktívának illeszkednie kell
              ÉS egy Deny direktíva sem illeszkedhet
              különben elutasítva
            Deny,Allow
              "minden szabad, ami nem tilos"
              a kérés elutasításához:
              legalább egy Deny direktívának illeszkednie kell
              ÉS egy Allow direktíva sem illeszkedhet
              különben elfogadva
          Order Deny,Allow
Deny from all
Allow from apache.org
          Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
          <Directory /www>
Order Allow,Deny
</Directory>
        Options [+|-]option [[+|-]option] ...
          könyvtár szolgáltatások
          default: All
          opciók
            All: minden, kivéve MultiViews
            ExecCGI: CGI futtatás engedélyezése
            FollowSymLinks: szimbolikus linkek követése
            SymLinksIfOwnerMatch: szimbolikus linkek követése, ha a tulajdonos egyezik
            Includes: SSI engedélyezése
            IncludesNOEXEC: SSI engedélyezése, #exec nélkül
            Indexes: könyvtárszerkezet megjelenítése
            MultiViews: kliensfüggő tartalommegjelenítés
            None: minden kikapcsolva
          kapcsolók
            - : az opció kikapcsolása
            + : az opció bekapcsolása
            kapcsoló nélkül: az eddigi Options direktívák teljes felülbírálása
          <Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
          <Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
        Require entity-name [entity-name] ...
          Felhasználók engedélyezése
          Require user userid [userid] ...
          Require group group-name [group-name] ...
          Require valid-user
          AuthType Basic
AuthName "Restricted Resource"
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin
        Satisfy Any|All
          Host és felhasználó azonosítás konkurrenciájának feloldása
          Satisfy All: mindkét mechanizmus kötelező
          Satisfy Any: bármelyik mechanizmus elegendő
          Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any
      Proxy
        ProxyRequests On|Off
          http kérések továbbítása
          Default: Off
        <Proxy wildcard-url> ...</Proxy>
          http kérések továbbítása domainre
          <Proxy *>
Order Deny,Allow
Deny from all
Allow from yournetwork.example.com
</Proxy>
          <ProxyMatch regex> ...</ProxyMatch>
      CGI futtatás
        Action action-type cgi-script [virtual]
          fájltípusokhoz kapcsolt CGI alkalmazás
          AddHandler my-file-type .xyz
Action my-file-type /cgi-bin/program.cgi
        ScriptAlias URL-path file-path|directory-path
          URL-hez kapcsolt CGI alkalmazás-könyvtár vagy fájl
          ScriptAlias /cgi-bin/ /web/cgi-bin/
          ScriptAlias /scriptem /web/cgi-bin/scriptem.cgi
        ScriptAliasMatch regex file-path|directory-path
          URL regexp-hez kapcsolt CGI alkalmazás-könyvtár vagy fájl
          ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
        AddHandler handler-name extension [extension] ...
          kitejresztéshez rendelt CGI alkalmazás vagy modul
          AddHandler cgi-script .cgi
      Átirányítások
        Alias URL-path file-path|directory-path
          URL átirányítása fájlra vagy könyvtárra
          Alias /image /ftp/pub/image
        AliasMatch regex file-path|directory-path
          URL regexp átirányítása fájlra vagy könyvtárra
          AliasMatch ^/icons(.*) /usr/local/apache/icons$1
        Redirect [status] URL-path URL
          URL átirányítása HTTP fejléccel
          Redirect /service http://foo2.example.com/service
        RedirectMatch [status] regex URL
          URL regexp átirányítása HTTP fejléccel
          RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
        AllowEncodedSlashes On|Off
          %2F és %5C karakterek átalakítása / és \ jelekké
          Default: Off
        ForceType MIME-type|None
          Tartalom mime típus felülbírálása
          .php forrás kerülhet kiszolgálásra!
          ForceType text/html
        DirectoryIndex local-url [local-url] ...
          Könyvtárra mutató URL-ek átirányítása fájlra
          Default: index.html
          DirectoryIndex index.html index.txt /cgi-bin/index.pl
        UserDir directory-filename [directory-filename] ...
          felhasználói könyvtárak engedélyezése
          speciális érték: disabled, enabled
          példák
            kérés: http://www.example.com/~bob/one/two.html
            helyi fájlok
              UserDir public_html ~bob/public_html/one/two.html
              UserDir /usr/web /usr/web/bob/one/two.html
              UserDir /home/*/www /home/bob/www/one/two.html
            redirect
              UserDir http://www.example.com/users http://www.example.com/users/bob/one/two.html
              UserDir http://www.example.com/*/usr http://www.example.com/bob/usr/one/two.html
              UserDir http://www.example.com/~*/ http://www.example.com/~bob/one/two.html
          UserDir disabled root
          UserDir disabled
UserDir enabled user1 user2 user3
          Userdir public_html /usr/web http://www.example.com/
      Rendszer interfész
        DocumentRoot directory-path
          web szolgáltatásra kiajánlott könyvtár
        ChrootDir /path/to/directory
          indulás után, de a kérések fogadása előtt végrehajtott chroot
          nagyon összetett lehet beállítani
        CoreDumpDirectory directory
          default: kikapcsolva
          a szerver futása közben fellépő hiba esetén memóriatérkép mentése fájlba
        Group unix-group
          default: nogroup
          a kéréseket kiszolgáló szálak csoportja
          <VirtualHost> szekción belül nem támogatott
          Group www-group
        User unix-userid
          default: nouser
          a kéréseket kiszolgáló szálak felhasználója
          <VirtualHost> szekción belül nem támogatott
          User www-data
        SuexecUserGroup User Group
          CGI szkriptek futtatásához használt felhasználó
          SuexecUserGroup nobody nogroup
        AssignUserID uid gid
          A kiszolgálást végző szálak felhasználója és csoportja (virtualhostban is)
          AssignUserID client_name client_group
          nem gyári apache modul
          http://mpm-itk.sesse.net/
        Listen [IP-address:]portnumber [protocol]
          webszolgáltatás kezdeményezése adott címen
          Listen 192.170.2.1:80
Listen 192.170.2.5:8000
        SSLEngine on|off|optional
          SSL csatorna-biztosítás engedélyezése
          default: off
          optional: TLS támogatás
          <VirtualHost _default_:443>
SSLEngine on
...
</VirtualHost>
        SSLRequireSSL
          SSL kapcsolat kényszerítése adott szekción belül
      Naplózás és státusz
        server-status
          Szerver státusz információk megjelenítése
          <Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from .example.com
</Location>
        ExtendedStatus On|Off
          Bővített szerver-státusz megjelenítése
          Default: off
        DumpIOInput On|Off
          minden bejövő adat naplózása
        DumpIOOutput On|Off
          minden kimenő adat naplózása
        HostnameLookups On|Off|Double
          kliens IP címek feloldása
          erőforrásigényes
          Double: PTR rekord összevetése az A és CNAME rekordokkal
        LogLevel level
          hibanapló részletességének beállítása
          default: warn
          emerg, alert, crit, error, warn, notice, info, debug
        LogFormat format|nickname [nickname]
          naplóformátum beállítása
          LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
        ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
          szerver információk megjelenítése a rendszerüzenetekben
          default: Full
          opciók
            Prod: "Apache"
            Major: "Apache/2"
            Minor: "Apache/2.0"
            Minimal: "Apache/2.0.41"
            OS: "Apache/2.0.41 (Unix)"
            Full: "Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2"
    Biztonsági tippek
      Rendszeres biztonsági frissítések
      ServerRoot könyvtárak védelme
        Az apache 'root' felhasználóval indul
        Az 'User' direktíva szabályozza a kiszolgáló szálak felhasználóját
        Lásd: Linux bixtonsági rendszer
      CGI futtatása mindig biztonsági kockázat
        Ne legyen bárki számára írható a cgi-bin könyvtár
        Gyári apache suEXEC mechanizmus - felhasználóváltás
        'ScriptAlias' direktíva használata javasolt
      'AllowOverride None'
      Szerver fájlok védelme
        <Directory />
Order Deny,Allow
Deny from all
</Directory>
        UserDir disabled root
      Logfájlok rendszeres vizsgálata
      http://httpd.apache.org/docs/2.2/misc/security_tips.html
    AAA modulok
      Típus (AuthType direktíva)
        mod_auth_basic
        mod_auth_digest
      Autentikációs forrás
        mod_authn_file
        mod_authnz_ldap
        mod_authn_anon
        stb...
      Authorizációs forrás (Require direktíva)
        mod_authz_owner
        mod_authz_user
        mod_authnz_ldap
        stb...
    http://httpd.apache.org/docs/2.2/
  FTP szolgáltatás (ProFTPd)
    FTP kiszolgáló
    Apache-szerű felépítés és konfiguráció
    http://www.proftpd.org/
  Tematika
    IP alapú hálózat kialakítása (6, 12, 9) - 2. rész
      FTP szolgáltatás – FTP szerver konfigurálása (PROFTPD)
ftp kliensek: ftp parancs, Midnight Commander ftp kliens (K)
      A HTTP és HTTPS protokoll (K)
Apache web szerver konfigurálása: virtualhost, hitelesítés,
hozzáférési tulajdonságok, bővítmények használata,
CGI és php, felhasználó weblapja