<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://gibbsie.github.io/https://gibbsie.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://gibbsie.github.io/https://gibbsie.github.io/" rel="alternate" type="text/html" /><updated>2021-01-03T21:11:53+00:00</updated><id>https://gibbsie.github.io/https://gibbsie.github.io/feed.xml</id><title type="html">Oliver Gibbs</title><subtitle>Random technical musings of Oliver Gibbs</subtitle><author><name>Oliver Gibbs</name></author><entry><title type="html">Edge Protection with AWS WAF</title><link href="https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/appsec/security/waf/2019/04/24/awswaf/" rel="alternate" type="text/html" title="Edge Protection with AWS WAF" /><published>2019-04-24T00:00:00+00:00</published><updated>2019-04-24T00:00:00+00:00</updated><id>https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/appsec/security/waf/2019/04/24/awswaf</id><content type="html" xml:base="https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/appsec/security/waf/2019/04/24/awswaf/">&lt;p&gt;AWS WAF is a web application firewall that helps protect your web applications from common web exploits that could affect application availability, compromise security, or consume excessive resources. AWS WAF gives you control over which traffic to allow or block to your web applications by defining customizable web security rules. You can use AWS WAF to create custom rules that block common attack patterns, such as SQL injection or cross-site scripting, and rules that are designed for your specific application. New rules can be deployed within minutes, letting you respond quickly to changing traffic patterns. Also, AWS WAF includes a full-featured API that you can use to automate the creation, deployment, and maintenance of web security rules.&lt;/p&gt;

&lt;p&gt;With AWS WAF you pay only for what you use. AWS WAF pricing is based on how many rules you deploy and how many web requests your web application receives. There are no upfront commitments.&lt;/p&gt;

&lt;p&gt;You can deploy AWS WAF on either Amazon CloudFront as part of your CDN solution, the Application Load Balancer (ALB) that fronts your web servers or origin servers running on EC2, or Amazon API Gateway for your APIs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/eIhH7RTlTZA/1500x1000?a=.png&quot; alt=&quot;Anonymous Stormtroopers&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;

&lt;p&gt;Before we dive too deep, let’s cover some basics.&lt;/p&gt;

&lt;h2 id=&quot;how-wafs-work&quot;&gt;How WAFs Work&lt;/h2&gt;

&lt;p&gt;A Web Application Firewall, WAF, at a fundamental level will use a set of rules to distinguish between normal requests and malicious requests and will typically operate in one of three modes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Negative Model (Blacklist)&lt;/strong&gt; uses pre-set signatures to block web traffic that is clearly malicious, and signatures designed to prevent attacks which exploit certain website and web application vulnerabilities. Blacklisting model web application firewalls are a great choice for websites and web applications on the public internet, and are highly effective against an major types of DDoS attacks. Eg. Rule for blocking all &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;*&amp;lt;/script&amp;gt;&lt;/code&gt; inputs.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Positive Model (Whitelist)&lt;/strong&gt; only allows web traffic according to specifically configured criteria. For example, it can be configured to only allow HTTP GET requests from certain IP addresses. This model can be very effective for blocking possible cyber-attacks, but whitelisting will block a lot of legitimate traffic. Whitelisting model firewalls are probably best for web applications on an internal network that are designed to be used by only a limited group of people, such as employees.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mixed/Hybrid Model (Inclusive Model)&lt;/strong&gt; is one that blends both whitelisting and blacklisting. Depending on all sorts of configuration specifics, hybrid firewalls could be the best choice for both web applications on internal networks and web applications on the public internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/C9nyzOQ3zIY/1500x1000?a=.png&quot; alt=&quot;Umbrellas&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;testing-methodology&quot;&gt;Testing Methodology&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Always look out for common ports that expose that a WAF, namely &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;80&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;443&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8000&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8008&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8080&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8088&lt;/code&gt; ports. This can be automated easily via command line tooling like &lt;a href=&quot;https://github.com/curl/curl&quot;&gt;cURL&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Different WAFs are implemented differently and therefore exhibit different behaviours. AWS WAF exhibits the following:&lt;/li&gt;
  &lt;li&gt;AWS WAF associates itself with separate HTTP headers, allowing for moderate fingerprinting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/OHnvp41aDzE/1500x1000?a=.png&quot; alt=&quot;Key&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;detection--fingerprinting&quot;&gt;Detection / Fingerprinting&lt;/h1&gt;

&lt;h2 id=&quot;manual&quot;&gt;Manual&lt;/h2&gt;

&lt;p&gt;AWS WAF is considered to exhibit moderate detectability, if following this simple detection methodology.&lt;/p&gt;

&lt;p&gt;Response headers might contain:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWSALB&lt;/code&gt; cookie field value.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;X-AMZ-ID&lt;/code&gt; header.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;X-AMZ-REQUEST-ID&lt;/code&gt; header.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Response page may contain:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Access Denied&lt;/code&gt; in their keyword.&lt;/li&gt;
  &lt;li&gt;Request token ID with length from 20 to 25 between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RequestId&lt;/code&gt; tag.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Server&lt;/code&gt; header field contains &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;awselb/2.0&lt;/code&gt; value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/flha0KwRrRc/1500x1000?a=.png&quot; alt=&quot;Hacker&quot; /&gt;&lt;/p&gt;</content><author><name>Oliver Gibbs</name></author><category term="aws" /><category term="cloud" /><category term="appsec" /><category term="security" /><category term="waf" /><summary type="html">AWS WAF is a web application firewall that helps protect your web applications from common web exploits that could affect application availability, compromise security, or consume excessive resources. AWS WAF gives you control over which traffic to allow or block to your web applications by defining customizable web security rules. You can use AWS WAF to create custom rules that block common attack patterns, such as SQL injection or cross-site scripting, and rules that are designed for your specific application. New rules can be deployed within minutes, letting you respond quickly to changing traffic patterns. Also, AWS WAF includes a full-featured API that you can use to automate the creation, deployment, and maintenance of web security rules.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://source.unsplash.com/OKOOGO578eo/2000x1322?a=.png" /><media:content medium="image" url="https://source.unsplash.com/OKOOGO578eo/2000x1322?a=.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Devsecops</title><link href="https://gibbsie.github.io/https://gibbsie.github.io/2019/04/17/devsecops/" rel="alternate" type="text/html" title="Devsecops" /><published>2019-04-17T00:00:00+00:00</published><updated>2019-04-17T00:00:00+00:00</updated><id>https://gibbsie.github.io/https://gibbsie.github.io/2019/04/17/devsecops</id><content type="html" xml:base="https://gibbsie.github.io/https://gibbsie.github.io/2019/04/17/devsecops/">&lt;h1 id=&quot;principles&quot;&gt;Principles&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;DevSecOps remains an ongoing journey, it is not an end destination&lt;/li&gt;
  &lt;li&gt;Small security teams can have a profound impact&lt;/li&gt;
  &lt;li&gt;Help teams how they can address security concerns&lt;/li&gt;
  &lt;li&gt;Organise around self-service and enablement&lt;/li&gt;
  &lt;li&gt;Translate security for the layperson&lt;/li&gt;
  &lt;li&gt;Perfection is the enemy… get Rugged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;#&lt;/p&gt;</content><author><name>Oliver Gibbs</name></author><summary type="html">Principles</summary></entry><entry><title type="html">Adopting Cloud at Accelerated Speed</title><link href="https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/frameworks/2019/03/20/awscaf-sec/" rel="alternate" type="text/html" title="Adopting Cloud at Accelerated Speed" /><published>2019-03-20T00:00:00+00:00</published><updated>2019-03-20T00:00:00+00:00</updated><id>https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/frameworks/2019/03/20/awscaf-sec</id><content type="html" xml:base="https://gibbsie.github.io/https://gibbsie.github.io/aws/cloud/frameworks/2019/03/20/awscaf-sec/">&lt;p&gt;When approaching the notion of adopting Cloud, it can be a daunting task. You’re faced with establishing a strategy, identifying your approach, commercials, governance, operational changes, people skills. Where do you begin?&lt;/p&gt;

&lt;p&gt;Based on the numerous adoptions I’ve worked through, I recommend leveraging the AWS Cloud Adoption Framework as a guide to establishing a pathway through some of these decisions and realising business value, faster.&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-aws-cloud-adoption-framework&quot;&gt;What is the AWS Cloud Adoption Framework?&lt;/h2&gt;

&lt;p&gt;The Amazon Web Services Cloud Adoption Framework (CAF) is a framework originally developed by AWS Professional Services (ProServ) to help organisations design and travel an accelerated path to successful cloud adoption. The guidance and best practices provided by the framework help you build a comprehensive approach to cloud computing across your organisation and throughout your IT lifecycle.&lt;/p&gt;

&lt;p&gt;Using the AWS CAF helps you realise measurable business benefits from cloud adoption faster and with less risk.&lt;/p&gt;

&lt;p&gt;We’ll first introduce how the CAF is organised, then focus in on our main area of focus, namely Security.&lt;/p&gt;

&lt;h2 id=&quot;how-is-the-aws-caf-organised&quot;&gt;How is the AWS CAF organised?&lt;/h2&gt;

&lt;p&gt;The AWS Cloud Adoption Framework (AWS CAF) organises guidance into six areas of focus, called perspectives. Each perspective covers distinct responsibilities owned or managed by functionally related stakeholders. In general, the Business, People, and Governance Perspectives focus on &lt;em&gt;business&lt;/em&gt; capabilities; while the Platform, Security, and Operations Perspectives focus on &lt;em&gt;technical&lt;/em&gt; capabilities.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://d1.awsstatic.com/Education/CAF%20Perspectives%20Framework.6885640b042b170b49827beb9cbcaf10835866e0.png&quot; alt=&quot;Cloud Adoption Framework&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Let’s briefly introduce each of the six perspectives.&lt;/p&gt;

&lt;h2 id=&quot;business-perspective&quot;&gt;Business Perspective&lt;/h2&gt;

&lt;p&gt;The Business Perspective helps you move from separate strategies for business and IT to a business model that integrates IT strategy. Agile IT strategies are aligned to support your business outcomes, and they can adjust to business needs or technical capabilities as they change.&lt;/p&gt;

&lt;p&gt;Common Roles: Business Managers; Finance Managers; Budget Owners; Strategy Stakeholders.&lt;/p&gt;

&lt;h3 id=&quot;capabilities&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;IT Finance&lt;/td&gt;
      &lt;td&gt;addresses your capacity to plan, allocate, and manage the budget for IT expenses with the use-based cost model of cloud services.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;IT Strategy&lt;/td&gt;
      &lt;td&gt;helps you take advantage of cloud-based IT approach to deliver value and end-user adoption.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Benefits Realisation&lt;/td&gt;
      &lt;td&gt;helps you to measure the benefits of your IT investments using methods for a cloud-based IT operating model.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Business Risk Management&lt;/td&gt;
      &lt;td&gt;helps you estimate the potential business impact of preventable, strategic, and/or external risks.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CcspJkc7zqg&quot;&gt;Re:Invent Presentation: Building a Solid Business Case for the AWS Cloud&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/economics/&quot;&gt;AWS Cloud Economics Center&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/whitepapers/#cloud-computing-economics&quot;&gt;AWS Whitepapers: Cloud Computing Economics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;people-perspective&quot;&gt;People Perspective&lt;/h2&gt;

&lt;p&gt;The People Perspective helps Human Resources (HR) and personnel management prepare their teams for cloud adoption by updating staff skills and organizational processes to include cloud-based competencies.&lt;/p&gt;

&lt;p&gt;Common Roles: Human Resources; Staffing; People Managers.&lt;/p&gt;

&lt;h3 id=&quot;capabilities-1&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Resource Management&lt;/td&gt;
      &lt;td&gt;helps you understand and forecast new personnel needs for a cloud-based model.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Incentive Management&lt;/td&gt;
      &lt;td&gt;helps you implement a compensation program that will attract and retain the personnel required to operate a cloud-based IT model.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Career Management&lt;/td&gt;
      &lt;td&gt;helps you identify, acquire, and retain the skills needed for your cloud migration and ongoing operating model.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Training Management&lt;/td&gt;
      &lt;td&gt;provides guidance on how to develop or acquire training for your employees so they can perform their roles in a cloud environment.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Organisational Change Management&lt;/td&gt;
      &lt;td&gt;helps you manage the impact of business, structural, and cultural changes caused by cloud adoption.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources-1&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=2WmDQG3vp0c&quot;&gt;Webinar: How to Manage Organizational Change and Cultural Impact During a Cloud Transformation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=bmnVBpEK1f8&quot;&gt;Webinar: Preparing Your Team for a Cloud Transformation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/aws-enterprise-collection/a-12-step-program-to-get-from-zero-to-hundreds-of-aws-certified-engineers-287a4b45d39a&quot;&gt;Blog: A 12 Step Program to Get from Zero to Hundreds of AWS-Certified Engineers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.aws.training/&quot;&gt;AWS Training and Certification Portal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;governance-perspective&quot;&gt;Governance Perspective&lt;/h2&gt;

&lt;p&gt;The Governance Perspective integrates IT Governance and Organizational Governance. It provides guidence on identifying and implementing best practices for IT Governance, and on supporting business processes with technology.&lt;/p&gt;

&lt;p&gt;Common Roles: CIO; Program Managers; Project Managers; Enterprise Architects; Business Analysts; Portfolio Managers.&lt;/p&gt;

&lt;h3 id=&quot;capabilities-2&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Portfolio Management&lt;/td&gt;
      &lt;td&gt;provides a mechanism to manage it based on desired business outcomes. It can help to determine cloud-eligibility for workloads when prioritizing which services to move to the cloud.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Program and Project Management&lt;/td&gt;
      &lt;td&gt;helps you manage technology projects using methodologies that take advantage of the agility and cost management benefits inherent to cloud services.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Business Performance Measurement&lt;/td&gt;
      &lt;td&gt;helps you measure the impact of the cloud on business objectives.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;License Management&lt;/td&gt;
      &lt;td&gt;defines methods to procure, distribute, and manage the licenses needed for IT systems, services, and software.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources-2&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/aws-enterprise-collection/3-shortcuts-to-accelerate-your-cloud-migration-and-it-portfolio-analysis-4dcace5b4332&quot;&gt;Blog: 3 Shortcuts to Accelerate Your Cloud Migration and IT Portfolio Analysis&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/enterprise-innovation-start-up-speed-eric-tachibana/&quot;&gt;Re:Invent Presentation: Enterprise Innovation at Start-up Speed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;platform-perspective&quot;&gt;Platform Perspective&lt;/h2&gt;

&lt;p&gt;The Platform Perspective helps you design, implement, and optimize the architecture of AWS technology based on business goals and objectives. It helps provide strategic guidance for the design, principles, tools, and policies you will use to define AWS infrastructure. The Platform perspective also includes principles and patterns for communicating your target state environment, implementing new solutions on the cloud, and migrating on-premises workloads to the cloud.&lt;/p&gt;

&lt;p&gt;Common Roles: CTO; IT Managers; Solution Architects.&lt;/p&gt;

&lt;h3 id=&quot;capabilities-3&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Systems and Solution Architecture&lt;/td&gt;
      &lt;td&gt;helps you define and describe the system design and your architectural standards.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Compute, Network, Storage, and Database Provisioning&lt;/td&gt;
      &lt;td&gt;helps you develop new processes for provisioning infrastructure in a cloud environment. Provisioning shifts from an operational focus aligning supply with demand, to an architectural focus aligning services with requirements.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Application Development&lt;/td&gt;
      &lt;td&gt;addresses your ability to support business goals with new or updated applications, and helps implement new skills and processes for software development that take advantage of the agility gained by cloud computing.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources-3&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/architecture/well-architected/&quot;&gt;Well-Architected Framework&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=NcgBAUBtFA8&quot;&gt;Webinar: Best Practices in Planning a Large Scale Migration to AWS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/cloud-migration/&quot;&gt;Migrating to AWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;operations-perspective&quot;&gt;Operations Perspective&lt;/h2&gt;

&lt;p&gt;The Operations Perspective helps you to run, use, operate, and recover IT workloads to levels that meet the requirements of your business stakeholders. Insights gained through the Operations Perspective define your current operating procedures as well as process changes and training needed for successful cloud adoption. Well-managed IT operations support the operations of the business from planning and sustaining, through change and incident management.&lt;/p&gt;

&lt;p&gt;Common Roles: IT Operations Managers; IT Support Managers.&lt;/p&gt;

&lt;h3 id=&quot;capabilities-4&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Service Monitoring&lt;/td&gt;
      &lt;td&gt;focuses on detecting and responding to IT operations health indicators, to meet your service level agreements and operating level agreements.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Application Performance Monitoring (APM)&lt;/td&gt;
      &lt;td&gt;provides you with new approaches for monitoring application performance in a cloud environment to ensure that application health meets defined requirements.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Resource Inventory Management&lt;/td&gt;
      &lt;td&gt;helps you manage virtual IT assets to provide services that are both high performing and cost efficient.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Release/Change Management&lt;/td&gt;
      &lt;td&gt;helps your teams adopt software development best practices such as automation and Continuous Integration/Continuous Delivery (CI/CD) techniques, increasing the pace of your innovations.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Reporting and Analytics&lt;/td&gt;
      &lt;td&gt;helps you monitor the health of cloud assets and provide insights to help you reach the desired level of performance.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Business Continuity/Disaster Recovery&lt;/td&gt;
      &lt;td&gt;helps you implement processes to keep your business running during a catastrophic event.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;IT Service Catalog&lt;/td&gt;
      &lt;td&gt;helps you to offer cloud services to the business using a model that can help to improve efficiency of providing IT services as well as the productivity of consuming them.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources-4&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/whitepapers/#Operations&quot;&gt;AWS Whitepapers: Operations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://d1.awsstatic.com/whitepapers/itil-event-management-in-the-cloud.pdf&quot;&gt;White Paper: ITIL Event Management in the Cloud&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=J6XeDtCuERM&quot;&gt;re:Invent Session: Enabling DevOps for an Enterprise with AWS Service Catalog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/managed-services/&quot;&gt;AWS Managed Services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;security-perspective&quot;&gt;Security Perspective&lt;/h2&gt;

&lt;p&gt;The Security Perspective helps you structure the selection and implementation of controls. Following this guidance can make it easier to identify areas of non-compliance and plan ongoing security initiatives.&lt;/p&gt;

&lt;p&gt;Common Roles: CISO; IT Security Managers; IT Security Analysts.&lt;/p&gt;

&lt;h3 id=&quot;capabilities-5&quot;&gt;Capabilities&lt;/h3&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Identity and Access Management (IAM)&lt;/td&gt;
      &lt;td&gt;helps you integrate AWS into your identity management lifecycle, and sources of authentication and authorization.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Detective Control&lt;/td&gt;
      &lt;td&gt;provides guidance to help identify potential security incidents within your AWS environment.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Infrastructure Security&lt;/td&gt;
      &lt;td&gt;helps you implement control methodologies necessary to comply with best practices as well as meet industry or regulatory obligations.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Data Protection&lt;/td&gt;
      &lt;td&gt;helps you to implement appropriate safeguards that protect data in transit and at rest.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Incident Response&lt;/td&gt;
      &lt;td&gt;helps you define and execute a response to security incidents.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;resources-5&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://d1.awsstatic.com/whitepapers/AWS_CAF_Security_Perspective.pdf&quot;&gt;White Paper: AWS CAF Security Perspective&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=XFZjBJMFeck&quot;&gt;Re:Invent Session: Architecting for End-to-End Security in the Enterprise&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/whitepapers/#security-applications&quot;&gt;AWS White Papers: Security&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/security/&quot;&gt;AWS Cloud Security&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.&lt;/p&gt;</content><author><name>Oliver Gibbs</name></author><category term="aws" /><category term="cloud" /><category term="frameworks" /><summary type="html">When approaching the notion of adopting Cloud, it can be a daunting task. You’re faced with establishing a strategy, identifying your approach, commercials, governance, operational changes, people skills. Where do you begin?</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://source.unsplash.com/AJqeO_-ifx0/2000x1322?a=.png" /><media:content medium="image" url="https://source.unsplash.com/AJqeO_-ifx0/2000x1322?a=.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Bourne Again, uplifting the macOS bash shell</title><link href="https://gibbsie.github.io/https://gibbsie.github.io/macos/term/bash/2019/01/04/macos-bash/" rel="alternate" type="text/html" title="Bourne Again, uplifting the macOS bash shell" /><published>2019-01-04T00:00:00+00:00</published><updated>2019-01-04T00:00:00+00:00</updated><id>https://gibbsie.github.io/https://gibbsie.github.io/macos/term/bash/2019/01/04/macos-bash</id><content type="html" xml:base="https://gibbsie.github.io/https://gibbsie.github.io/macos/term/bash/2019/01/04/macos-bash/">&lt;p&gt;Apple laptops and desktops have remained a popular choice for developers. Being based on the BSD kernel, Apple macOS is easily able to offer a familiar UNIX experience when using the command line. The macOS operating system has come with the bash shell for a number of years now, so why is this post even required?&lt;/p&gt;

&lt;p&gt;This is a valid question to ask and you may be extremely comfortable with the stock version of bash that is installed by default with macOS. In the current macOS Mojave (10.14.5), the version of bash is:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;/bin/bash &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
GNU bash, version 3.2.57&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-release&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;x86_64-apple-darwin18&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Copyright &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;C&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; 2007 Free Software Foundation, Inc.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;As you can see from the output, the version installed is GNU bash v.3.2.57(1)-release. As the copyright clearly states, this version of GNU bash dates back to 2007. As it’s currently 2019, a lot can happen in 12 years, especially in computing and security patching.&lt;/p&gt;

&lt;p&gt;The reasoning behind why GNU bash on macOS boils down to good old licensing. GNU bash v3.2 was released under the GNU General Public License v2 (GPLv2). The successor to GNU bash v3.2 is v4.0 and it was this release when GNU bash moved to the &lt;a href=&quot;https://www.gnu.org/licenses/gpl.html&quot;&gt;GNU General Public License v3 (GPLv3)&lt;/a&gt;. Unfortunately for macOS users, Apple does not (currently) support the GPLv3 licensing terms, for whatever their reasons may be. Put another way, the version of GNU bash has remained at GNU bash 3.2 since Mac OS X 10.2 (Jaguar). So, now we know why macOS does not ship with any later releases of GNU bash. What can we do?&lt;/p&gt;

&lt;p&gt;Luckily, upgrading is fairly straightforward and you can run multiple versions of GNU bash with no impact to an otherwise stock macOS installation. Later version of GNU bash for Darwin are available from &lt;a href=&quot;http://trac.macports.org/browser/trunk/dports/shells/bash&quot;&gt;MacPorts&lt;/a&gt;, &lt;a href=&quot;http://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; or &lt;a href=&quot;http://pdb.finkproject.org/pdb/package.php/bash&quot;&gt;Fink&lt;/a&gt;. Alternatively, precompiled macOS packages are available from various websites or can be built directly from source if required.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://tiswww.case.edu/php/chet/img/bash-logo-web.png&quot; alt=&quot;GNU bash&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;why-bother-upgrading&quot;&gt;Why bother upgrading?&lt;/h1&gt;

&lt;p&gt;I’ve been running later GNU bash releases on my various Mac’s that I’ve owned over the last decade, the motivation behind this post was a recent change of employment and receiving a brand new Apple Macbook Pro 15 forced me to go through the set up. Shortly after, a colleague asked how to upgrade, so I thought I’d throw this post together.&lt;/p&gt;

&lt;p&gt;GNU bash v3.2.57 probably works just fine for most people. For me, the main reason to upgrade was to keep my “dot files” operable and in-sync with my Linux and UNIX environments all running current version of GNU bash. At time of writing, the latest release is &lt;a href=&quot;https://tiswww.case.edu/php/chet/bash/bashtop.html#CurrentStatus&quot;&gt;GNU bash v5.0.7 release&lt;/a&gt;. Whilst there’s nothing particularly special about my “dot files”, I do like to modify the shell behaviour using &lt;a href=&quot;https://www.gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin&quot;&gt;shopt built-ins&lt;/a&gt; that remain unavailable in GNU bash v3.2. Whilst the scripts handle the version avoiding the unsupported shopt built-ins, I found it lacking these remained unavailable on my macOS. Another common reason is newer releases of GNU bash support programmable tab auto-completion.&lt;/p&gt;

&lt;p&gt;Do not worry, upgrading is simple and smooth sailing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/DKix6Un55mw/1500x1000?a=.png&quot; alt=&quot;Drop in the Ocean?&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;installing-gnu-bash-v50-on-macos&quot;&gt;Installing GNU bash v5.0 on macOS&lt;/h1&gt;

&lt;p&gt;To install, you will first need to decide whether you are going to install GNU bash via a package or compile from source. In the interest of time and simplicity, I will discuss installing GNU bash v5.0 using &lt;a href=&quot;http://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;, which you’re probably already using.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;bash&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;…and you’re done! Well, kind of but not quite. Let’s look at what’s happened.&lt;/p&gt;

&lt;p&gt;Let’s first verify what version of GNU bash has been installed:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;which &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; bash
/usr/local/bin/bash
/bin/bash&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Here we see we have two bash binaries, so let’s see what’s happening.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;/usr/local/bin/bash &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
GNU bash, version 5.0.7&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-release&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;x86_64-apple-darwin18.5.0&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Copyright &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;C&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;

This is free software&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;/bin/bash &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
GNU bash, version 3.2.57&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-release&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;x86_64-apple-darwin18&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Copyright &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;C&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; 2007 Free Software Foundation, Inc.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;So it’s clear here that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin/bash&lt;/code&gt; is our stock version of GNU bash, supplied by Apple macOS. The version installed by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew&lt;/code&gt; is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local/bin/bash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;By default, /usr/local/bin will feature earlier in your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PATH&lt;/code&gt; environment variable, so whenever you execute a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bash --version&lt;/code&gt;, you will always get the latest version. As such, this new version of GNU bash is now the default.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/z8lfwpQVXJo/1500x1000?a=.png&quot; alt=&quot;MacBook Pro&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;so-its-installed&quot;&gt;So it’s installed?&lt;/h1&gt;

&lt;p&gt;Yes, congratulations. You’ll probably log out and log back in and realise your shell is still the old version of GNU bash. Why?&lt;/p&gt;

&lt;p&gt;UNIX provides a security feature that restricts the shells that can be used by users to a trusted, known list of login shells. As everything in UNIX is a file, the root-owned file in question is the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/shells&lt;/code&gt; file. To add the new version of GNU bash as your login shell, you must update this file.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/usr/local/bin/bash&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; /etc/shells&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now that this file has been updated, you’ll soon realise that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin/bash&lt;/code&gt; is still your default shell, not the new version installed. This is because your user profile needs to be updated to use the new shell.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;chsh &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; /usr/local/bin/bash&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The shell used by your user profile has now been updated to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local/bin/bash&lt;/code&gt; which is the new GNU bash release installed. Note that this change is only for your current user profile and will takes effect once you end your current session.&lt;/p&gt;

&lt;p&gt;If you close your Terminal or iTerm session and reopen, you’ll now notice that you’re running the later GNU bash release.&lt;/p&gt;

&lt;p&gt;Great, well done!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/AndE50aaHn4/1500x1000?a=.png&quot; alt=&quot;Success!&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;things-to-note&quot;&gt;Things to note&lt;/h1&gt;

&lt;p&gt;As we’ve seen, you have two versions of GNU bash installed and these will happily coexist without any real issues.&lt;/p&gt;

&lt;h2 id=&quot;shell-scripts&quot;&gt;Shell Scripts&lt;/h2&gt;

&lt;p&gt;When you write shell scripts, bare in mind you have two versions of bash installed and which version is which. In particular, keep close attention to the shebang of bash scripts:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$BASH_VERSION&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The above script looks basic enough but the shebang explicitly requests the stock version of GNU bash installed on macOS. This can be easily ovrercome by specifying &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local/bin/bash&lt;/code&gt; instead. However, a more elegant way is using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/bin/env&lt;/code&gt; binary.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$BASH_VERSION&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This version of the same script leverages &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/bin/env&lt;/code&gt; and requests the bash shell, which inspects the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PATH&lt;/code&gt; environment variable and, as mentioned earlier, will find &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local/bin/bash&lt;/code&gt; before &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin/bash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://source.unsplash.com/gtVrejEGdmM/1500x1000?a=.png&quot; alt=&quot;Link&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;delete-old-symlink-new&quot;&gt;Delete old, Symlink new?&lt;/h2&gt;

&lt;p&gt;I recall a colleague of mine once suggesting to delete the stock version of bash and symlink the new. This might look something like the below (please do not execute the below).&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo rm&lt;/span&gt; /bin/bash
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo ln&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; /usr/local/bin/bash /bin/bash&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Whilst this idea attempts to remove the multiple version of GNU bash installed and shell scripts would in theory leverage a newer GNU bash, it presents another problem.&lt;/p&gt;

&lt;p&gt;Apple macOS provides a built-in security feature called the &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/Introduction/Introduction.html&quot;&gt;System Integrity Protection (SIP)&lt;/a&gt;. What this feature does is it stops write access to &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/FileSystemProtections/FileSystemProtections.html&quot;&gt;specific directories&lt;/a&gt; within macOS even for the root user. This includes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Of course SIP can be disabled, changes in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin&lt;/code&gt; directory can then be made and SIP can then be enabled again. Apple even describe how to do it &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/ConfiguringSystemIntegrityProtection/ConfiguringSystemIntegrityProtection.html&quot;&gt;here&lt;/a&gt;. It’s up to you, but I personally prefer to leave the stock version present to prevent any Apple macOS update issues.&lt;/p&gt;

&lt;p&gt;Whichever you decide, enjoy using a recent GNU bash release on your macOS! You’ll feel Bourne Again …&lt;/p&gt;

&lt;h1 id=&quot;update---june-2019&quot;&gt;Update - June 2019&lt;/h1&gt;

&lt;p&gt;During WWDC Developer Conference in June 2019, Apple announced its &lt;a href=&quot;https://news.google.com/stories/CAAqZAgKIl5DQklTUURvSmMzUnZjbmt0TXpZd1NqTUtFUWlBMmRqOGpZQU1FVkhIMUFrcThNclpFaDVCY0hCc1pTQmhibTV2ZFc1alpYTWdiV0ZqVDFNZ1EyRjBZV3hwYm1Fb0FBUAE&quot;&gt;next version of macOS (v.10.15, codename: Catalina)&lt;/a&gt;. This beta version will introduce numerous changes but of interest to this article is Apple will be changing the macOS default shell from GNU bash 3.2 to the Z shell (zsh).&lt;/p&gt;

&lt;p&gt;Zsh is an extended Bourne shell with a large number of exhancements, including numerous features from bash, Korne shell (ksh) and tcsh. One of the best known features is its various compatibility modes which allow zsh to pretend to be the Bourne shell when executed as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin/sh&lt;/code&gt;. As zsh is licensed under the MIT license, it avoids the controversial language surrounding patents and Tivoization that is speculated to be the disagreement with the GPLv3 license.&lt;/p&gt;

&lt;p&gt;If you’re wanting GNU bash instead of zsh, you can use the above instruction to set bash as your default shell on the new macOS 10.15 Catalina beta.&lt;/p&gt;</content><author><name>Oliver Gibbs</name></author><category term="macOS" /><category term="term" /><category term="bash" /><summary type="html">Apple laptops and desktops have remained a popular choice for developers. Being based on the BSD kernel, Apple macOS is easily able to offer a familiar UNIX experience when using the command line. The macOS operating system has come with the bash shell for a number of years now, so why is this post even required?</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://source.unsplash.com/Agx5_TLsIf4/2000x1322?a=.png" /><media:content medium="image" url="https://source.unsplash.com/Agx5_TLsIf4/2000x1322?a=.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>