33
Linux Internet Web Server and Domain Configuration Tutorial HowTo Create an Apache based Linux website server Create a web server with Linux, Apache, FTP and bind DNS: This tutorial covers the Linux server configuration required to host a website. The Apache web server, FTP server and DNS configuration are covered. The Apache web server is required to serve the web pages, the FTP server is required for users to upload content and the DNS server is required to resolve the domain names so that a URL entered into a web browser will point to your web server and properly serve the correct pages. The configurations presented will include virtual hosting which will allow a single Linux server to support multiple web site domains. Tutorial topics: # Linux Apache web (httpd) server configuration # Linux FTPd server and FTP user accounts # vsFTPd and FTP user account configuration # wuFTPd and FTP user account configuration # Basic "user account" configuration for maximum security on an Internet based web server # Linux DNS (Domain Name Server) configuration using Bind version 8 or 9 (named) # Web Server Load Balancing # Managing web server daemons (services) # Links and Resources Also see: Web Site Security Tutorial YoLinux Internet Server Security Tutorial search Search | Home Page | Linux Tutorials | Terms | Privacy Policy | Advertising | Contact | Related YoLinux Tutorials: °Apache login authentication °Securing Linux °Linux Security Tools °Linux Networking °Linux Sys Admin °Internet Gateway °YoLinux Tutorials Index Free Information Technology Magazines and Document Downloads 4 Advertisements Jobs DevOps Lead EL Segundo, CA Sage IT INC Urgent to fill Austin, TX Yana Software Inc Enterprise Architect Kenosha, WI TeamBradley Web Site Prerequisites: This tutorial assumes that a computer has Linux installed and running. See RedHat Installation for the basics. A connection to the internet is also connection of 128 Mbits/sec or greater will yield the best results. ISDN, DSL, cable modem or better are all suitable. A 56k modem will work b be mediocre at best. The tasks must also be performed with the root user login and password. No single distribution seems to have an advantage. A Ubuntu, SuSe, Fedora, Red Hat or CentOS distribution will include all of the software you configure a web server. If using Red Hat Enterprise Linux, both the Workstation or the Server edition will support your needs except that the W will not include the vsFTP package. It will have to be compiled from source or use sftp. Software Prerequisites: The Apache web server (httpd), FTP (requires xinetd or inetd) and Bind (named) software packages with their depende required. One can use the rpm command to verify installation: Fedora Core 1+, Red Hat Enterprise 4/5, CentOS 4/5: rpm ‐q httpd bind bind‐chroot bind‐utils system‐config‐bind xinetd vsftpd RPMs added FC2+: system‐config‐httpd RPMs added FC3+: httpd‐suexec Red Hat 9.0 rpm ‐q httpd bind xinetd vsftpd A Red Hat 8.0 wuftpd RPM may be installed (Newer version 2.6.2 or later with security fix wu‐ftpd‐2.6.2‐11) or install from source . Red Hat 8.0 rpm ‐q httpd bind xinetd wu‐ftpd Red Hat 7.x: rpm ‐q apache bind inetd wu‐ftpd Use wuftpd version 2.6.2 or later to avoid security problems. SuSE 9.3: rpm ‐ivh apache2 apache2‐prefork bind bind‐chrootenv bind‐utils vsftpd Note: The apache2MPM is a generic term for Apache installation options for "MultiProcessing Modules (MPM)s "prefork" or "worker" only install apache2 you will get the following error: apache2‐MPM is needed by apache2‐2.0.53‐9 Also see Apache.org: MPMs Ubuntu (natty 11.04) / Debian: apt‐get install apache2 apt‐get install bind9 apt‐get install vsftpd Ubuntu (dapper 6.06/hardy 8.04) / Debian:

Linux Web Server and Domain Configuration Tutorial

Embed Size (px)

DESCRIPTION

Linux Web Server and Domain Configuration Tutorial

Citation preview

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 1/33

    LinuxInternetWebServerandDomainConfigurationTutorialHowToCreateanApachebasedLinuxwebsiteserver

    CreateawebserverwithLinux,Apache,FTPandbindDNS:ThistutorialcoverstheLinuxserverconfigurationrequiredtohostawebsite.TheApachewebserver,FTPserverandDNSconfigurationarecovered.TheApachewebserverisrequiredtoservethewebpages,theFTPserverisrequiredforuserstouploadcontentandtheDNSserverisrequiredtoresolvethedomainnamessothataURLenteredintoawebbrowserwillpointtoyourwebserverandproperlyservethecorrectpages.TheconfigurationspresentedwillincludevirtualhostingwhichwillallowasingleLinuxservertosupportmultiplewebsitedomains.

    Tutorialtopics:

    #LinuxApacheweb(httpd)serverconfiguration#LinuxFTPdserverandFTPuseraccounts

    #vsFTPdandFTPuseraccountconfiguration#wuFTPdandFTPuseraccountconfiguration

    #Basic"useraccount"configurationformaximumsecurityonanInternetbasedwebserver#LinuxDNS(DomainNameServer)configurationusingBindversion8or9(named)#WebServerLoadBalancing#Managingwebserverdaemons(services)#LinksandResources

    Alsosee:WebSiteSecurityTutorialYoLinuxInternetServerSecurityTutorial

    search Search |HomePage|LinuxTutorials|Terms|PrivacyPolicy|Advertising|Contact|

    RelatedYoLinuxTutorials:

    Apacheloginauthentication

    SecuringLinux

    LinuxSecurityTools

    LinuxNetworking

    LinuxSysAdmin

    InternetGateway

    YoLinuxTutorialsIndex

    FreeInformationTechnologyMagazinesandDocumentDownloads

    4

    Advertisements

    Jobs

    DevOpsLeadELSegundo,CASageITINC

    UrgenttofillAustin,TXYanaSoftwareInc

    EnterpriseArchitectKenosha,WITeamBradley

    WebSitePrerequisites:

    ThistutorialassumesthatacomputerhasLinuxinstalledandrunning.SeeRedHatInstallationforthebasics.Aconnectiontotheinternetisalsoassumed.connectionof128Mbits/secorgreaterwillyieldthebestresults.ISDN,DSL,cablemodemorbetterareallsuitable.A56kmodemwillworkbuttheresultswillbemediocreatbest.Thetasksmustalsobeperformedwiththerootuserloginandpassword.

    Nosingledistributionseemstohaveanadvantage.AUbuntu,SuSe,Fedora,RedHatorCentOSdistributionwillincludeallofthesoftwareyouwillneedtoconfigureawebserver.IfusingRedHatEnterpriseLinux,boththeWorkstationortheServereditionwillsupportyourneedsexceptthattheWorkstationeditionwillnotincludethevsFTPpackage.Itwillhavetobecompiledfromsourceorusesftp.

    SoftwarePrerequisites:TheApachewebserver(httpd),FTP(requiresxinetdorinetd)andBind(named)softwarepackageswiththeirdependenciesareallrequired.Onecanusetherpmcommandtoverifyinstallation:

    FedoraCore1+,RedHatEnterprise4/5,CentOS4/5:

    rpmqhttpdbindbindchrootbindutilssystemconfigbindxinetdvsftpd

    RPMsaddedFC2+:systemconfighttpdRPMsaddedFC3+:httpdsuexec

    RedHat9.0

    rpmqhttpdbindxinetdvsftpd

    ARedHat8.0wuftpdRPMmaybeinstalled(Newerversion2.6.2orlaterwithsecurityfixwuftpd2.6.211)orinstallfromsource.

    RedHat8.0

    rpmqhttpdbindxinetdwuftpd

    RedHat7.x:

    rpmqapachebindinetdwuftpd

    Usewuftpdversion2.6.2orlatertoavoidsecurityproblems.

    SuSE9.3:

    rpmivhapache2apache2preforkbindbindchrootenvbindutilsvsftpd

    Note:Theapache2MPMisagenerictermforApacheinstallationoptionsfor"MultiProcessingModules(MPM)s"prefork"or"worker".Ifyoutryandonlyinstallapache2youwillgetthefollowingerror:

    apache2MPMisneededbyapache22.0.539

    AlsoseeApache.org:MPMs

    Ubuntu(natty11.04)/Debian:

    aptgetinstallapache2aptgetinstallbind9aptgetinstallvsftpd

    Ubuntu(dapper6.06/hardy8.04)/Debian:

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 2/33

    SAPBASISNaples,NYAvaniTechSoutions

    SeniorTradeEngineSystemsDeveloperChicago,ILRequestTechnologyRobynHonquest

    SrProgramAnalystColumbus,OHConservationServicesGroup

    TechnicalAnalystNorthampton,Northamptonshire,United...StreamRecruitment

    Sr.NetDeveloperwithPower/Energy...Philadelphia,PAUnitedSoftwareGroupInc

    HadoopAdministratorNorthbrook,ILRequestTechnologyStephanieBaker

    SeniorSOADeveloperMcLean,VA

    POSTAJOB>

    POWEREDBYJOBTHREAD

    aptgetinstallapache2apache2commonapache2mpmpreforkapache2utilsaptgetinstallbind9aptgetinstallvsftpd

    OneshouldalsohaveaworkingknowledgeoftheLinuxinitprocesssothattheseservicesareinitiateduponsystemboot.SeetheYoLinuxinitprocesstutorialformoreinfo.

    ApacheHTTPWebserverconfiguration:

    ThistutorialisfortheApacheHTTPwebserver(Version1.3and2.0).SeetheYoLinuxlistofLinuxHTTPserversforalistofotherwebserversfortheHyperTextTransportProtocol.

    TheApachewebserverconfigurationfileis:/etc/httpd/conf/httpd.conf

    WebpagesareservedfromthedirectoryasconfiguredbytheDocumentRootdirective.Thedefaultdirectorylocationis:

    Linuxdistribution Apachewebserver"DocumentRoot"RedHat7.x9,FedoraCore,RedHatEnterprise4/5/6,CentOS4/5/6 /var/www/html/RedHat6.xandolder /home/httpd/html/Suse9.x /srv/www/htdocs/Ubuntu(dapper6.06)/Debian /var/www/htmlUbuntu(hardy8.04/natty11.04)/Debian /var/www

    Thedefaulthomepageforthedefaultconfigurationisindex.html.Notethepagesshouldnotbeownedbyuserapacheasthisistheprocessownerofthehttpdwebserverdaemon.Ifthewebserverprocessiscomprimised,itshouldnotbeallowedtoalterthefiles.Thefilesshouldofcoursebereadablebyuser

    Apachemaybeconfiguredtorunasahostforonewebsiteinthisfashionoritmaybeconfiguredtoserveformultipledomains.Servingformultipledomainsmaybeachievedintwoways:

    Virtualhosts:OneIPaddressbutmultipledomains"Namebased"virtualhosting.MultipleIPbasedvirtualhosts:OneIPaddressforeachdomain"IPbased"virtualhosting.

    Thedefaultconfigurationwillallowonetohavemultipleuseraccountsunderonedomainbyusingareferencetotheuseraccount:http://www.domain.com/~user1/.Ifnodomainisregisteredorconfigured,theIPaddressmayalsobeused:http://XXX.XXX.XXX.XXX/~user1/.

    [PotentialPitfall]Thedefaultumaskfordirectorycreationiscorrectbydefaultbutifnotuse:chmod755/home/user1/public_html

    [PotentialPitfall]Whencreatingnew"Directory"configurationdirectives,Ifoundthatplacingthembytheexisting"Directory"directivestobeabadidea.Itwouldnotusethe.htaccessfile.Thiswasbecausethestatementdefiningtheuseofthe.htaccessfilewasafterthe"Directory"statement.PreviouslyinRH6.xthefileswereseparatedandtheorderwasdefinedalittledifferent.Inowplacenew"Directory"statementsneartheendofthefilejustbeforethe"statements.

    ForusersofRedHat7.1,theGUIconfigurationtoolapacheconfwasintroducedforthecrowdwholiketouseprettypointandclicktools.

    FilesusedbyApache:

    Start/stop/restartscript:RedHat/Fedora/CentOS:/etc/rc.d/init.d/httpdSuSE9.3:/etc/init.d/apache2Ubuntu(dapper6.06/hardy8.04/natty11.04)/Debian:/etc/init.d/apache2

    Apachemainconfigurationfile:RedHat/Fedora/CentOS:/etc/httpd/conf/httpd.confSuSE:/etc/apache2/httpd.conf(Needtoadddirective:ServerNamehostname)Ubuntu(dapper6.06/hardy8.04/natty11.04)/Debian:/etc/apache2/apache2.conf

    Apachesuplementaryconfigurationfiles:RedHat/Fedora/CentOS:/etc/httpd/conf.d/component.confSuSE:/etc/apache2/conf.d/component.confUbuntu(dapper6.06/hardy8.04/natty11.04)/Debian:

    Virtualdomains:/etc/apache2/sitesenabled/domain(Createsoftlinkfrom/etc/apache2/sitesenabled/domainto/etc/apache2/sitesavailable/domaintoturnon.UsecommandAdditionalconfigurationdirectives:/etc/apache2/conf.d/Modulestoload:/etc/apache2/modsavailable/(Softlinkto/etc/apache2/modsenabled/toturnon)Portstolistento:/etc/apache2/ports.conf

    /var/log/httpd/access_loganderror_logRedHat/FedoraCoreApachelogfiles(Suse:/var/log/apache2/)

    Start/Stop/Restartscripts:Thescriptistoberunwiththequalifiersstart,stop,restartorstatus.i.e./etc/rc.d/init.d/httpdrestart.Arestartallowsthewebservertostartagainandreadtheconfigurationfilestopickupanychanges.Tohavethisscriptinvokeduponsystembootissuethecommandchkconfigaddhttpd.SeeLinuxInitProcessTutorialforamorecompletediscussion.

    AlsoApachecontroltool:/usr/sbin/apachectlstart

    ApacheControlCommand:apachectl:

    RedHat/FedoraCore/CentOS:apachectldirectiveUbuntudapper6.06/hardy8.04/natty11.04/Debian:apachectl(softlinktoapache2ctl)orapache2ctldirective

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 3/33

    Directive Descriptionstart StarttheApachehttpddaemon.Givesanerrorifitisalreadyrunning.stop StopstheApachehttpddaemon.graceful GracefullyrestartstheApachehttpddaemon.Ifthedaemonisnotrunning,itisstarted.Thisdiffersfromanormalrestartinthatcurrently

    openconnectionsarenotaborted.gracefulstop GracefullystopstheApachehttpddaemon.Thisdiffersfromanormalrestartinthatcurrentlyopenconnectionsarenotaborted.

    restart RestartstheApachehttpddaemon.Ifthedaemonisnotrunning,itisstarted.Thiscommandautomaticallycheckstheconfigurationfilesasinconfigtestbeforeinitiatingtherestarttomakesurethedaemondoesn'tdie.

    status Displaysabriefstatusreport.fullstatus Displaysafullstatusreportfrommod_status.Requiresmod_statusenabledonyourserverandatextbasedbrowsersuchaslynxavailableon

    yoursystem.TheURLusedtoaccessthestatusreportcanbesetbyeditingtheSTATUSURLvariableinthescript.configtestt

    Runaconfigurationfilesyntaxtest.

    Apachecontroltool:apachectlmanpage

    ApacheConfigurationFiles:

    /etc/httpd/conf/httpd.conf:isusedtoconfigureApache.Inthepastitwasbrokendownintothreefiles.Thesemaynowbeallconcatenatedintoonefile.SeeApacheonlinedocumentationforthefullmanual./etc/httpd/conf.d/application.conf:AllconfigurationfilesinthisdirectoryareincludedduringApachestartup.Usedtostoreapplicationspecificconfigurations./etc/sysconfig/httpd:HoldsenvironmentvariablesusedwhenstartingApache.

    Basicsettings:ChangethedefaultvalueforServerNamewww.

    GivingApacheaccesstothefilesystem:ItisprudenttolimitApache'sviewofthefilesystemtoonlythosedirectoriesnecessary.Thisisdonewiththedirectorystatement.Startbydenyingaccesstoeverything,thengrantaccesstothenecessarydirectories.

    Denyaccesscompletelytofilesystemroot("/")asthedefault:

    Denyfirst,thengrantpermissions:

    Setdefaultlocationofsystemwebpagesandallowaccess:(RedHat/Fedora/CentOS)

    Grantaccesstoauser'swebdirectory:public_html

    EnablingRedHat/FedoraLinux,Apachepublic_htmluserdirectoryaccess:

    Thiswillallowuserstoservecontentfromtheirhomedirectoriesunderthesubdirectory"/home/userid/public_html/"byaccessingtheURLhttp://hostname/~userid/

    File:/etc/httpd/conf/httpd.conf

    LoadModuleuserdir_modulemodules/mod_userdir.so

    ...

    ...

    #UserDirdisableAddcommenttothisline##Toenablerequeststo/~user/toservetheuser'spublic_html#directory,removethe"UserDirdisable"lineabove,anduncomment#thefollowinglineinstead:UserDirpublic_html#Uncommentthisline

    ...

    ...

    AllowOverrideFileInfoAuthConfigLimitOptionsMultiViewsIndexesSymLinksIfOwnerMatchIncludesNoExecOrderallow,denyAllowfromall

    1 2 OptionsNone3 AllowOverrideNone4

    1 DocumentRoot"/var/www/html"2 3 4 OptionsIndexesFollowSymLinks5 AllowOverrideNone6 Orderallow,deny7 Allowfromall8

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 4/33

    Orderdeny,allowDenyfromall

    Changetoacomment(add"#"atbeginningofline)fromFedoraCoredefaultUserDirdisableandassignthedirectorypublic_htmlasawebserveraccessibledirectory.ORAssignasingleuserthespecificabilitytosharetheirdirectory:

    Allowsthespecificuser,"user1"only,theabilitytoservethedirectory/home/user1/public_html/

    AlsouseSELinuxcommandtosetthesecuritycontext:setseboolhttpd_enable_homedirstrue

    Directorypermissions:TheApachewebserverdaemonmustbeabletoreadyourwebpagesinordertofeedtheircontentstothenetwork.Useanappropriateumaskandfileprotection.Allowaccesstowebdirectory:chmodugo+rxRpublic_html.Notethattheuser'sdirectoryalsohastohavetheappropriatepermissionsasitistheparentofpublic_html.Defaultpermissionsonuserdirectory:lsl/homedrwx20user1user14096Mar512:16user1Allowthewebserveraccesstooperatetheparentdirectory:chmodugo+x/home/user1dwxxx20user1user14096Mar512:16user1

    Onemayalsousegroupstocontrolpermisions.SeetheYoLinuxtutorialonmanaginggroups.

    EnablingUbuntu'sApachepublic_htmluserdirectoryaccess:

    UbuntuhasbrokenouttheApacheloadablemoduledirectivesintothedirectory/etc/apache2/modsavailable/.ToenableanApachemodule,generatesoftlinkstothedirectory/etc/apache2/sitesenabled/byusingthecommandsa2enmod/a2dismodtoenable/disableApachemodules.

    Example:[root@node2]#a2enmodAlistofavailablemodulesisdisplayed.Enter"userdir"asthemoduletoenable.RestartApachewiththefollowingcommand:/etc/init.d/apache2forcereload

    Note:Thisisthesameasmanuallygeneratingthefollowingtwosoftlinks:

    lns/etc/apache2/modsavailable/userdir.conf/etc/apache2/modsenabled/userdir.conflns/etc/apache2/modsavailable/userdir.load/etc/apache2/modsenabled/userdir.load

    Manpage:a2enmod/a2dismod

    [PotentialPitfall]:IftheApachewebservercannotaccessthefileyouwillgettheerror"403Forbidden""Youdon'thavepermissiontoaccessonthisserver."Notethedefaultpermissionsonauserdirectorywhenfirstcreatedwith"useradd"are:

    drwx3userxuserx

    Youmustallowthewebserverrunningasuser"apache"toaccessthedirectoryifitistodisplaypagesheldthere.Fixwithcommand:chmodugo+rx/home/userx

    drwxrxrx3userxuserx

    SELinuxsecuritycontexts:

    FedoraCore3andRedHatEnterpriseLinux4introducedSELinux(SecurityEnhancedLinux)securitypoliciesandcontextlabels.Toviewthesecuritycontextlabelsappliedtoyourwebpagefilesusethecommand:lsZ

    Thesystemenables/disablesSELinuxpoliciesinthefile/etc/selinux/configSELinuxcanbeturnedoffbysettingthedirectiveSELINUX.(Thenrebootthesystem):

    SELINUX=disabled

    orusingthecommandsetenforce0totemporarilydisableSELinuxuntilthenextreboot.

    WhenusingSELinuxsecurityfeatures,thesecuritycontextlabelsmustbeaddedsothatApachecanreadyourfiles.Thedefaultsecuritycontextlabelusedisinheritedfromthedirectoryfornewlycreatedfiles.Thusacopy(cp)mustbeusedandnotamove(mv)whenplacingfilesinthecontentdirectory.Movedoesnotcreateanewfileandthusthefiledoesnotrecievethedirectorysecuritycontextlabel.ThecontextlabelsusedforthedefaultApachedirectoriescanbeviewedwiththecommand:lsZ/var/wwwThewebdirectoriesofusers(i.e.public_html)shouldbesetwiththeappropriatecontextlabel(httpd_sys_content_t).

    Assignasecuritycontextforwebpages:chconRhthttpd_sys_content_t/home/user1/public_htmlOptions:

    R:Recursive.Filesanddirectoriesincurrentdirectoryandallsubdirectories.

    1 2 AllowOverrideNone3 orderallow,deny4 allowfromall5 OptionsIndexesIncludesFollowSymLinks6

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 5/33

    h:Affectsymboliclinks.t:Specifytypeofsecuritycontext.

    Usethefollowingsecuritycontexts:

    ContextType Descriptionhttpd_sys_content_t Usedforstaticwebcontent.i.e.HTMLwebpages.httpd_sys_script_exec_t UseforexecutableCGIscriptsorbinaryexecutables.httpd_sys_script_rw_t CGIisallowedtoalter/deletefilesofthiscontext.httpd_sys_script_ra_t CGIisallowedtoreadorappendfilesofthiscontext.httpd_sys_script_ro_t CGIisallowedtoreadfilesanddirectoriesofthiscontext.

    Setthefollowingoptions:setseboolhttpdoptiontrue(orsettofalse)

    Policy Descriptionhttpd_enable_cgi Allowhttpdcgisupport.httpd_enable_homedirs Allowhttpdtoreadhomedirectories.httpd_ssi_exec AllowhttpdtorunSSIexecutablesinthesamedomainassystemCGIscripts.ThenrestartApache:

    RedHat/Fedora/SuseandallSystemVinitscriptbasedLinuxsystems:/etc/init.d/httpdrestartRedHat/Fedora:servicehttpdrestart

    ThedefaultSEbooleanvaluesarespecifiedinthefile:/etc/selinux/targeted/booleans

    FormoreonSELinuxseetheYoLinuxSystemsAdministrationtutorial.

    VirtualHosts:

    TheApachewebserverallowsonetoconfigureasinglecomputertorepresentmultiplewebsitesasiftheywereonseparatehosts.Therearetwomethodsavailableandwedescribetheconfigurationofeach.Chooseonemethodforyourdomain:

    Namebasedvirtualhost:(mostcommon)AsinglecomputerwithasingleIPadresssupportingmultiplewebdomains.Thewebbrowserusingthehttpprotocol,identifiesthedomainbeingaddressed.IPbasedvirtualhost:ThevirtualhostscanbeconfiguredasasinglemultihomedcomputerwithmultipleIPaddressesonasinglenetworkcard,witheachIPaddressrepresentingadifferentwebdomain.ThishastheappearanceofawebdomainsupportedbyadedicatedcomputerbecauseithasadedicatedIPaddress.

    Configuringa"namebased"virtualhost:

    Avirtualhostconfigurationallowsonetohostmultiplewebsitedomainsononeserver.(Thisisnotrequiredforadedicatedlinuxserverwhichhostsasinglewebsite.)

    NameVirtualHostXXX.XXX.XXX.XXX

    ServerNamewww.yourdomain.comCNAME(bindDNSaliaswww)specifiedinBindconfigurationfile(/var/named/...)ServerAliasyourdomain.comAllowsrequestsbydomainnamewithoutthe"www"[email protected]/home/user1/public_htmlErrorLoglogs/yourdomain.comerror_logTransferLoglogs/yourdomain.comaccess_log

    Notes:

    YoucanspecifymorethanoneIPaddress.i.e.ifwebserverisalsobeingusedasafirewall/gatewayandyouhaveanexternalinternetIPaddressaswellasalocalnetworkIPaddress.

    NameVirtualHostXXX.XXX.XXX.XXXNameVirtualHost192.168.XXX.XXX

    .....

    SeetheYoLinuxTutorialonconfiguringanetworkgateway/firewallusingiptablesandNAT.UseyourIPaddressforXXX.XXX.XXX.XXX,actualdomainnameandemailaddress.OnecanuseDNSviewstoprovidedifferentlocalnetworkDNSresults.

    NotethatIconfigureApacheforbothrequestshttp://www.domainname.comandhttp://domainname.com.

    Oncevirtualhostsareconfigured,yourdefaultsystemdomain(/var/www/html)willstopworking.Yourdefaultdomainnowmustbeconfiguredasavirtualdomain.

    ...Thispartremainsthesame

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 6/33

    ..

    #Defaultforwhennodomainnameisgiven(i.e.accessbyIPaddress)

    [email protected]/var/www/htmlErrorLoglogs/error_logTransferLoglogs/access_log

    #AddaVirtualHostdefinitionforyourdomainwhichwasoncethesystemdefault.

    ServerNamewww.yourdomain.comServerAliasyourdomain.comServerAdminuser1@yourdomain.comDocumentRoot/var/www/htmlErrorLoglogs/error_logTransferLoglogs/access_log

    .....

    ForwardingtoaprimaryURL.ItisbesttoavoidtheappearanceofduplicatedwebcontentfromtwoURLssuchashttp://www.yourdomainandhttp://yourdomain.com.SupplyaforwardingApache"Redirect".

    ServerNamewww.yourdomain.comNotethatnoaliasesarelisted......

    #AddaVirtualHostdefinitiontoforwardtoyourprimaryURL

    ServerNameyourdomain.comServerAliasotherdomain.comServerAliaswww.otherdomain.comRedirectpermanent/http://www.yourdomain.com.com/

    .....

    Note:SeetheYoLinux.comApache"Redirect"Tutorial

    Morevirtualhostexamples.

    Whenspecifyingmoredomains,theymayallusethesameIPaddressorsome/allmayusetheirownuniqueIPaddress.Specifya"NameVirtualHost"foreachIPaddress.

    AftertheApacheconfigurationfileshavebeenedited,restartthehttpddaemon:/etc/rc.d/init.d/httpdrestart(RedHat)or/etc/init.d/apache2restart(Ubuntu/Debian)

    ApachevirtualdomainconfigurationwithUbuntuDapper/Hardy:

    Ubuntuseparatesouteachvirtualdomainintoaseparateconfigurationfileheldinthedirectory/etc/apache2/sitesavailable/.Whenthesitedomainistobecomeactive,asoftlinkiscreatedtothedirectory/etc/apache2/sitesenabled/.

    Example:/etc/apache2/sitesavailable/supercorp

    01 02 ServerNamesupercorp.com03 ServerAliaswww.supercorp.com04 ServerAdminwebmaster@localhost05 06 DocumentRoot/home/supercorp/public_html/home07 08 OptionsFollowSymLinks09 AllowOverrideNone10 11 12 OptionsIndexesFollowSymLinksMultiViews13 IndexOptionsSuppressLastModifiedSuppressDescription14 AllowOverrideAll15 Orderallow,deny16 allowfromall17 18 19 ScriptAlias/cgibin//home/supercorp/cgibin/20 21 AllowOverrideNone22 Options+ExecCGIMultiViews+SymLinksIfOwnerMatch23 Orderallow,deny

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 7/33

    Enabledomain:

    Createsoftlink:Manually:lns/etc/apache2/sitesavailable/supercorp/etc/apache2/sitesenabled/supercorpUseUbuntuscriptsa2ensite/a2dissite.Typecommandanditwillpromptyouastowhichsiteyouwouldliketoenableordisable.

    RestartApache:apache2ctlgracefulor/etc/init.d/apache2restartor/etc/init.d/apache2reload

    AlsonotethatApachemodulescanalsobeenabled/disabledwithscriptsa2enmod/a2dismod.

    Manpages:

    a2ensite/a2dissite(Ubuntu:Apache2enable/disablesite)apache2ctl

    Configuringan"IPbased"virtualhost:

    OnemayassignmultipleIPaddressetoasinglenetworkinterface.SeetheYoLinuxnetworkingtutorial:NetworkAliasing.EachIPaddressmaythenbeit'sownvirtualserverandindividualdomain.Thedownsideofthe"IPbased"virtualhostmethodisthatyouhavetopossessmultiple/extraIPaddresses.Thisusuallycostsmore.Thestandardnamebasedvirtualhostingmethodaboveismorepopularforthisreason.

    NameVirtualHost*IndicatesallIPaddresses

    [email protected]/home/user0/public_html

    [email protected]/home/user1/public_html

    [email protected]/home/user2/public_html

    ThedefaultblockwillbeusedasthedefaultforallIPaddressesnotspecifiedexplicitly.ThisdefaultIP(*)maynotworkforURL's.

    CGI:(CommonGatewayInterface)

    CGIisaprogramexecutablewhichdynamicallygeneratesawebpagebywritingtostdout.CGIispermittedbyeitheroftwoconfigurationfiledirectives:

    ScriptAlias:RedHat7.x9,Fedoracore:ScriptAlias/cgibin/"/var/www/cgibin/"RedHat6.xandolder:ScriptAlias/cgibin/"/home/httpd/cgibin/"Suse9.x:ScriptAlias/cgibin/"/srv/www/cgibin/"Ubuntu(dapper/hardy/natty)/Debian:ScriptAlias/cgibin/"/usr/lib/cgibin/"

    orOptions+ExecCGI:

    Options+ExecCGI

    Theexecutableprogramfilesmusthaveexecuteprivileges,executablebytheprocessowner(RedHat7+/FedoraCore:apache.Olderusenobodythehttpddaemonisbeingrun.

    ConfiguringCGIToRunWithUserPrivileges:

    ThesuEXECfeatureprovidesApacheuserstheabilitytorunCGIandSSIprogramsunderuserIDsdifferentfromtheuserIDofthecallingwebserver.Normally,whenaCGIorSSIprogramexecutes,itrunsasthesameuserwhoisrunningthewebserver.

    24 Allowfromall25 26 27 ErrorLog/var/log/apache2/supercorp.comerror.log28 29 #Possiblevaluesinclude:debug,info,notice,warn,error,30 #crit,alert,emerg.31 LogLevelwarn32 CustomLog/var/log/apache2/supercorp.comaccess.logcombined33 ServerSignatureOn34

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 8/33

    NameVirtualHostXXX.XXX.XXX.XXX

    ServerNamenode1.yourdomain.comAllowsrequestsbydomainnamewithoutthe"www"prefix.ServerAliasyourdomain.comwww.yourdomain.comCNAME(aliaswww)specifiedinBindconfigurationfile(/var/named/...)[email protected]/home/user1/public_html/yourdomain.comErrorLoglogs/yourdomain.comerror_logTransferLoglogs/yourdomain.comaccess_logSuexecUserGroupuser1user1Options+ExecCGI+IndexesAddHandlercgiscript.cgi

    ERRORPages:

    YoucanspecifyyourownwebpagesinsteadofthedefaultApacheerrorpages:

    ErrorDocument404/Error404missing.html

    CreatethefileError404missing.htmlinyour"DocumentRoot"directory.

    Handleallerrorswithaforwardingpage:

    ErrorDocument400/error.shtmlErrorDocument401/error.shtmlErrorDocument403/error.shtmlErrorDocument404/error.shtmlErrorDocument500/error.shtml

    Samplefileerror.shtml(inyour"DocumentRoot"directory).

    Pagedoesnotfound!

    PHP:

    Iftheappropriatephp,perlandhttpdRPM'sareinstalled,thedefaultRedHatApacheconfigurationandmoduleswillsupportPHPcontent.RPMPackages(RHEL4):

    php:HTMLembeddedscriptinglanguagephppear:PEARisaframeworkanddistributionsystemforreusablePHPcomponents.phpmysql:MySQLdatabasesupport.phpldap:LightweightDirectoryAccessProtocol(LDAP)support

    Apacheconfiguration:

    Addphpdefaultpageindex.phptoapacheconfigfile:/etc/httpd/conf/httpd.conf

    ...

    DirectoryIndexindex.htmlindex.htmindex.php

    ...

    PHPConfigurationFile:

    RHEL4PHP4.3:/etc/php.iniUbuntuDaper6.06/6.11:/etc/php5/apache2/php.ini

    [PHP]engine=On......display_errors=Offinclude_path=".:/php/includes"......memory_limit=32M;Defaultistypically8MBwhichistoolow.......

    [MySQL]......

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 9/33

    mysql.default_host=superserver;Hostnameofthecomputermysql.default_user=dbuser...

    Smallportionoffileshown.Notethatchangeswillnottakeeffectuntiltheapachewebserverdaemonisrestarted.

    TestyouPHPcapabilitieswiththistestfile:/home/user1/public_html/test.php

    OR(olderformat)

    Test:http://localhost/~user1/test.php

    FormoreinfoseeYoLinuxlistofPHPinformationwebsites.

    RunningMultipleinstancesofhttpd:

    TheApachewebserverdaemon(httpd)canbestartedwiththecommandlineoption"f"tospecifyauniqueconfigurationfileforeachinstance.uniqueIPaddressforeachinstanceofApache.SeetheYoLinuxNetworkingTutorialtospecifymultipleIPaddressesforoneNIC(NetworkInterfaceCard).UsetheApacheconfigurationfiledirectiveListenXXX.XXX.XXX.XXX,wheretheIPaddressisuniqueforeachinstanceofApache.

    ApacheManPages:

    httpdApacheHypertextTransferProtocolServerapachectlApacheHTTPServerControlInterfaceabApacheHTTPserverbenchmarkingtoolhtdigestmanageuserfilesfordigestauthenticationhtpasswdManageuserfilesforbasicauthenticationlogresolveResolveIPaddressestohostnamesinApachelogfilesrotatelogsPipedloggingprogramtorotateApachelogs

    AlsoseethelocalonlineApacheconfigurationmanual:http://localhost/manual/.

    ApacheRedHat/FedoraCoreGUIconfiguration:

    GUIconfigurationtool:

    RedHatEL4/5,Fedora210:/usr/bin/systemconfighttpdRedHat8/9,FedoraCore1:/usr/bin/redhatconfighttpd

    Addingwebsiteloginandpasswordprotection:SeetheYoLinuxtutorialonwebsitepasswordprotection.

    Logfileanalysis:

    ScanningtheApacheweblogfileswillnotprovidemeaningfullstatisticsunlesstheyaregraphedorpresentedinaneasytoreadfashion.Thefollowingpackagestoagoodjobofpresentingsitestatistics.

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 10/33

    AnalogAlsoseeReportMagicforAnalogWebalizerAWStats(requiresPERL)

    Websitestatisticservices:

    eXTReMeTracking

    Loadtestingyourserver:

    PureLoadJAVAloadtestingandreportingtool.WebPerformanceTrainerLoadTestingTools.

    ApacheLinks:

    CgiWrapsetuidwrapperthatallowsuserstoinstallandexecutetheirowncgiscriptsthatgetexecutedastheirownuseridWWWThreads.orgCommercialproductAdvancedWebConferencingSoftwareConfiguringhttps(mod_ssl):

    Mod_SSL.org:HomePageMod_SSL.org:Mod_SSLHowToMod_SSL.org:StepstocreateSSLservercertificate

    LogfileanalysisusingAnalog:

    Installation:

    RedHat/Fedora:yuminstallanalogUbuntu/Debian:aptgetinstallanalog

    InstallationpackagesalsoavailablefromtheAnalogdownloadspage.

    Configurationfile:/etc/analog.cfg

    LOGFILE/var/log/httpd/yourdomain.comaccess_log*http://www.yourdomain.comUNCOMPRESS*.gz,*.Z"gzipcd"SUBTYPE*.gz,*.Z#OUTFILE/home/user1/public_html/analog/Report.html#HOSTNAME"YourDomain.com"HOSTURLhttp://www.yourdomain.com

    ....

    ...

    ..

    REQINCLUDEpages#RequestpagestatsonlyALLONLANGUAGEUSENGLISH

    Onecanviewthesettingswhichbeusedwithyourconfigurationfile(alsogoodfordebugging):analogsettings

    MakeAnalogimagesavailabletotheusersreport:lns/usr/share/analog/images/*/home/user1/public_html/analog

    Logfilelocation:

    RedHat/Fedora:/var/log/httpd/Ubuntu/Debian:/var/log/apache2/

    TheDirectiveALLONturnsonallofthefollowing:

    AnalogDirective DescriptionMONTHLYON onelineforeachmonthWEEKLYON onelineforeachweekDAILYREPON onelineforeachdayDAILYSUMON onelineforeachdayoftheweekHOURLYREPON onelineforeachhourofthedayGENERALON theGeneralSummaryatthetopREQUESTON whichfileswererequestedFAILUREON whichfileswerenotfound

    DIRECTORYON DirectoryReportHOSTON whichcomputersrequestedfilesORGANISATIONON whichorganisationstheywerefromDOMAINON whichcountriestheywereinREFERRERON wherepeoplefollowedlinksfromFAILREFON wherepeoplefollowedbrokenlinksfromSEARCHQUERYON thephrasesandwordstheyused...

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 11/33

    SEARCHWORDON ...tofindyoufromsearchenginesBROWSERSUMON whichbrowsertypespeoplewereusingOSREPON andwhichoperatingsystemsFILETYPEON typesoffilerequestedSIZEON sizesoffilesrequestedSTATUSON numberofeachtypeofsuccessandfailure

    Cronjobtohandlemultipledomains:/etc/cron.daily/analog

    #!/bin/shcp/opt/etc/analogdomain1.com.cfg/etc/analog.cfg/usr/bin/analogcp/opt/etc/analogdomain2.com.cfg/etc/analog.cfg/usr/bin/analog

    ...

    Links:

    AnaloghomepageAnalogcommandreference

    MeasuringWebServerPerformance:

    SeetheYoLinux.comwebserverbenchmarkingtutorial.

    FTPdandFTPuseraccountconfiguration:

    ManyFTPprogramsexist.Thisexamplecoversthepopularvsftpd(RedHatdefault9.0,FedoraCore,Suse)andwuftpd(WashingtonUniversity)programwhichcomesstandardwithRedHat(lastshippedwithRedHat8.0butcanbeinstalledonanyLinuxsystem).(RPM:wuftpd)ThereareotherFTPprogramsincludingproFtpd(supportsLDAPauthentication,Apachelikedirectives,fullfeaturedftpserversoftware),bftpd,pureftpd(freeBSDandoptionalonSuse),etc...

    ForhostileenvironmentssetupachrootedenvironmentforansftpencryptedconnectionandthersshrestrictedshellforOpenSSH.SeetheYoLinux.cominternetsecuritytutorialforLinuxsftpandrsshconfiguration

    AlsoseethepreferredchrootedsftpconfigurationforOpenSSH4.9+

    FTPdandSELinux:ToallowFTPddaemonaccessandFTPaccesstousershomedirectories:

    setseboolPallow_ftpd_full_access=1Otherwiseyouwillgetanerrorin/var/log/messages:SELinuxispreventingtheftpdaemonfromwritingfilesoutsidethehomedirectory(./public_html).setseboolPftp_home_dir1

    Followwiththecommandservicevsftpdrestart

    FTPdconfigurationtutorials:

    #vsFTPd:Configuration#WUFTPd:Configuration#FTPClients:Links

    vsFTPdandFTPuseraccountconfiguration:

    ThevsFTPdftpserverwasfirstmadeavailableinRedHat9.0.IthasbeenadoptedbySuseandOpenBSDaswell.ThisiscurrentlytherecomendedFTPdaemonforuseonFTPservers.

    Enablevsftpd:

    RedHat/FedoraCore/CentOS:VsFTPdisastandaloneserviceandbythedefaultFedoraCoreinstallation,notcontrolledbyxinetdasisthewuftpddefaultinstallation.Thusstartservice:servicevsftpdstart(or:/etc/init.d/vsftpdstart)Configurevsftpdtostartuponsystemboot:chkconfigaddvsftpd

    SuSE:Bydefault,thevsftpdisanxinetdcontrolledservice.ToenableFTPserverserviceseditthefile/etc/xinetd.d/vsftpdandchange:disable=yesto:disable=noRestartthexinetddaemon:/etc/init.d/xinetdrestartNote:vsftpdcanalsoberunasastandaloneservicetoachieveafasterresponsetime.

    Ubuntu(dapper/hardy/natty)/Debian:Install:aptgetinstallvsftpdVsFTPdisastandaloneservice.

    Start:/etc/init.d/vsftpdstart

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 12/33

    Stop:/etc/init.d/vsftpdstopRestart:/etc/init.d/vsftpdrestart(Usethiscommandaftermakingconfigurationfilechanges)

    Formoreonstarting/stopping/configuringLinuxservices,seetheYoLinuxtutorialontheLinuxinitprocessandserviceactivation.

    Configurationfiles:

    vsFTPdconfigurationfile:FedoraCore/RedHat:/etc/vsftpd/vsftpd.confS.u.S.e./Ubuntu(dapper/hardy/natty)/Debian:/etc/vsftpd.conf

    DefaultforFedoraCore3:

    anonymous_enable=YESAnonymousFTPallowedbydefaultifyoucommentthisout.Defaultdirectoryused:/var/ftp

    local_enable=YESUncommentthistoallowlocaluserstologinwithFTP.MustalsosetSELinuxboolean:setseboolPftp_home_dir1

    write_enable=YESUncommentthistoenableanyformofFTPwriteoruploadcommand.

    local_umask=022Defaultis077.Umask022isusedbymostotherftpd's.

    #anon_upload_enable=YESUncommenttoallowtheanonymousFTPusertouploadfiles.Requirestheaboveglobalwriteenabled.Directorymustalsobewritablebyuser.#anon_mkdir_write_enable=YESUncommentthistoallowtheanonymousFTPusertobeabletocreatenewdirectories.

    dirmessage_enable=YESActivatedirectorymessages.Messagesgiventoremoteuserswhentheyentercertaindirectoriesxferlog_enable=YESActivateloggingofuploads/downloads.

    connect_from_port_20=YESPORTtransferconnectionsoriginatefromport20(ftpdata)

    #chown_uploads=YESUploadedanonymousfilessettoaspecifiedowner.(notroot)#chown_username=whoever

    #xferlog_file=/var/log/vsftpd.logSpecifylogfileexplicitly.Defaultis/var/log/vsftpd.log

    xferlog_std_format=YESOutputtologfileinstandardftpdxferlogformat

    #idle_session_timeout=600Settimingoutforanidlesession.

    #data_connection_timeout=120Settimingoutforanidledataconnection.Port20

    #nopriv_user=ftpsecureRunftpserverasanisolatedandunprivilegeduser.

    #EnablethisandtheserverwillrecogniseasynchronousABORrequests.Not#recommendedforsecurity(thecodeisnontrivial).Notenablingit,mayconfuseolderFTPclients.#async_abor_enable=YES

    #ascii_upload_enable=YESImproveperformancebydisablingASCIImode.Disablescommand"ascii"and"SIZE/big/file".#ascii_download_enable=YES

    #ftpd_banner=WelcometoYoLinuxCustomizetheloginbannerstring.

    #deny_email_enable=YESDisallowspecifiedanonymousemailaddresses.UsedtocombatcertainDoSattacks.#banned_email_file=/etc/vsftpd.banned_emails(Ubuntudefault.RedHat:/etc/vsftpd/banned_emails)

    #chroot_list_enable=YESListuserschroot()'dtotheirhomedirectory.If"NO",listusersnotchroot()'d.#chroot_list_file=/etc/vsftpd.chroot_list(Ubuntudefault.RedHat:/etc/vsftpd/chroot_list)

    ls_recurse_enable=YESAllow"lsR"recursivedirectorylist.Defaultisdisabled.

    pam_service_name=vsftpd

    userlist_enable=YES(UbuntuDefault)Denyusersspecifiedinfile/etc/vsftpd.user_listIf"userlist_enable=NO"thenallowspecifiedusers.RedHat:/etc/vsftpd/user_list#deny_email_enable=YESDisallowspecifiedanonymousemailaddresses.UsedtocombatcertainDoSattacks.

    listen=YESEnableforstandalonemodeasopposedtoanxinetdservice.MustsetSELinuxboolean:setseboolPftpd_is_daemon1tcp_wrappers=YES

    RestarttheFTPserviceiftheconfigfileischanged:servicevsftpdrestart(or:/etc/init.d/vsftpdrestart)

    [PotentialPitfall]:vsftpdoesNOTsupportcommentsonthesamelineasadirective.i.e.:

    directive=XXX#comment

    vsftp.confmanpage

    Specifylistoflocaluserschrootedtotheirhomedirectories:RedHat:/etc/vsftpd/vsftpd/chroot_listUbuntu:/etc/vsftpd/vsftpd.chroot_list

    (Requires:chroot_list_enable=NO)

    user1

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 13/33

    user2...usern

    Ifuserlist_enable=YES,thenspecifyusersnottobechroot'd..

    Specifylistofusers:RedHat:/etc/vsftpd/user_listUbuntu:/etc/vsftpd.user_list

    (Denylistofusersrequires:userlist_enable=YES)AlsoseePAMconfigurationbelow.

    rootbindaemonadmlpsyncshutdownhalt...

    Ifuserlist_enable=NO,thenspecifyvalidusers.

    PAMconfigurationfileFedoraCore3:/etc/pam.d/vsftpd

    #%PAM1.0authrequiredpam_listfile.soitem=usersense=denyfile=/etc/vsftpd.ftpusersonerr=succeedauthrequiredpam_stack.soservice=systemauthauthrequiredpam_shells.soaccountrequiredpam_stack.soservice=systemauthsessionrequiredpam_stack.soservice=systemauth

    ThiscausesPAMtocheck/etc/vsftpd.ftpusersforuserswhoaredenied.Thisduplicates/etc/vsftpd.user_list.SpeciyuserinbothfilesasPAMisindependentofvsftpdconfiguration.

    PAMauthenticationconfigurationfile:ftpusersRedHat:/etc/vsftpd/ftpusersUbuntu:/etc/vsftpd.ftpusers

    rootbindaemonadmlpsyncshutdownhalt.........user6Userstodenyuser8......

    Logrotateconfigurationfile:/etc/logrotate.d/vsftpd.log

    /var/log/xferlog{#ftpddoesn'thandleSIGHUPproperlynocompressmissingok}

    SamplevsFTPdconfigurations:

    AnonymousdownloadFTPserverconfiguration:/etc/vsftpd/vsftpd.conf

    #Accessrightsanonymous_enable=YESTurnonanonymousFTPchown_uploads=YESUploadedfilesownedbyanassigneduserchown_username=ftpUploadedfilesownedbythisassigneduserlocal_enable=NOwrite_enable=NONouploadoffilessystemchangesallowedanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO#Securityanon_world_readable_only=YESconnect_from_port_20=YES

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 14/33

    force_dot_files=NOguest_enable=NOhide_ids=YESpasv_min_port=50000pasv_max_port=60000#Featuresxferlog_enable=YESls_recurse_enable=NOascii_download_enable=NOasync_abor_enable=YES#Performanceone_process_model=NOidle_session_timeout=120data_connection_timeout=300accept_timeout=60connect_timeout=60max_per_ip=4anon_max_rate=50000

    pam_service_name=vsftpduserlist_enable=YES#enableforstandalonemodelisten=YEStcp_wrappers=YES

    Anonymousloginsusetheloginname"anonymous"andthentheusersuppliestheiremailaddressasapassword.Anypasswordwillbeaccepted.Usedtoallowthepublictodownloadfilesfromanftpserver.Generally,nouploadispermitted.

    Webhostingconfiguration:/etc/vsftpd/vsftpd.conf

    #Accessrightsanonymous_enable=NOlocal_enable=YESAllowuserstoftptotheirhomedirectorieswrite_enable=YESAllowuserstoSTOR,DELE,RNFR,RNTO,MKD,RMD,APPEandSITElocal_umask=022#Securityconnect_from_port_20=YESforce_dot_files=NOguest_enable=NODon'tremapusernameftpd_banner=WelcometoSuperDuperHostingCustomizetheloginbannerstring.chroot_local_user=YESLimitusertobrowsetheirowndirectoryonlychroot_list_enable=YESEnablelistofsystem/poweruserschroot_list_file=/etc/vsftpd.chroot_listActuallistofsystem/powerusershide_ids=YESpasv_min_port=50000pasv_max_port=60000#Featuresxferlog_enable=YESls_recurse_enable=NOascii_download_enable=NOasync_abor_enable=YESdirmessage_enable=YESMessagegreetingheldinfile.messageorspecifywithmessage_file=...#Performanceone_process_model=NOidle_session_timeout=120data_connection_timeout=300accept_timeout=60connect_timeout=60max_per_ip=4#pam_service_name=vsftpduserlist_enable=YES#enableforstandalonemodelisten=YEStcp_wrappers=YES

    Specifylistoflocaluserschrootedtotheirhomedirectories:/etc/vsftpd/vsftpd.chroot_listUbuntutypically:/etc/vsftpd.chroot_list(Requires:chroot_list_enable=NO)

    user1user2...usern

    Ifuserlist_enable=YES,thenspecifyusersnottobechroot'd..

    [PotentialPitfall]:Mispellingadirectivewillcausevsftpdtofailwithlittlewarning.

    File:.message

    ANOTETOUSERSUPLOADINGFILES:Filenamesmayconsistofletters(az,AZ),numbers(09),anunderscore("_"),dash("")orperiod(".")only.Thefilenamemaynotbeginwithaperiodordash.

    Testifvsftpislistening:netstata|grepftp

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 15/33

    [root]#netstata|grepftptcp00*:ftp*:*LISTEN

    Links:

    vsFTPdHomePageSampleconfigurationsvsftp.confManpage

    WUFTPdandFTPuseraccountconfiguration:

    ThewuftpdFTPservercanbedownloaded(binaryorsource)fromhttp://www.wfms.org/wuftpd/(atonetime:http://wuftpd.org).

    TherearethreekindsofFTPloginsthatwuftpdprovides:

    anonymousFTPonelogsinwiththeusername'anonymous'realFTPloginwitharealusernameandpasswordandhasaccesstotheentirediskstructure.guestFTPonelogsinwitharealusernameandpassword,buttheuserischroot'edtohishomedirectoryandcannotescapefromit.Theyareconstrainedtotheirhomedirectorywhichalsomeansthattheydon'thaveaccessto/bin/lsandothercommandsontheserver.Thusalocalminimalistenvironmentmustbesetup.

    Thistutorialcovers"guest"FTPconfiguration.

    Thefile/etc/ftpaccesscontrolstheconfigurationofftp.

    #Don'tallowsystemaccountstologinoverftpdenyuid%99%65534denygid%99%65534

    classallreal,guest*[email protected]

    readmeREADME*loginreadmeREADME*cwd=*message/welcome.msgloginmessage.messagecwd=*

    compressyesalltaryesallchmodnoguest,anonymousdeletenoanonymous#deletefilespermission?overwritenoanonymous#overwritefilespermission?renamenoanonymous#renamefilespermission?deleteyesguest#deletefilespermission?overwriteyesguest#overwritefilespermission?renameyesguest#renamefilespermission?umasknoguest#umaskpermission?

    logtransfersanonymous,realinbound,outbound

    shutdown/etc/shutmsg

    passwdcheckrfc822warn

    #Mustalsocreatemessagefile/etc/pathmsgoftheguestdirectory.#Inthiscaseitrefersto/home/user1/public_html/etc/pathmsg.pathfilterguest/etc/pathmsg^[AZaz09_\.]*$^\.^limitall2noretrievepasswd.htaccesscoreDonotallowuserstodownloadfilesofthesenameslimittime*20bytelimitin5000Limitfilesizeguestuser*Systemuserdefaultcategorizedasa"guest".A"real"usercanroamthesystem.Guestuserischrooted.realgroupregularuserxregularuseryAssignrealuserprivilegestomembersofgroups"regularuserx"and"regularusery".VisibilityofthewholefilesystemandsubjecttoregularUNIXfilepermissionsrealuseruser4Assignrealuserprivilegestouserid"user4".

    restricteduiduser1user2user3RestrictsFTPtothespecifieddirectoriesguestroot/home/user1/public_htmluser1guestroot/home/user2/public_htmluser2guestroot/home/user3/public_htmluser3

    Note:

    user1,user2anduser3refertologinaccounts.Usetheappropriateloginname.TheaboveconfigurationdisablesanonymousFTPwhichallowsanyonetoperformanFTPloginwiththeidanonymousandanemailaddressasapassword.ToenableanonymousFTP,changetheclassdirectiveto:

    classallreal,guest,anonymous*

    GUIFTPconfigurationtools:/usr/bin/kwuftpd/sbin/linuxconf

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 16/33

    (Note:LinuxconfisnolongerincludedwithRedHat7.3andlater)RedHatLinuxassignsusersauseridandgroupidwhichisthesame.Thismeansthatitdoesnotmatterifyouusearealuserorrealgrouptheywillactthesame.RedHatLinux7.1andlaterusesthexinetdaemontomanageftpconnections.Thusxinetdmustberunningandconfiguredtosupportftp.Theconfigurationfileis/etc/xinetd.d/wuftpd.Thecommandchkconfigwuftpdonwillmaketheftpserveravailable.Seexinetconfigurationinfo.Allowoverideofdenyuidand/ordenygid:

    allowuidusertoallowallowgidgrouptoallow

    Optionalconfiguration:CreateagroupftpchrootAdduserstothisgroupUsedirective:guestgroupftpchroot

    [PotentialPitfall]:Flakeyftpbehavior,timeouts,etc??FTPworksbestwithnameresolutionofthecomputeritiscommunicatingwith.Thisrequiresproper/etc/resolve.confandnameserver(bind)configuration,/etc/hostsorNIS/NFSconfiguration.

    File/home/user1/public_html/etc/pathmsg:

    ANOTETOUSERSUPLOADINGFILES:Filenamesmayconsistofletters(az,AZ),numbers(09),anunderscore("_"),dash("")orperiod(".")only.Thefilenamemaynotbeginwithaperiodordash.Youhavetriedtouploadafilewithaninappropriatename.

    Thewholepointofthechrootdirectoryistomaketheuser'shomedirectoryappeartobetherootofthefilesystem(/)soonecouldnotwanderaroundthefilesystem.Configurationof/etc/ftpaccesswilllimittheusertotheirrespectivedirectorieswhilestillofferingaccessto/bin/lsandothersystemcommandsusedinFTPoperation.

    Asroot:

    cd/home/user1mkdirpublic_htmlchown$1.$1public_htmltouch.rhostsSecurityprotectionchmodugoxrw.rhosts

    ManPages:

    Server:

    ftpdInternetFileTransferProtocolserver

    FileFormats:

    /etc/ftpaccessConfigurationfileforftpd/etc/ftpserversftpdvirtualhostingconfigurationfile.(optional)/etc/ftphostsallowordenyaccesstocertainaccountsfromvarioushosts.(optional)/etc/ftpconversionsftpdconversionsdatabase(fortarandcompression)/var/log/xferlogFTPserverlogfileftpFileTransferClientprogram

    Configurationfiles:(RH8.0+)

    PAMconfigurationfile:/etc/pam.d/ftp

    #%PAM1.0authrequiredpam_listfile.soitem=usersense=denyfile=/etc/ftpusersonerr=succeedauthrequiredpam_stack.soservice=systemauthauthrequiredpam_shells.soaccountrequiredpam_stack.soservice=systemauthsessionrequiredpam_stack.soservice=systemauth

    Xinetdconfigurationfile:/etc/xinetd.d/wuftpd

    serviceftp{disable=nosocket_type=streamwait=nouser=rootserver=/usr/sbin/in.ftpdserver_args=la

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 17/33

    log_on_success+=DURATIONUSERIDlog_on_failure+=USERIDnice=10}

    Note:wuFTPdiscontrolledbyxinetdandnotastandaloneservicelikevsFTPd.

    Logrotateconfigurationfile:/etc/logrotate.d/ftpd

    /var/log/xferlog{nocompress}

    Moreinformation:

    WUFTPDreleasedkftpbenchFTPbenchmarkprogramtogiveyouanideaastohowmanysimultaneousdialupclientsaservercansupport.FTPandtextfiletypeconversions:EndOfLineCharactersbyPeterBenjamin

    ManpagesonrelatedFTPcommandsandfiles:

    chrootRunwithaspecialrootdirectoryftpcountShownumberofconcurrentusers.ftpshutclosedowntheftpserversatagiventimeftprestartRestartpreviouslyshutdownftpserversftpwhoshowcurrentprocessinformationforeachftpuserprivatepwChangeWUFTPDGroupAccessFileInformation(admincommand)

    OtherFTPdaemons:

    CrushFTPJava/crossplatformWS_FTP

    FTPPitfalls:

    Ifyougetthefollowingerror:

    ftp>ls227EnteringPassiveMode(208,188,34,109,208,89)ftp:connect:Noroutetohost

    ThismeansyouhavefirewallissuesmostprobablyontheFTPserveritself.Startbyremovingthefirewall"iptables"rules:iptablesFAddrulesuntilyoudiscoverwhatiscausingtheproblem.

    Passivemode:

    Passivemodecanalsohelponepasttherules:

    ftp>passivePassivemodeon.

    Thistogglespassivemodeonandoff.Whenon,FTPwillbelimitedtoportsspecifiedinthevsftpdconfigurationfile:vsftpd.confwiththeparameterspasv_min_portandpasv_max_port

    Firewallconnectiontrackingmodule:

    #cat/etc/sysconfig/iptablesconfig|grepip_nat_ftpIPTABLES_MODULES="ip_conntrack_ftp"

    NATfirewallmodules:

    Youcanalsotryaddingip_nat_ftptothelistofautoloadedmodules:(Thiswillalsoloadthedependancy:ip_conntrack_ftp.)

    #cat/etc/sysconfig/iptablesconfig|grepip_nat_ftpIPTABLES_MODULES="ip_nat_ftp"

    Thenrestartthefirewall:/etc/init.d/iptablescondrestart

    FTPwillchangeportsduringuse.Theip_conntrack_ftpmodulewillconsidereachconnection"RELATED".IfiptablesallowsRELATEDandESTABLISHEDconnectionsthenFTPwillwork.i.e.rule:/etc/sysconfig/iptables

    AINPUTmstatestateESTABLISHED,RELATEDjACCEPT

    FTPfailsbecauseitcannotchangetotheusershomedirectory:

    Error:

    [user1@nodex~]$ftpnode.domain.comConnectedtoXXX.XXX.XXX.XXX.530PleaseloginwithUSERandPASS.

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 18/33

    530PleaseloginwithUSERandPASS.KERBEROS_V4rejectedasanauthenticationtypeName(XXX.XXX.XXX.XXX:user1):331Pleasespecifythepassword.Password:500OOPS:cannotchangedirectory:/home/user1Loginfailed.ftp>bye

    ThisisoftenaresultofSELinuxpreventingthevsftpdprocessfromaccesingtheuser'shomedirectory.Asroot,grantaccesswiththefollowingcommand:setseboolPftp_home_dir1Followedby:servicevsftpdrestart

    TestyourvsftpdSELinuxsettings:getseboola|grepftp

    allow_ftpd_anon_write>offallow_ftpd_full_access>offallow_ftpd_use_cifs>offallow_ftpd_use_nfs>offallow_tftp_anon_write>offftp_home_dir>onftpd_disable_trans>offftpd_is_daemon>onhttpd_enable_ftp_server>offtftpd_disable_trans>off

    FTPdSELinuxmanpage

    FTPLinuxclients:

    gftp:GUIGTK+Multithreadedclient.Filetransferdirectorybrowsingandcompare.Multipleprotocols:FTP,FTPS(controlconnectiononly),HTTP,HTTPS,SSHandFSPprotocols.Proxysupport.ComeswithRedHat/FedoraCore.KFTPgrabber:GUIKDEbasedclient.simultaneousFTPsessionsinseparatetabs.Abilitytolimituploadanddownloadspeed.kbear:GUIKDEbasedclient.Connecttomultipleservers,transferfiles,directorybrowsing,filecontentbrowsing.ComeswithS.U.S.e.Linux.ftp:(/usr/kerberos/bin/ftp)kerberosenabledconsoleftpclient.(RPMpackageFC3:krb5workstation)

    Basicusersecurity:

    Whenhostingwebsites,thereisnoneedtograntashellaccountwhichonlyallowstheservertohavemorepotentialsecurityholes.CurrentsystemscanspecifytheusertohaveonlyFTPaccesswithnoshellbygrantingthemthe"shell"/sbin/nologinprovidedwiththesystemorthe"ftponly"shelldescribedbelow.Theshellcanbespecifiedinthefile/etc/passwdofwhencretingauserwiththecommandaddusers/sbin/nologinuserid

    [PotentialPitfall]:RedHat7.3serverwithwuftpserver2.6.25doesnotsupportthisconfigurationtopreventshellaccess.Itrequiresuserstohavearealusershell.i.e./bin/bashItworksgreatinolderandcurrentRedHatversions.Ifitworksforyou,useit,asitismoresecuretodenytheusershellaccess.Youcanalwaysdenytelnetaccess.YoushouldNOTbeusingthisproblemriddenversionofftpd.Usethelatestwuftpd2.6.211whichsupportsuserswithshell/opt/bin/ftponly

    [PotentialPitfall]:UbuntuDapper/HardySettingtheshelltothepreconfiguredshell/bin/falsewillNOTallowvsftpaccess.Onemustcreatetheshell"ftponly"asdefinedbelowtoallowvsftpaccesswithnoshell.

    1. DisableremotetelnetloginaccessallowingFTPaccessonly:

    Changetheshellfortheuserin/etc/passwdfrom/bin/bashtobe/opt/bin/ftponly.

    ...user1:x:502:503::/home/user1:/opt/bin/ftponly...

    Createfile:/opt/bin/ftponly.Protectionsettorwxrxrx1rootrootwiththecommand:chmodugo+x/opt/bin/ftponlyContentsoffile:

    01 #!/bin/sh02 #03 #ftponlyshell04 #05 trap"/bin/echoSorry;exit0"1234567101506 #07 [email protected] #System=`/bin/hostname`@`/bin/domainname`09 #10 /bin/echo11 /bin/echo"********************************************************************"12 /bin/echo"YouareNOTallowedinteractiveaccess."13 /bin/echo14 /bin/echo"Useraccountsarerestrictedtoftpandwebaccess."15 /bin/echo

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 19/33

    Thelaststepistoaddthistothelistofvalidshellsonthesystem.Addtheline/opt/bin/ftponlyto/etc/shells.

    Samplefilecontents:/etc/shells

    /bin/bash/bin/bash1/bin/tcsh/bin/csh/opt/bin/ftponly

    Seemanpageon/etc/shells.

    Analternativewouldbetoassigntheshell/bin/falseor/sbin/nologinwhichbecameavailableinlaterreleasesofRedHat,DebianandUbuntu.Inthiscasetheshell/bin/falseor/sbin/nologinwouldhavetobeaddedto/etc/shellstoallowthemtobeusedasavalidshellforFTPwhiledisablingsshortelnetaccess.

    2. Setfilequotastolimituseraccount.

    FormoreonLinuxsecurityseethe:YoLinux.comInternetwebsiteLinuxserversecuritytutorial

    DomainNameServer(DNS)configurationusingBindversion8or9:

    TwoofthemostpopularwaystoconfiguretheprogramBind(BerkeleyInternetDomainsoftware)toperformDNSservicesisintheroleof(1)ISPor(2)WebHost.

    1. InanISPconfigurationforclients(websurfers)conectedtotheinternet,theDNSservermustresolveIPaddressesforanyURLtheuserwishestovisit.(SeeDNScachingserver)

    2. Inapurelywebhostingconfiguration,BindwillonlyresolvefortheIPaddressesofthedomainswhicharebeinghosted.Thisistheconfigurationwhichwillbediscussedandisoftencalledan"AuthoritativeonlyNameserver".

    WhenresolvingIPaddressesforadomain,Internicisexpectinga"Primary"anda"Secondary"DNSnameserver.(SometimescalledMasterandSlave)EachDNSnameserverrequiresthefile/etc/named.confandthefilesitpointsto.ThisistypicallytwoseparatecomputersystemshostedontwodifferentIPaddresses.ItisnotnecesarythattheLinuxserversbededicatedtoDNSastheymayrunawebserver,mailserver,etc.

    NoteonBindversions:RedHatversions6.xusedBindversion8.Release7.1ofRedHatbeganusingBindversion9andtheGUIconfigurationwasintroducedforthoseofyouthatlikeaprettypointandclickinterfaceforconfiguration.

    InstallationPackages:

    RedHat/FedoraCore/CentOS:bind,bindchroot,bindlibs,bindutils,systemconfigbindbindchroot:Securityjailforoperationofbind.bindutils:Utilitycommandslikenslookup,host,digsystemconfigbind:GUIconfigtoolsystemconfigbindandrelatedconfigurationfiles(/etc/security/console.apps/bindconf).cachingnameserver:Wewillnotbecoveringthisasitisnotrequiredforwebhosting.ThisisusedbyinternetproviderssotheirclientscancachetheDNSentriesofthesitestheyarevisiting.

    Ubuntu(dapper/hardy/natty)/Debian:bind9

    Configurationfiles:

    RedHat/Fedora/CentOS:File Description Directory ChrootedDirectory

    named.conf Primary/SecondaryDNSserverconfiguration.(Seedefaultfile/usr/share/doc/bind9.X.X/sample/etc/named.conf)

    /etc/ /var/named/chroot/etc/

    named.root.hints Configurationforrecursiveservice.Requiredforallzones.(Seedefaultfile/usr/share/doc/bind9.X.X/sample/etc/named.root.hints)

    /etc/ /var/named/chroot/etc/

    named RedHatsystemvariables. /etc/sysconfig/ nochangerndc.key Primary/SecondaryDNSserverconfiguration. /etc/ /var/named/chroot/etc/Zonefiles Configurationfilesforeachdomain.Createthisfiletoresolvehostnameinternet

    queriesi.e.defineIPaddressofweb(www)andmailserversinthedomain./var/named/ /var/named/chroot/var/named/

    Debian/Ubuntu:File Description Directory ChrootedDirectory

    named.confnamed.conf.optionsnamed.conf.local

    Primary/SecondaryDNSserverconfiguration. /etc/bind/ /var/bind/chroot/etc/bind/

    rndc.key Primary/SecondaryDNSserverconfiguration. /etc/ /var/bind/chroot/etc/

    16 /bin/echo"Directquestionsconcerningthispolicyto$Admin."17 /bin/echo"********************************************************************"

    18 /bin/echo19 #20 #C'ya21 #22 exit0

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 20/33

    Zonefiles Configurationfilesforeachdomain. /var/bind/data/ /var/bind/chroot/var/bind/data/

    Primaryserver(master):

    File:named.conf

    RedHat/FedoraCore/CentOS:/etc/named.conf(chrootdir:/var/named/chroot/etc/named.conf)and/etc/sysconfig/namedforsystemvariables.Ubuntu/Debian:/etc/bind/named.confPlacelocaldefinitionsin/etc/bind/named.conf.optionsand/etc/bind/named.conf.local

    Simpleexample:(noviews)

    options{Ubuntustoresoptionsin/etc/bind/named.conf.optionsversion"Bind";Don'tdiscloserealversiontohackersdirectory"/var/named";Specifiedsorelativepathnamescanbeused.Fullpathnamesstillallowed.allowtransfer{XXX.XXX.XXX.XXX;};IPaddressofsecondaryDNSrecursionno;authnxdomainno;conformtoRFC1035.(default)fetchglueno;Bind8only!Notusedbyversion9};

    zone"localhost"{typemaster;file"/etc/bind/db.local";};zone"0.0.127.inaddr.arpa"{typemaster;file"/etc/bind/db.127";};

    zone"yourdomain.com"{Ubuntuseparatesthezonedefinitionsinto/etc/bind/named.conf.localtypemaster;Specifymaster,slave,forwardorhintfile"data/named.yourdomain.com";notifyyes;slaveserversarenotifiedwhenthezoneisupdated.allowupdate{none;};denyupdatesfromotherhosts(default:none)allowquery{any;};allowclientstoquerythisserver(default:any)};zone"yourdomain2.com"{typemaster;file"data/named.yourdomain2.com";notifyyes;};

    Note:

    Theomissionofzone".".Requiredifprovidingarecursiveservice.Ubuntuincludestheseparatedfileofzonedirectivesusingthedirective:include"/etc/bind/named.conf.local";

    BINDViews:TheBINDnamingservicecansupport"views"whichallowvarioussubnetworks(i.e.privateinternalorpublicexternalnetworks)tohaveadifferentdomainnameresolutionresult.

    Ifnoviewsarespecifiedthenusetheconfigurationshownabove.Thematchupbetweenthe"view"andtheviewclientwhichreceivestheDNSinformationisspecifiedbythematchclientsstatement.Ifevenoneviewisspecified,thenALLzonesMUSTbeassociatedwitha"view".Bind9allowsforviewswhichallowdifferentzonestobeservedtodifferenttypesofclients,localhost,privatenetworksandpublicnetworks.Thismapstothethreeviewnames"localhost_resolver","internal"and"external":

    localhost_resolver:Supportsnameresolutionforthesystem(localhost)usingBIND.Supportforuseofbindalsohastobeconfiguredin/etc/nsswitch.confinternal:UserspecifiedLocalAreaNetwork(LAN).IfnotusedtosupportalocalprivateLAN,remove(orcommentout)thisview.external:Thegeneralpublicinternetdefinedasclient"any".

    Ifyouareonlysettingupacachingnameserver,thenonlyspecifytheview"localhost_resolver"(deleteallotherviews).InordertosupportaDNSforinternetdomainsusingviews,onewillhavetoconfigurean"external"view

    TypicalRedHatEnterprise5example:(Bind9.3.4withthree"views")

    options{directory"/var/named";//thedefaultdumpfile"data/cache_dump.db";statisticsfile"data/named_stats.txt";memstatisticsfile"data/named_mem_stats.txt";

    };logging{//Bydefault,SELinuxpolicydoesnotallownamedtomodifythe/var/named//directory,soputthedefaultdebuglogfileindata/:channeldefault_debug{file"data/named.run";severitydynamic;};};view"localhost_resolver"{//Thisviewsetsupnamedtobealocalhostresolver(cachingonlynameserver).//Ifallyouwantisacachingonlynameserver,thenyouneedonlydefinethisview:matchclients{localhost;};...

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 21/33

    };view"internal"{//Thisviewwillcontainzonesyouwanttoserveonlyto"internal"clients//thatconnectviayourdirectlyattachedLANinterfaces"localnets".//ForlocalprivateLAN.Notcoveredinthistutorial.//DeletethisviewifwebhostingwithnolocalLAN.matchclients{localnets;};...};keyddns_key{algorithmhmacmd5;secret"use/usr/sbin/dnskeygentogenerateTSIGkeys";};view"external"{//Thisviewwillcontainzonesyouwanttoserveonlyto"external"//publicinternetclients.Thisiscoveredbelow.matchclients{any;};.....};

    Defaultconfigurationfiles:RedHatmaysupplythedefaultconfigurationin:/usr/share/doc/bind9.X.X/sample/etc/named.conf

    cp/usr/share/doc/bind9.X.X/sample/etc/named.conf/var/named/chroot/etccp/usr/share/doc/bind9.X.X/sample/etc/named.root.hints/var/named/chroot/etcchconusystem_urobject_rtnamed_conf_t/var/named/chroot/etc/named.conf/var/named/chroot/etc/named.root.hints

    view"localhost_resolver":IfsupportingacachingDNSserver(notrequiredtosupportawebdomain)youwillalsoneedthefiles:

    cp/usr/share/doc/bind9.X.X/sample/etc/named.rfc1912.zones/var/named/chroot/etccp/usr/share/doc/bind9.X.X/sample/var/named/localdomain.zones/var/named/chroot/var/namedalsofrom/usr/share/doc/bind9.X.X/sample/var/named/:localhost.zones,named.local,named.zero,named.broadcast,named.ip6.local,named.root

    view"external":(master)details

    view"external"{/*Thisviewwillcontainzonesyouwanttoserveonlyto"external"clients*thathaveaddressesthatarenotonyourdirectlyattachedLANinterfacesubnets:*/matchclients{any;};matchdestinations{any;};allowtransfer{XXX.XXX.XXX.XXX;};IPaddressofsecondaryDNS

    recursionno;//you'dprobablywanttodenyrecursiontoexternalclients,soyoudon't//endupprovidingfreeDNSservicetoalltakers

    //allviewsmustcontaintheroothintszone:include"/etc/named.root.hints";

    //Theseareyour"authoritative"externalzones,andwouldprobably//containentriesforjustyourwebandmailservers:

    zone"yourdomain.com"{typemaster;file"/var/named/data/external/named.yourdomain.com";notifyyes;allowupdate{none;};};//YoucanalsoaddthezonesasaseparatefileliketheydoinUbuntubyaddingthefollowingstatementinclude"/etc/named.conf.local";};

    DNSkey:

    Usethefollowingcommand/usr/sbin/dnskeygentocreateakey.Addthiskeytothe"secret"statementasfollows:

    keyddns_key{algorithmhmacmd5;secret"XlYKYLF5Y7YOYFFFY6YiYYXyFFFFBYYYYFfYYYJiYFYFYYLVrnrWrrrqrrrq";};

    ManPages:

    named.conf

    ForwardZoneFile:/var/named/named.yourdomain.com

    RedHat9/CentOS3:/var/named/named.yourdomain.com

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 22/33

    RedHatEL4/5,Fedora3+,CentOS4/5:[Chrooted]/var/named/chroot/var/named/data/named.yourdomain.comRedHatEL4/5,Fedora3+,CentOS4/5:/var/named/data/named.yourdomain.comUbuntu/Debian:/etc/bind/data/named.yourdomain.com

    $TTL604800Bind9(andsomeofthelaterversionsofBind8)requires$TTLstatement.Measuredinseconds.Thisvalueis7days.yourdomain.com.INSOAns1.yourdomain.com.hostmaster.yourdomain.com.(2000021600;serialManypeopleuseyear+month+day+integerasasystem.86400;refreshHowoftensecondaryservers(inseconds)shouldcheckinforchangesinserialnumber.(86400sec=24hrs)7200;retryHowlongsecondaryservershouldwaitforaretryifcontactfailed.1209600;expireSecondaryservertopurgeinfoafterthislengthoftime.86400);default_ttlHowlongdataisheldincachebyremoteservers.INAXXX.XXX.XXX.XXXNotethatthisisthedefaultIPaddressofthedomain.IputthewebserverIPaddressheresothatdomain.compointstothesameserversaswww.domain.com;;Nameserversforthedomain;INNSns1.yourdomain.com.INNSns2.yourdomain.com.;;Mailserverfordomain;INMX5mailIdentify"mail"asthenodehandlingmailforthedomain.DoNOTspecifyanIPaddress!;;Nodesindomain;node1INAXXX.XXX.XXX.XXXNotethatthisistheIPaddressofnode1ns1INAXXX.XXX.XXX.XXXOptional:Forhostingyourownprimarynameserver.NotethatthisistheIPaddressofns1ns2INAXXX.XXX.XXX.XXXOptional:Forhostingyourownsecondarynameserver.NotethatthisistheIPaddressofns2mailINAXXX.XXX.XXX.XXXIdentifytheIPaddressfornodemail.INMX5XXX.XXX.XXX.XXXIdentifytheIPaddressformailservernamed"mail".;;Aliasestoexistingnodesindomain;wwwINCNAMEnode1Definethewebserver"www"tobenode1.ftpINCNAMEnode1Definetheftpservertobenode1.

    DNSrecordtypesandformat:

    DNSrecord DescriptionandFormat

    SOA StartofAuthority:PrimarydomainserverandcontactinfoNotethatthereisaperiodfollowingtheprimarydomainserverandcontactemail.Notethattheemailaddressisintheformwherethefirstperiodrepresentsthe"@"symboloftheemailaddress.

    yourdomain.cominSOAns1.yourdomain.com.webmaster.yourdomain.com.

    or

    @inSOAns1.yourdomain.com.webmaster.yourdomain.com.

    [PotentialPitfall]:Incorrectspecificationoftheprimarynameservermayresultinthefollowingmessagein/var/log/messages

    viewlocalhost_resolver:receivednotifyforzone'yourdomain.com':notauthoritative

    SOAattribute Descriptionserial Neveruseavaluegreaterthan2147483647fora32bitprocessor.

    Incrementtoahighervaluetoindicateanupdatetotheslaveserver.refresh Timeincrement(seconds)betweenupdatechecksoftheserialnumberwiththeprimaryserverretry Timeelapsedbeforeaslavewillcontacttheprimaryserverifaconnectionfailedexpire TimetillprimaryserverinformationisconsideredinvalidandshouldberefreshedifthereisanewDNSqueryminimum TimeforDNSserversshouldholddomaininformationintheircachebeforepurging

    IN IndicateInternet.NS SpecifytheAuthoratativeNameserversforthedomain.

    A SpecifytheIPaddressassociatedwiththehostname.Format:hostnameINAXXX.XXX.XXX.XXXNotethatinmyexample,nohostnameisspecifiedforthefirstrecord.Thiswilldefinethedefaultforthedomain.

    CNAME Specifyanaliasforthehostname.MX Mailexchangerecord.Specifyaprioritynumberfortheprimaryandbackupmailservers.Thelowestnumberindicatesthedefaultmail

    serverforthedomainPTR UsedtospecifythereverseDNSlookup

    MXrecordsfor3rdpartyoffsitemailservers:

    yourdomain.com.INMX10mail1.offsitemail.com.yourdomain.com.INMX20mail2.offsitemail.com.

    Appendtotheaboveexamplefile.

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 23/33

    Initialconfiguration:NotethatRedHatmaysupplythedefaultzoneconfigurationin:/usr/share/doc/bind9.X.X/sample/var/named/

    cp/usr/share/doc/bind9.X.X/sample/var/named/localhost.zone/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/localdomain.zone/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/named.broadcast/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/named.ip6.local/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/named.zero/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/named.local/var/named/chroot/var/named/data/cp/usr/share/doc/bind9.X.X/sample/var/named/named.root/var/named/chroot/var/named/data/cd/var/named/chroot/var/named/data/chconusystem_urobject_rtnamed_cache_tlocalhost.zonelocaldomain.zonenamed.broadcastnamed.ip6.localnamed.zeronamed.rootnamed.local

    Afilesuffixof"zone"isalsocommoni.e.yourdomain.com.zone

    Secondaryserver(slave):

    File:named.conf

    RedHat/FedoraCore/CentOS:/etc/named.confUbuntu/Debian:/etc/bind/named.confSimpleexamplewithnoviews:

    options{Ubuntustoresoptionsin/etc/bind/named.conf.optionsversion"Bind";Don'tdiscloserealversiontohackersdirectory"/var/named";allowtransfer{none;};Slaveisnottransferingupdatestoanyoneelserecursionno;authnxdomainno;conformtoRFC1035.(default)fetchglueno;Bind8only!Notusedbyversion9};zone"localhost"{typemaster;file"/etc/bind/db.local";Ubutu:/etc/bind/db.local,RedHat:/var/named/named.local};zone"0.0.127.inaddr.arpa"{typemaster;file"/etc/bind/db.127";};

    zone"yourdomain.com"{typeslave;file"named.yourdomain.com";Specifyslaves/named.yourdomain.comforRHEL4/5chrootedbindmasters{XXX.XXX.XXX.XXX;};IPaddressofprimaryDNS};zone"yourdomain2.com"{typeslave;file"named.yourdomain2.com";masters{XXX.XXX.XXX.XXX;};};

    view"external":(slave)

    view"external"{matchclients{any;};matchdestinations{any;};allowtransfer{none;};Slavedoesnottransfertoanyone,slavereceivesrecursionno;include"/etc/named.root.hints";

    zone"yourdomain.com"{typeslave;file"/var/named/slaves/external/named.yourdomain.com";notifyno;Slavedoesnotnotify,slaveisnotifiedbymastermasters{XXX.XXX.XXX.XXX;};StateIPofmasterserver};};

    Note:RHEL4/5,CentOS4/5,Fedora3+usechrooteddirectorystructurepermissionswhichrequiretheuseoftheslavessubdirectory/var/named/slaves

    SlaveZoneFiles:Thesearetransferedfrommastertoslaveandcachedbyslave.Thereisnoneedtogenerateazonefileontheslave.

    AdditionalInformation:

    Manpageonnamed.confManpageonnamedDNSserverFullDNSmanual

    [PotentialPitfall]:Ubuntudapper/hardy/nattyPathnamesusedcannotviolateApparmorsecurityrulesasdefinedin/etc/apparmor.d/usr.sbin.namedthattheslavefilesaretypicallynamed"/var/lib/bind/named.yourdomain.com"aspermittedbythesecurityconfiguration.

    [PotentialPitfall]:Ubuntudapper/hardy/nattyCreatelogfileandsetownershipandpermissionforfilenotcreatedbyinstallation:

    touch/var/log/bindlogchownroot.bind/var/log/bindlog

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 24/33

    chmod664/var/log/bindlog

    [PotentialPitfall]:Errorin/var/log/messages:

    transferof'yolinux.com/IN'fromXXX.XXX.XXX.XXX#53:failedwhilereceivingresponses:permissiondenied

    Namedneedswritepermissiononthedirectorycontainingthefile.Thisconditionoftenoccursforanew"slave"or"secondary"nameserverwherethezonefilesdonotyetexist.Thedefault(RHEL4/5,CentOS4/5,FedoraCore3+,...):

    drwxrx4rootnamed4096Aug252004nameddrwxrwx2namednamed4096Sep1720:37slaves

    Fix:Innamed.confspecifythattheslavestogotoslavesdirectory/var/named/chroot/var/named/slaveswiththedirective:file"slaves/named.yourdomain.com";

    BindDefaults:

    Usesport53ifnoneisspecifiedwiththelistenonportstatement.Bindwilluserandomportsaboveport1024forqueries.ForusewithfirewallsexpectingallDNStrafficonport53,specifythefollowingstatementin/etc/named.conf

    querysourceaddress*port53;querysourcev6port53;

    Loggingisto/var/log/messages

    Aftertheconfigurationfileshavebeenedited,restartthenamedaemon.

    /etc/init.d/namedrestart

    (Note:Ubuntu/Debianrestart:/etc/init.d/bind9restart)

    Bindzonetransfersworkbestiftheclocksofthetwosystemsaresynchronised.SeetheYoLinuxSysAdminTutorial:Timeandntpd

    File:/var/named/named.yourdomain.comThisiscreatedforyoubyBindontheslave(secondary)serverwhenitreplicatesfromPrimaryserver.

    DNSGUIconfiguration:

    RedHatEL4/5,Fedora210:/usr/bin/systemconfigbindRedHat8/9,FedoraCore1:/usr/bin/redhatconfigbind

    TestDNS:

    Mustinstallpackages:

    RedHat/FedoraCore/SuSE:bindutils

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 25/33

    Ubuntu(dapper/hardy/natty)/Debian:bind9host

    Testthenameserverwiththehostcommandininteractivemode:

    hostnode.domaintotest.comyournameservertotest.domain.com

    Note:ThenameservermayalsobespecifiedbyIPaddress.

    or

    Testthenameserverwiththenslookupcommandininteractivemode:

    nslookup>serveryournameservertotest.domain.com>node.domaintotest.com>exit

    TesttheMXrecordifappropriate:

    nslookupquerytype=mxdomaintotest.comOR

    hosttmxdomaintotest.com

    Testusingthedigcommand:

    dig@nameserverdomaintoquery

    OR

    dig@IPaddressofnameserverdomaintoquery

    TestyourDNSwiththefollowingDNSdiagnosticswebsite:DnsStuff.com

    ExtraloggingtomonitorBind:

    Addthefollowingtoyour/etc/named.conffile.

    logging{channelbindlog{//Keepfiveoldversionsofthelogfile(rotateslogs)file"/var/log/bindlog"versions5size1m;printtimeyes;printcategoryyes;printseverityyes;};/*Ifyouwanttoenabledebugging,eg.usingthe'rndctrace'command,*namedwilltrytowritethe'named.run'fileinthe$directory(/var/named).*Bydefault,SELinuxpolicydoesnotallownamedtomodifythe/var/nameddirectory,*soputthedefaultdebuglogfileindata/:*/channeldefault_debug{file"data/named.run";severitydynamic;};categoryxferout{bindlog;};Zonetransferscategoryxferin{bindlog;};Zonetransferscategorysecurity{bindlog;};Approved/unapprovedrequests

    //Thefollowingloggingstatements,panic,insistandresponsechecksare//validforBind8only.Donotuserforversion9.categorypanic{bindlog;};Systemshutdownscategoryinsist{bindlog;};Internalconsistencycheckfailurescategoryresponsechecks{bindlog;};Messages};

    ChrootBindforextrasecurity:

    Note:MostmodernLinuxdistributionsdefaulttoa"chrooted"installation.ThistechniquerunstheBindnameservicewithaviewofthefilesystemwhichchangesthedefinitionoftherootdirectory"/"toadirectoryinwhichBindwilloperate.i.e./var/named/chroot.

    ThefollowingexampleusestheRedHatRPMbind8.2.30.6.x.i386.rpm.AppliestoBindversion9aswell.

    ThelatestRedHatbindupdatesrunthenamedasuser"named"toavoidalotofearlierhackerexploits.Tochroottheprocessistocreateanevenmoresecureenvironmentbylimitingtheviewofthesystemthattheprocesscanaccess.Theprocessislimitedtothechrooteddirectoryassigned.

    ThechrootofthenamedprocesstoadirectoryunderagivenuserwillpreventthepossibilityofanexploitwhichatonetimewouldresultinTheoriginaldefaultRedHatconfiguration(6.2)ranthenamedprocessasroot,thusifanexploitwasfound,thenamedprocesswillallowthehackertousetheprivilegesoftherootuser.(nolongertrue)

    NamedCommandSytax:

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 26/33

    nameduuserggrouptdirectorytochrootto

    Example:

    namedunamedgnamedt/opt/named

    Whenchrooted,theprocessdoesnothaveaccesstosystemlibrariesthusalocallibdirectoryisrequiredwiththeappropriatelibraryfilestheoretically.ThisdoesnotseemtobethecasehereandasnotedaboveinchrootedFTP.It'samysterytomebutitworks????Anothermethodtohandlelibrariesistorecompilethenamedbinarywitheverythingstaticallylinked.Addstatictothecompileoptions.Thechrootedprocessshouldalsorequirealocal/etc/named.confetc...butdoesn'tseemto???

    Scripttocreateachrootedbindenvironment:

    #!/bin/shcd/optmkdirnamedcdnamedmkdiretcmkdirbinmkdirvarcdvarmkdirnamedmkdirruncd..chownRnamed.namedbinetcvar

    Youcanprobablystophere.Ifyoursystemactslikeachrootedsystemshould,thencontinuewiththefollowing:

    cpp/etc/named.confetccpp/etc/localtimeetccpp/bin/falsebinecho"named:x:25:25:Named:/var/named:/bin/false">etc/passwdecho"named:x:25:">etc/grouptouchvar/run/named.pid

    if[f/etc/namedb]thencpp/etc/namedbetc/namedbfi

    mkdirdevcddev

    #Createacharacterunbufferedfile.mknodmugo+rwnullc13

    cd..chownRnamed.namedbinetcvar

    Addchangestotheinitscript:/etc/rc.d/init.d/named

    01 #!/bin/bash02 #03 #namedThisshellscripttakescareofstartingandstopping04 #named(BINDDNSserver).05 #06 #chkconfig:554507 #description:named(BIND)isaDomainNameServer(DNS)\08 #thatisusedtoresolvehostnamestoIPaddresses.09 #probe:true10 11 #Sourcefunctionlibrary.12 ./etc/rc.d/init.d/functions13 14 #Sourcenetworkingconfiguration.15 ./etc/sysconfig/network16 17 #Checkthatnetworkingisup.18 [${NETWORKING}="no"]&&exit019 20 [f/etc/sysconfig/named]&&./etc/sysconfig/named21 22 [f/usr/sbin/named]||exit023 24 [f/etc/named.conf]||exit025 26 RETVAL=027 28 start(){29 #Startdaemons.30 echon"Startingnamed:"31 daemonnamedunamedgnamedt/opt/named#Changemadehere32 RETVAL=$?

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 27/33

    Note:ThecurrentversionofbindfromtheRedHaterrataupdatesandsecurityfixes(http://www.redhat.com/support/errata/)runsthenamedprocessasuser"named"inthehome(notchrooted)directory/var/namedwithnoshellavailable.(namedunamed)Thisshouldbesecureenough.Proceedwithachrootedinstallationifyourareparanoid.

    See:

    SecuringDNS:Howtousechrootbindfeatures

    ChrootedDNSconfiguration:

    ModernreleasesofLinux(i.e.FedoreCore3,RedHatEnterpriseLinux4)comepreconfiguredtouse"chrooted"bind.Thissecurityfeatureforcesevenanexploitedversionofbindtoonlyoperatewithinthe"chrooted"jail/var/named/chrootwhichcontainsthefamiliardirectories:

    /var/named/chroot/etc:Configurationfiles/var/named/chroot/dev:devicesusedbybind:

    /dev/null/dev/random/dev/zero

    (Realdevicescreatedwiththemknodcommand.)/var/named/chroot/var:Zonefilesandconfigurationinformation.

    ThesedirectoriesaregeneratedandconfiguredbytheRedHat/FedoraRPMpackage"bindchroot".

    Ifbuildingfromsourceyouwillhavetogeneratethisconfigurationmanually:

    mkdirp/var/named/chrootmkdir/var/named/chroot/devmknod/var/named/chroot/dev/nullc13

    33 [$RETVALeq0]&&touch/var/lock/subsys/named34 echo35 return$RETVAL

    36 }37 stop(){38 #Stopdaemons.39 echon"Shuttingdownnamed:"40 killprocnamed41 RETVAL=$?42 [$RETVALeq0]&&rmf/var/lock/subsys/named43 echo44 return$RETVAL45 }46 rhstatus(){47 /usr/sbin/ndcstatus48 return$?49 }50 restart(){51 stop52 start53 }54 reload(){55 /usr/sbin/ndcreload56 return$?57 }58 probe(){59 #namedknowshowtoreloadintelligently;wedon'twantlinuxconf60 #tooffertorestarteverytime61 /usr/sbin/ndcreload>/dev/null2>&1||echostart62 return$?63 }64 65 #Seehowwewerecalled.66 case"$1"in67 start)68 start69 ;;70 stop)71 stop72 ;;73 status)74 rhstatus75 ;;76 restart)77 restart78 ;;79 condrestart)80 [f/var/lock/subsys/named]&&restart||:81 ;;82 reload)83 reload84 ;;85 probe)86 probe87 ;;88 *)89 echo"Usage:named{start|stop|status|restart|condrestart|reload|probe}"90 exit191 esac92 93 exit$?

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 28/33

    mknod/var/named/chroot/dev/zeroc15mknod/var/named/chroot/dev/randomc18chmod666R/var/named/chroot/devmkdirp/var/named/chroot/etclns/var/named/chroot/etc/named.conf/etc/named.confmkdirp/var/named/chroot/var/namedlns/var/named/chroot/var/named/named.XXXX/var/named/named.XXXXlns/var/named/chroot/var/named/named.YYYY/var/named/named.YYYY...mkdirp/var/named/chroot/var/named/slavesmkdirp/var/named/chroot/var/named/datamkdirp/var/named/chroot/var/runmkdirp/var/named/chroot/var/tmpchownRnamed:named/var/named/chrootchownRroot:named/var/named/chroot/var/named

    LoadBalancingofserversusingBind:DNSRoundRobin

    ThiswillpopulateDNScachingnameserversaroundtheworldwithdifferentIPaddressesforyourwebserverwww.yourdomain.com

    File:/var/named/data/named.yourdomain.com

    $TTL604800yourdomain.com.INSOAns1.yourdomain.com.hostmaster.yourdomain.com.

    ...

    ...

    wwwINA192.168.1.1wwwINA192.168.1.2wwwINA192.168.1.3wwwINA192.168.1.4wwwINA192.168.1.5wwwINA192.168.1.6

    Note:

    Thisexamplewillresolvethewww.yourdomain.comURLtoeachoftheIPaddresseslisted,oneatatimeforeachrequest.Firstrequestwillresolveto192.168.1.1,thesecondrequestwillresolveto192.168.1.2,etc.AperfectlyevenloadbalanceisnotpossiblebecausednetworkserviceprovidersrunDNScachingserverswhichholdtheresolvedIPaddressforadifferentnumberofusers.UsingmultipleCNAME'storotaterecordsisnolongerpermissibleinbind9.ListingarecordmultipletimeswiththesameIPaddresswillnotchangetheloadsharing.Bindwillignoreduplicaterecords.Reducingthetimetolive(TTL)willcauseloadsharingtotakeplacemorefrequentlythusrespondingtoachangeinserversmorequickly.

    Alsoseelbnamed:lbnamedloadbalancingnamed

    Bind/DNSLinks:

    InternetSoftwareConsortium(ISC)HomePageISCBindHomeZytraxBind9manualBindforrocketscientistscomp.protocols.tcpip.domainsFAQHTMLversionmod_rewrite:pageforwarding,loadbalancingandroundrobinschemesLDPDNSHOWTODNSSecuritybestpracticesCricketLiu(coauthorofDNSandBind)DNSSecurityPaperCraigRowlandEveryDNS.netFreeDNSSecondary.comFreesecondarynamesserverhosting(fiveorfewerdomains)TZO.comDynamic,secondaryDNSservices.OpenDNS.comCanallowforwardingtoOpenDNSservers.Addto"options"section:forwarders{208.67.222.222;208.67.222.220;};DynDNS:dyn.comCommand:ipcheck.pyieth0DynDNSuseridpasswordnode.dnsalias.netThenaddscriptupdate.dyndns.iptodirectory/etc/cron.daily/toupdateIP.Thishostmustalsobeallowedaccessthroughanyfirewallrules.DynDNS.comDynamicDNSforthosewithdynamicIPaddresses.(i.e.dialupgameserversetc.)

    Domainnameregistration:

    DomainNameRegistrars:NetworkSolutions.comRegister.comRegistrar.GoDaddy.comDomainnameregistrationforonly$8.95/year!!!Dotster.comDomainnameregistrationforonly$14.95/yearDomainsNext.com$11.95/yearEasyDNS.com$25.00/yearGandi.netEuropean

    AfterNic.comDomainnameexchangeandauction.BuyDomains.comBuyadomainnamethatasquatterisholding.

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 29/33

    NotethattheNameregistrationspoliciesfortheregistrarsarestatedatICANN.org.

    YoumustrenewwiththesameregistrarwithinfivedaysBEFOREtheexpirationdate.Thereisnoruleforafterwards.Mostfreeadomainname30daysafteritexpires.

    WebServerLoadBalancing:

    Loadbalancingbecomesimportantifyourtrafficvolumebecomestoogreatforeitheryourserverornetworkconnectionorboth.Multipleoptionsareavailableforloadbalancing.

    DNSroundrobin:Discussedabove,thisusesDNStopointuserstorandomserverinalistofappropriateservers.Thisspreadstheloadamongtheserversinthelist.UseaLinuxVirtualServertoCreateaLoadBalanceCluster.Seenextsectionbelow.Runareverseproxy.Seenginx("engineX").Fromasingleexternalinternetnetworkconnection,routehttp,smtp,imaporpop3traffictovariousserversonaninternalnetwork.Resultsarepushedbacktothenginxproxyforroutingtotheinternet(nocaching).RuntheApachehttpdwebservermodule"mod_proxy"tooffloadprocessingofdynamiccontenttoanotherwebserver.Thisactsasareverseproxy,routingexternaltraffictovariousserversonaninternalnetwork.

    UsingaLinuxVirtualServertoCreateaLoadBalanceCluster:

    YoucanuseasingleLinuxservertoforwardrequeststoaclusterofserversusingiptablesforIPmasqueradingandIPVsadmtoscaleyourload.Theloadbalancingserverreceivingandroutingtherequestsiscalledthe"LinuxVirtualServer"(LVS).TheLVSreceivestherequestswhicharepassedtotherealserverswhichprocessandreplytotherequest.ThisreplyisforwardedtotheclientbytheLVS.

    ThisfeatureisavailablewiththeLinux2.4/2.6kernel.(Ifcompilingkernel:NetworkingOptions+IP:VirtualServerConfiguration)

    Configuration:Thisexamplewillloadbalancehttptraffictothreewebserversandftptraffictoafourthserver.

    EnableForwarding:(AlsoseeYoLinuxNetworkingTutorial:EnableForwarding)

    echo"1">/proc/sys/net/ipv4/ip_forward

    EnableIPMasquerading:

    iptablestnatPPOSTROUTINGDROPiptablestnatAPOSTROUTINGoeth0jMASQUERADE

    FormoreonIPMasquerading,iptablesandsubnetaddresses,seetheYoLinuxnetworkgatewaytutorial.

    Enablevirtualserver:Createvirtualserviceandchooseschedulerforhttp(80)andftp(21):

    ipvsadmAt66.218.88.103:80swlcipvsadmAt66.218.88.103:21swrr

    Commanddirectives:A:AddavirtualservicedefinedbyIPaddress,portnumber,andprotocol.t:UseTCPservicehost:ports:scheduler:

    rr:RobinRobin:distributesjobsequallyamongsttheavailablerealservers.wrr:WeightedRoundRobin.lc:LeastConnection:assignsmorejobstorealserverswithfeweractivejobs.wlc:(Default)WeightedLeastConnection:assignsmorejobstoserverswithfewerjobsandrelativetotherealserver'slblc,lblcr,dh,sh,sed,nq.Seemanpage.

    Configureloadbalancingcluser.

    ipvsadmat66.218.88.103:80r176.168.1.1:80mipvsadmat66.218.88.103:80r176.168.1.2:80mw2ipvsadmat66.218.88.103:80r176.168.1.3:80mipvsadmat66.218.88.103:21r176.168.1.4:21m

    Commanddirectives:r:Realserver.m:Usemasqueradingalsoknownasnetworkaddresstranslation(NAT)w:Weightisanintegerspecifyingthecapacityofaserverrelativetotheothersinthepool.Thevalidvaluesofweightareto65535.Thedefaultis1.

    Links:

    LinuxVirtualServer.orgiptablesAdministrationtoolforIPv4packetfilteringandNATipvsadmAdministertheroutingtableonaLinuxVirtualServer.

    ManagingWebServerDaemons:

    Toviewiftheseservicesarerunning,typepsauxandlookforthehttpd,inetdandnamedservices(daemons).Thesearebackgroundprocessesnecessarytoperformtheservertasks.

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 30/33

    root6810.00.52304744?SSep090:01namednobody281230.01.130361420?SOct060:00httpdnobody281860.00.73044896?SOct060:00httpdroot3850.00.11136232?SSep090:00inetd

    AnewinstallationwillmostlikelyNOTstartthenamedbackgroundprocesswhichmaybestartedmanuallyafterconfiguration.SeetheYoLinuxInitProcessTutorialformoreinformation.Theinetd(orxinetd)backgroundprocessistheInternetdaemonwhichstartsFTPwhenanftprequestismade.

    SysAdminScript:

    Scripttoprepareanaccount:(RedHat/Fedora)

    #!/bin/sh#AuthorGregIppolito#Requires:/opt/etc/AccountDefaults/pathmsgfavicon.icomwhmini_tr.gifetc.#/opt/bin/ftponly#Youmustberoottorunthisscript.#if[$#eq0]thenecho"Enteruseridasacommandargument"elseif[r/home/$1]thenecho"User'shomedirectoryalreadyexists"elseecho"1)Createuser."adduserm$1

    echo"2)SetuserPassword."passwd$1

    echo"3)Addreadaccesstouserdirectorysoapachecanreadit."cd/homechmodugo+rx$1cd$1

    echo"4)Createwebdirectories."mkdirpublic_htmlchown$1.$1public_htmlchconRhusystem_urobject_rthttpd_sys_content_tpublic_htmlcdpublic_htmlmkdirimageschown$1.$1imageschconRhusystem_urobject_rthttpd_sys_content_timages

    #Blockpotentialforunauthenticatedloginscd../touch.rhostschmodugoxrw.rhosts

    echo"5)Createdefaultwebpage"sed"/HEADING/s!HEADING!$1!"/opt/etc/AccountDefaults/defaultindex.html>index.htmlcpp/opt/etc/AccountDefaults/favicon.ico.cpp/opt/etc/AccountDefaults/defaultlogo.gif./imagescpp/opt/etc/AccountDefaults/robots.txt.chown$1.$1index.htmlfavicon.icorobots.txtchconRhthttpd_sys_content_tindex.htmlfavicon.icorobots.txtchconRhthttpd_sys_content_timages/defaultlogo.gif

    echo"6)Edit/etc/passwdfilechangeusershellto/opt/bin/ftponly"cpp/etc/passwd/etc/passwd`date+%m%d%y`sed"/^$1/s!/bin/bash!/opt/bin/ftponly!"/etc/passwd`date+%m%d%y`>/etc/passwd

    #wuftp#Requires:/etc/ftpaccessguestuserrestrictuid#wuftp#echo"7)Adduserto/etc/ftpaccessfile"#wuftp#cpp/etc/ftpaccess/etc/ftpaccess`date+%m%d%y`#wuftp#sed"/^guestuser/s!guestuser!guestuser$1!"/etc/ftpaccess`date+%m%d%y`>/etc/ftpaccess#wuftp#sed"/^restricteduid/s!restricteduid!restricteduid$1!"/etc/ftpaccess`date+%m%d%y`>/etc/ftpaccess#wuftp#echo"guestroot/home/$1/public_html$1">>/etc/ftpaccess

    echo"7)Addusertovsftpdchrootlistcat`echo$1`>>/etc/vsftpd/vsftpd.chroot_list

    echo"8)SettingDiskQuotastodefault50Mblimit:"#Useuserjohndoeasaprototype.edquotapjohndoe$1

    echo"9)AdminFollowup:"echo"Modifyquota.userifdifferentthandefault"echo"MakechangestoBindnamesservicesondns1anddns2ifnecessary"echo"Change/etc/http/conf/httpd.conforecho"addconfigto/etc/http/conf.d/ifusinganewdomainname"echo"Addemailaliasestomailserverifnecessary"fifi

    FYI:Samplerobots.txtfiles:

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 31/33

    yolinux.com/robots.txtUSC.edu/robots.txt

    Usefullinksandresources:

    LinuxInitProcessYoLinux.comtutorialSettingupanApacheredirectYoLinux.comtutorialApacheDocumentationLDPHowToGuides:

    DNSHOWTODNSadministrationNicolaiLangfeldtSecuringDomainHOWTOISPSetupRedHatUsingLinuxtohostanISPAntonChuvakinLinuxNetworkingOverviewHOWTODanielLopezRidruejoVirtualServicesHOWTODNS,FTP,Apache,Mail(POP,Qmail,Sendmail),SyslogdandSambaWWWHOWTOSettingupApacheservicesWWWmSQLHOWTO

    ListofInternetExchanges[mapandlist]AnInternetExchange(IX)isajunctionbetweenmultipleprincipleInternetcommunicationlines.atorclosetoanIXwillhaveyourbestabilitytohandletrafficandyourlowestlatencies.descriptionofIXSettingupamailserverYoLinuxTutorial

    Books:

    "UbuntuUnleashed2013edition:"Covering12.10and13.04(8thEdition)byMatthewHelmke,AndrewHudsonandPaulHudsonSamsPublishing,ISBN#0672336243(Dec15,2012)

    "UbuntuUnleashed2012edition:"Covering11.10and12.04(7thEdition)byMatthewHelmke,AndrewHudsonandPaulHudsonSamsPublishing,ISBN#0672335786(Jan16,2012)

    "UbuntuUnleashed2011edition:"Covering10.10and11.04(6thEdition)byMatthewHelmke,RyanTroy,AndrewHudsonandPaulHudsonSurfingTurtlePress,ISBN#0672333449(Dec24,2010)

    "Fedora18DesktopHandbook"byRichardPetersenSurfingTurtlePress,ISBN#1936280639(Mar6,2013)

    "Fedora18NetworkingandServers"byRichardPetersenSurfingTurtlePress,ISBN#1936280698(March29,2013)

    "Fedora14DesktopHandbook"byRichardPetersen

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 32/33

    Amazonbookimage

    SurfingTurtlePress,ISBN#1936280167(Nov30,2010)

    Amazonbookimage

    "Fedora14AdministrationandSecurity"byRichardPetersenSurfingTurtlePress,ISBN#1936280221(Jan6,2011)

    Amazonbookimage

    "Fedora14NetworkingandServers"byRichardPetersenSurfingTurtlePress,ISBN#1936280191(Dec26,2010)

    Amazonbookimage

    "PracticalGuidetoUbuntuLinux(Versions8.10and8.04)"byMarkSobellPrenticeHallPTR,ISBN#01370038892edition(January9,2009)

    Amazonbookimage

    "Fedora10andRedHatEnterpriseLinuxBible"byChristopherNegusWiley,ISBN#0470413395

    "RedHatFedora6andEnterpriseLinuxBible"byChristopherNegusSams,ISBN#047008278X

    "Fedora7&RedHatEnterpriseLinux:TheCompleteReference"byRichardPetersenSams,ISBN#0071486429

    "RedHatFedoraCore6Unleashed"byPaulHudson,AndrewHudsonSams,ISBN#0672329298

    "RedHatLinuxFedora3Unleashed"byBillBall,HoytDuffSams,ISBN#0672327082

    "RedHatLinux9Unleashed"byBillBall,HoytDuffSams,ISBN#0672325888May8,2003

    IhavetheRedHat6versionandIhavefoundittobeveryhelpful.IhavefoundittobewaymorecompletethantheotherLinuxbooks.ItisthemostcompletegeneralLinuxbookinpublication.Whileotherbooksinthe"Unleashed"serieshavedissapointedme,thisbookisthebestoutthere.

    "ApacheServerBible2"

  • 4/7/2015 LinuxWebServerandDomainConfigurationTutorial

    http://www.yolinux.com/TUTORIALS/LinuxTutorialWebSiteConfig.html 33/33

    byMohammedJ.KabirISBN#0764548212,HungryMinds

    Thisbookisverycompletecoveringallaspectsindetail.Itisnotyourbasicreprintoftheapache.orgdocumentslikesomanyothers.

    "ProDNSandBind"byRonaldAitchisonApress,ISBN#1590594940

    YoLinux.comHomePageYoLinuxTutorialIndex|TermsPrivacyPolicy|Advertisewithus|FeedbackForm|Unauthorizedcopyingorredistributionprohibited.

    4totopofpage

    Copyright20002014byGregIppolito