ebook img

Servers for Hackers: Server Administration for Programmers PDF

314 Pages·2016·2.51 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Servers for Hackers: Server Administration for Programmers

Servers for Hackers Server Administration for Programmers Chris Fidao Thisbookisforsaleathttp://leanpub.com/serversforhackers Thisversionwaspublishedon2014-10-21 ThisisaLeanpubbook.LeanpubempowersauthorsandpublisherswiththeLeanPublishing process.LeanPublishingistheactofpublishinganin-progressebookusinglightweighttoolsand manyiterationstogetreaderfeedback,pivotuntilyouhavetherightbookandbuildtractiononce youdo. ©2014ChrisFidao Tweet This Book! PleasehelpChrisFidaobyspreadingthewordaboutthisbookonTwitter! Thesuggestedhashtagforthisbookis#srvrsforhackers. Findoutwhatotherpeoplearesayingaboutthebookbyclickingonthislinktosearchforthis hashtagonTwitter: https://twitter.com/search?q=#srvrsforhackers Contents Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i BookIssues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii AccidentalSysadminSyndrome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii LinuxDistributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv TheSandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 InstallVirtualboxandVagrant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ConfigureVagrant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 VagrantUp! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 BasicCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 BasicSoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 UsersandAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 IPAddresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 CreatingaNewUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 MakingOurUseraSuperUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 SettingUptheFirewall:Iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Addingtheserules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 InsertingRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 DeletingRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 SavingFirewallRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 DefaultingtoDROPOverACCEPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 LoggingDroppedPackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Fail2Ban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 CONTENTS IptablesIntegration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 AutomaticSecurityUpdates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Package Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Apt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 SearchingPackages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Permissions and User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 CheckingPermissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 ChangingPermissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 UserManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 CreatingUsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Umask&StickyBit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 RunningProcesses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Webservers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 HTTP,WebServersandWebSites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 AQuickNoteonDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 DNS&HostsFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Xip.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 VirtualHosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 HostingWebApplications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ThreeActors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 VirtualHosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ApacheandWebApplications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 MPMConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 CONTENTS SecurityConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Envvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Nginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 WebServerConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Servers(virtualhosts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 IntegrationwithWebApplications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 PHP-FPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 ServerSetupforMulti-TenancyApps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Multi-TenancyinApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Multi-TenancyinNginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 SSL Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 SSLOverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 UsingSSLinYourApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 CreatingSelf-SignedCertificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 CreatingaWildcardSelf-SignedCertificate . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ApacheSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 NginxSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 OneServerBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 ExtraSSLTricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Multi-Server Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 ImplicationsofMulti-ServerEnvironments . . . . . . . . . . . . . . . . . . . . . . . . . . 178 AssetManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 LostClientInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 SSLTraffic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 LoadBalancingwithNginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 BalancingAlgorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 CONTENTS Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 LoadBalancingwithHAProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 CommonSetups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 HAProxyConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 MonitoringHAProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 SampleNodeJSWebServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 SSLwithHAProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 HAProxywithSSLTermination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 HAProxywithSSLPass-Through . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 SampleNodeJSWebServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 WhatdoesLogrotatedo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 ConfiguringLogrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 GoingFurther . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Rsyslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 ShouldIUseRsyslog? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 SendingToRsyslogFromAnApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 File Management, Deployment & Configuration Management . . . . . . . . 228 ManagingFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 CopyingFilesLocally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 SCP:SecureCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Rsync:SyncFilesAcrossHosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Auto-deploywithGitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 HowitWorks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 NodeListener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 ShellScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Puttingittogether . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 ConfigurationManagementwithAnsible . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 CONTENTS Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 ManagingServers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Basic:RunningCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 BasicPlaybook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Facts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Vault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Loggingin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 SSHConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 SSHTunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 LocalPortForwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 RemotePortForwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 One-OffCommands&MultipleServers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 BasicAnsible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Monitoring Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 ASampleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 SystemServices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 SystemVInit(SysVinit,SysV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Upstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 TheServiceCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 UsingTheseSystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Supervisord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 ControllingProcesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 WebInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Forever . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Circus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 CONTENTS Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 ControllingProcesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 WebInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 StartingonBoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Development and Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 ServingStaticContent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Built-In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 NodeJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 DynamicContent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Servers Serverscanbefun! Knowinghowtosetup,runandadministeraservercanbeasempoweringascodingitself! Someapplicationhaveneedsstretchingbeyondwhathostingproviderscangive.Thisshouldn’tstop usfrombuildingtheapplication. Serverscanbehard! Consumers expect and demand services to be functioning. Downtime can cost real money, and is oftenmetwithfrustrationandanger. At the same time, servers are increasingly commodified. Hosting once involved a few, powerful servers.Now,themodern“Cloud”consistsofmanysmall,cheapvirtualmachines.Virtualmachines commonlydieformanyreasons. Theendresultisthatweneedtobuildforfailure.ThisisaHardProblem™,andrequiresustoknow alotabouttheserversrunningourapplications. ThisbookexistsbecausewedevelopersarenowfacedwithSystemAdministrationissues.Weneed toatleastknowthebasicsofwhatgoesintohostingandservingourapplication! So,let’snotgetstuckwithlimitinghostingorabrokenserver! Book Issues All feedback is hugely appreciated! Any questions, comments, issues, stories of glory/valor and praisecanbedirectedtotheGithubrepository¹createdforfeedback! https://github.com/Servers-for-Hackers/the-book ¹https://github.com/Servers-for-Hackers/the-book

Description:
Lean Publishing, 2014. — 314 p. На англ. языке. Пусть не вводит в заблуждение название: речь идет о необходимых знаниях для программистов про серверы в железе и софте.The Servers for Hacke
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.