diff --git a/404.html b/404.html index 390d114..43fa680 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | Fabien Bloume - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/20f5c5cb.f8a26419.js b/assets/js/20f5c5cb.025c6f9b.js similarity index 98% rename from assets/js/20f5c5cb.f8a26419.js rename to assets/js/20f5c5cb.025c6f9b.js index 2fe567d..ecd5f37 100644 --- a/assets/js/20f5c5cb.f8a26419.js +++ b/assets/js/20f5c5cb.025c6f9b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[994],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),f=u(r),m=a,d=f["".concat(c,".").concat(m)]||f[m]||p[m]||i;return r?n.createElement(d,o(o({ref:t},s),{},{components:r})):n.createElement(d,o({ref:t},s))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const i={},o="Data Recovery Plan",l={unversionedId:"Engineering principles/DRP",id:"Engineering principles/DRP",title:"Data Recovery Plan",description:"Resources",source:"@site/docs/Engineering principles/DRP.md",sourceDirName:"Engineering principles",slug:"/Engineering principles/DRP",permalink:"/docs/Engineering principles/DRP",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"}},c={},u=[{value:"Resources",id:"resources",level:2},{value:"Infrastructure as Code",id:"infrastructure-as-code",level:2},{value:"Configuration Management",id:"configuration-management",level:2}],s={toc:u};function p(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"data-recovery-plan"},"Data Recovery Plan"),(0,a.kt)("h2",{id:"resources"},"Resources"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://c4model.com"},"C4 Model for software engineering")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://googlecloudcheatsheet.withgoogle.com/architecture"},"GCP Architecture diagram"))),(0,a.kt)("h2",{id:"infrastructure-as-code"},"Infrastructure as Code"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Used for provisioning and managing cloud resources")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Creating and provisioning a VM")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Referring to all APIs used to deploy infrastructure")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be."))),(0,a.kt)("p",null,"Popular solution : Hashicorp Terraform, which is multi API / multi-cloud with an open-source core."),(0,a.kt)("h2",{id:"configuration-management"},"Configuration Management"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Used for virtual machine OS-level configuration"),(0,a.kt)("li",{parentName:"ul"},"Configuring the internals of the VMs"),(0,a.kt)("li",{parentName:"ul"},"Referring to package configuration & software maintenance")))}p.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[994],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),f=u(r),m=a,d=f["".concat(c,".").concat(m)]||f[m]||p[m]||i;return r?n.createElement(d,o(o({ref:t},s),{},{components:r})):n.createElement(d,o({ref:t},s))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const i={},o="Data Recovery Plan",l={unversionedId:"Engineering principles/DRP",id:"Engineering principles/DRP",title:"Data Recovery Plan",description:"Resources",source:"@site/docs/Engineering principles/DRP.md",sourceDirName:"Engineering principles",slug:"/Engineering principles/DRP",permalink:"/docs/Engineering principles/DRP",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"}},c={},u=[{value:"Resources",id:"resources",level:2},{value:"Infrastructure as Code",id:"infrastructure-as-code",level:2},{value:"Configuration Management",id:"configuration-management",level:2}],s={toc:u};function p(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"data-recovery-plan"},"Data Recovery Plan"),(0,a.kt)("h2",{id:"resources"},"Resources"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://c4model.com"},"C4 Model for software engineering")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://googlecloudcheatsheet.withgoogle.com/architecture"},"GCP Architecture diagram"))),(0,a.kt)("h2",{id:"infrastructure-as-code"},"Infrastructure as Code"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Used for provisioning and managing cloud resources")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Creating and provisioning a VM")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Referring to all APIs used to deploy infrastructure")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be."))),(0,a.kt)("p",null,"Popular solution : Hashicorp Terraform, which is multi API / multi-cloud with an open-source core."),(0,a.kt)("h2",{id:"configuration-management"},"Configuration Management"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Used for virtual machine OS-level configuration"),(0,a.kt)("li",{parentName:"ul"},"Configuring the internals of the VMs"),(0,a.kt)("li",{parentName:"ul"},"Referring to package configuration & software maintenance")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7dd8714f.b6bda3d0.js b/assets/js/7dd8714f.7f54b122.js similarity index 99% rename from assets/js/7dd8714f.b6bda3d0.js rename to assets/js/7dd8714f.7f54b122.js index b32cf8b..a81ea4a 100644 --- a/assets/js/7dd8714f.b6bda3d0.js +++ b/assets/js/7dd8714f.7f54b122.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[717],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>s});var r=a(7294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function i(t){for(var e=1;e=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var m=r.createContext({}),p=function(t){var e=r.useContext(m),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=p(t.components);return r.createElement(m.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,l=t.originalType,m=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),d=p(a),s=n,k=d["".concat(m,".").concat(s)]||d[s]||c[s]||l;return a?r.createElement(k,i(i({ref:e},u),{},{components:a})):r.createElement(k,i({ref:e},u))}));function s(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var l=a.length,i=new Array(l);i[0]=d;var o={};for(var m in e)hasOwnProperty.call(e,m)&&(o[m]=e[m]);o.originalType=t,o.mdxType="string"==typeof t?t:n,i[1]=o;for(var p=2;p{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(7462),n=(a(7294),a(3905));const l={},i="Resources",o={unversionedId:"Security Operations/secops-resources",id:"Security Operations/secops-resources",title:"Resources",description:"MITRE Frameworks",source:"@site/docs/Security Operations/secops-resources.md",sourceDirName:"Security Operations",slug:"/Security Operations/secops-resources",permalink:"/docs/Security Operations/secops-resources",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},m={},p=[{value:"MITRE Frameworks",id:"mitre-frameworks",level:2},{value:"MITRE ATT&CK-related",id:"mitre-attck-related",level:2},{value:"CTI",id:"cti",level:3},{value:"Detection / Hunting / Blue Teams",id:"detection--hunting--blue-teams",level:3},{value:"Prevention / Purple-Red Teams / Testing of Controls",id:"prevention--purple-red-teams--testing-of-controls",level:3},{value:"Unclassified",id:"unclassified",level:3}],u={toc:p};function c(t){let{components:e,...a}=t;return(0,n.kt)("wrapper",(0,r.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"resources"},"Resources"),(0,n.kt)("h2",{id:"mitre-frameworks"},"MITRE Frameworks"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://attack.mitre.org/"},"MITRE ATT&CK")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://d3fend.mitre.org/"},"MITRE D3FEND")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://engage.mitre.org"},"MITRE ENGAGE"))),(0,n.kt)("h2",{id:"mitre-attck-related"},"MITRE ATT&CK-related"),(0,n.kt)("h3",{id:"cti"},"CTI"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Navigator"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://mitre.github.io/attack-navigator/enterprise/"},"https://mitre.github.io/attack-navigator/enterprise/")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"CAR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://car.mitre.org/wiki/Main_Page"},"https://car.mitre.org/wiki/Main_Page")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"AMITT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/misinfosecproject/amitt_framework"},"https://github.com/misinfosecproject/amitt_framework")),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MISP"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://www.misp-project.org"},"https://www.misp-project.org")),(0,n.kt)("td",{parentName:"tr",align:null},"MISP Project")))),(0,n.kt)("h3",{id:"detection--hunting--blue-teams"},"Detection / Hunting / Blue Teams"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Neo23x0/sigma"},"https://github.com/Neo23x0/sigma")),(0,n.kt)("td",{parentName:"tr",align:null},"Florian Roth / Thomas Patzke")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA Rules"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Neo23x0/sigma/tree/master/rules"},"https://github.com/Neo23x0/sigma/tree/master/rules")),(0,n.kt)("td",{parentName:"tr",align:null},"Florian Roth")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"OSCD Community"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://oscd.community"},"https://oscd.community")),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"BZAR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mitre-attack/bzar"},"https://github.com/mitre-attack/bzar")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA Editor"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://tdm.socprime.com/sigma/generate/"},"https://tdm.socprime.com/sigma/generate/")),(0,n.kt)("td",{parentName:"tr",align:null},"SOCPRIME")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"UNCODER"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://uncoder.io/"},"https://uncoder.io/")),(0,n.kt)("td",{parentName:"tr",align:null},"SOCPRIME")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Threathunter Playbook"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook"},"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook")),(0,n.kt)("td",{parentName:"tr",align:null},"Roberto Rodriguez")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"ThreatHunting App"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/olafhartong/ThreatHunting"},"https://github.com/olafhartong/ThreatHunting")),(0,n.kt)("td",{parentName:"tr",align:null},"Olaf Hartong")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Atomic Threat Coverage"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/atc-project/atomic-threat-coverage"},"https://github.com/atc-project/atomic-threat-coverage")),(0,n.kt)("td",{parentName:"tr",align:null},"ATC Project")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"RE&CT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://atc-project.github.io/atc-react/"},"https://atc-project.github.io/atc-react/")),(0,n.kt)("td",{parentName:"tr",align:null},"ATC Project")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DETT&CT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/rabobank-cdc/DeTTECT"},"https://github.com/rabobank-cdc/DeTTECT")),(0,n.kt)("td",{parentName:"tr",align:null},"Marcus Bakker / Ruben Bouwman")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"attack2jira"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mvelazc0/attack2jira"},"https://github.com/mvelazc0/attack2jira")),(0,n.kt)("td",{parentName:"tr",align:null},"Mauricio Velazco")))),(0,n.kt)("h3",{id:"prevention--purple-red-teams--testing-of-controls"},"Prevention / Purple-Red Teams / Testing of Controls"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"CALDERA"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mitre/caldera"},"https://github.com/mitre/caldera")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Atomic Red Team"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/redcanaryco/atomic-red-team"},"https://github.com/redcanaryco/atomic-red-team")),(0,n.kt)("td",{parentName:"tr",align:null},"Red Canary")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SPLUNK ATTACK Range"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/splunk/attack_range"},"https://github.com/splunk/attack_range")),(0,n.kt)("td",{parentName:"tr",align:null},"SPLUNK")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MORDOR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://mordordatasets.com/introduction.html"},"https://mordordatasets.com/introduction.html")),(0,n.kt)("td",{parentName:"tr",align:null},"Roberto Rodriguez")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"PurpleSharp"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mvelazc0/PurpleSharp"},"https://github.com/mvelazc0/PurpleSharp")),(0,n.kt)("td",{parentName:"tr",align:null},"Mauricio Velazco")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"VECTR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/SecurityRiskAdvisors/VECTR"},"https://github.com/SecurityRiskAdvisors/VECTR")),(0,n.kt)("td",{parentName:"tr",align:null},"Security Risk Advisors")))),(0,n.kt)("h3",{id:"unclassified"},"Unclassified"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"},"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"))))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[717],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>s});var r=a(7294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function i(t){for(var e=1;e=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var m=r.createContext({}),p=function(t){var e=r.useContext(m),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=p(t.components);return r.createElement(m.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,l=t.originalType,m=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),d=p(a),s=n,k=d["".concat(m,".").concat(s)]||d[s]||c[s]||l;return a?r.createElement(k,i(i({ref:e},u),{},{components:a})):r.createElement(k,i({ref:e},u))}));function s(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var l=a.length,i=new Array(l);i[0]=d;var o={};for(var m in e)hasOwnProperty.call(e,m)&&(o[m]=e[m]);o.originalType=t,o.mdxType="string"==typeof t?t:n,i[1]=o;for(var p=2;p{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(7462),n=(a(7294),a(3905));const l={},i="Resources",o={unversionedId:"Security Operations/secops-resources",id:"Security Operations/secops-resources",title:"Resources",description:"MITRE Frameworks",source:"@site/docs/Security Operations/secops-resources.md",sourceDirName:"Security Operations",slug:"/Security Operations/secops-resources",permalink:"/docs/Security Operations/secops-resources",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},m={},p=[{value:"MITRE Frameworks",id:"mitre-frameworks",level:2},{value:"MITRE ATT&CK-related",id:"mitre-attck-related",level:2},{value:"CTI",id:"cti",level:3},{value:"Detection / Hunting / Blue Teams",id:"detection--hunting--blue-teams",level:3},{value:"Prevention / Purple-Red Teams / Testing of Controls",id:"prevention--purple-red-teams--testing-of-controls",level:3},{value:"Unclassified",id:"unclassified",level:3}],u={toc:p};function c(t){let{components:e,...a}=t;return(0,n.kt)("wrapper",(0,r.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"resources"},"Resources"),(0,n.kt)("h2",{id:"mitre-frameworks"},"MITRE Frameworks"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://attack.mitre.org/"},"MITRE ATT&CK")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://d3fend.mitre.org/"},"MITRE D3FEND")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://engage.mitre.org"},"MITRE ENGAGE"))),(0,n.kt)("h2",{id:"mitre-attck-related"},"MITRE ATT&CK-related"),(0,n.kt)("h3",{id:"cti"},"CTI"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Navigator"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://mitre.github.io/attack-navigator/enterprise/"},"https://mitre.github.io/attack-navigator/enterprise/")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"CAR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://car.mitre.org/wiki/Main_Page"},"https://car.mitre.org/wiki/Main_Page")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"AMITT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/misinfosecproject/amitt_framework"},"https://github.com/misinfosecproject/amitt_framework")),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MISP"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://www.misp-project.org"},"https://www.misp-project.org")),(0,n.kt)("td",{parentName:"tr",align:null},"MISP Project")))),(0,n.kt)("h3",{id:"detection--hunting--blue-teams"},"Detection / Hunting / Blue Teams"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Neo23x0/sigma"},"https://github.com/Neo23x0/sigma")),(0,n.kt)("td",{parentName:"tr",align:null},"Florian Roth / Thomas Patzke")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA Rules"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Neo23x0/sigma/tree/master/rules"},"https://github.com/Neo23x0/sigma/tree/master/rules")),(0,n.kt)("td",{parentName:"tr",align:null},"Florian Roth")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"OSCD Community"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://oscd.community"},"https://oscd.community")),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"BZAR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mitre-attack/bzar"},"https://github.com/mitre-attack/bzar")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SIGMA Editor"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://tdm.socprime.com/sigma/generate/"},"https://tdm.socprime.com/sigma/generate/")),(0,n.kt)("td",{parentName:"tr",align:null},"SOCPRIME")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"UNCODER"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://uncoder.io/"},"https://uncoder.io/")),(0,n.kt)("td",{parentName:"tr",align:null},"SOCPRIME")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Threathunter Playbook"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook"},"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook")),(0,n.kt)("td",{parentName:"tr",align:null},"Roberto Rodriguez")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"ThreatHunting App"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/olafhartong/ThreatHunting"},"https://github.com/olafhartong/ThreatHunting")),(0,n.kt)("td",{parentName:"tr",align:null},"Olaf Hartong")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Atomic Threat Coverage"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/atc-project/atomic-threat-coverage"},"https://github.com/atc-project/atomic-threat-coverage")),(0,n.kt)("td",{parentName:"tr",align:null},"ATC Project")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"RE&CT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://atc-project.github.io/atc-react/"},"https://atc-project.github.io/atc-react/")),(0,n.kt)("td",{parentName:"tr",align:null},"ATC Project")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DETT&CT"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/rabobank-cdc/DeTTECT"},"https://github.com/rabobank-cdc/DeTTECT")),(0,n.kt)("td",{parentName:"tr",align:null},"Marcus Bakker / Ruben Bouwman")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"attack2jira"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mvelazc0/attack2jira"},"https://github.com/mvelazc0/attack2jira")),(0,n.kt)("td",{parentName:"tr",align:null},"Mauricio Velazco")))),(0,n.kt)("h3",{id:"prevention--purple-red-teams--testing-of-controls"},"Prevention / Purple-Red Teams / Testing of Controls"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Name"),(0,n.kt)("th",{parentName:"tr",align:null},"Link"),(0,n.kt)("th",{parentName:"tr",align:null},"Owner"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"CALDERA"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mitre/caldera"},"https://github.com/mitre/caldera")),(0,n.kt)("td",{parentName:"tr",align:null},"MITRE")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Atomic Red Team"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/redcanaryco/atomic-red-team"},"https://github.com/redcanaryco/atomic-red-team")),(0,n.kt)("td",{parentName:"tr",align:null},"Red Canary")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"SPLUNK ATTACK Range"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/splunk/attack_range"},"https://github.com/splunk/attack_range")),(0,n.kt)("td",{parentName:"tr",align:null},"SPLUNK")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MORDOR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://mordordatasets.com/introduction.html"},"https://mordordatasets.com/introduction.html")),(0,n.kt)("td",{parentName:"tr",align:null},"Roberto Rodriguez")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"PurpleSharp"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/mvelazc0/PurpleSharp"},"https://github.com/mvelazc0/PurpleSharp")),(0,n.kt)("td",{parentName:"tr",align:null},"Mauricio Velazco")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"VECTR"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/SecurityRiskAdvisors/VECTR"},"https://github.com/SecurityRiskAdvisors/VECTR")),(0,n.kt)("td",{parentName:"tr",align:null},"Security Risk Advisors")))),(0,n.kt)("h3",{id:"unclassified"},"Unclassified"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"},"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8037d0b1.e8e3f08e.js b/assets/js/8037d0b1.e1676fac.js similarity index 98% rename from assets/js/8037d0b1.e8e3f08e.js rename to assets/js/8037d0b1.e1676fac.js index 86111cb..9f900d6 100644 --- a/assets/js/8037d0b1.e8e3f08e.js +++ b/assets/js/8037d0b1.e1676fac.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[778],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>f});var o=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function l(t){for(var e=1;e=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var c=o.createContext({}),u=function(t){var e=o.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},p=function(t){var e=u(t.components);return o.createElement(c.Provider,{value:e},t.children)},s={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var r=t.components,n=t.mdxType,a=t.originalType,c=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),d=u(r),f=n,y=d["".concat(c,".").concat(f)]||d[f]||s[f]||a;return r?o.createElement(y,l(l({ref:e},p),{},{components:r})):o.createElement(y,l({ref:e},p))}));function f(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var a=r.length,l=new Array(a);l[0]=d;var i={};for(var c in e)hasOwnProperty.call(e,c)&&(i[c]=e[c]);i.originalType=t,i.mdxType="string"==typeof t?t:n,l[1]=i;for(var u=2;u{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var o=r(7462),n=(r(7294),r(3905));const a={},l="Port-forwarding to localhost",i={unversionedId:"GCP/Identity-Aware Proxy/port-forwarding",id:"GCP/Identity-Aware Proxy/port-forwarding",title:"Port-forwarding to localhost",description:"Install the gcloud CLI",source:"@site/docs/GCP/Identity-Aware Proxy/port-forwarding.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/port-forwarding",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Data Recovery Plan",permalink:"/docs/Engineering principles/DRP"},next:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"}},c={},u=[{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:2},{value:"Authentication with the CLI",id:"gcloud-auth",level:2},{value:"Port-forwarding your application port to your localhost",id:"port-forwarding-your-application-port-to-your-localhost",level:2}],p=t=>function(e){return console.warn("Component "+t+" was not imported, exported, or provided by MDXProvider as global scope"),(0,n.kt)("div",e)},s=p("Tabs"),d=p("TabItem"),f={toc:u};function y(t){let{components:e,...r}=t;return(0,n.kt)("wrapper",(0,o.Z)({},f,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"port-forwarding-to-localhost"},"Port-forwarding to localhost"),(0,n.kt)("h2",{id:"install-the-gcloud-cli"},"Install the gcloud CLI"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://cloud.google.com/sdk/docs/install#linux"},"Official documentation")),(0,n.kt)("h2",{id:"gcloud-auth"},"Authentication with the CLI"),(0,n.kt)("p",null,"Before each session you may launch, make sure to be ",(0,n.kt)("strong",{parentName:"p"},"authenticated with your gcloud account")," within the CLI"),(0,n.kt)(s,{groupId:"operating-systems",mdxType:"Tabs"},(0,n.kt)(d,{value:"Linux/mac",label:"Standard",mdxType:"TabItem"},(0,n.kt)("pre",null,"gcloud auth login")),(0,n.kt)(d,{value:"WSL",label:"WSL",mdxType:"TabItem"},(0,n.kt)("pre",null,"gcloud auth login --no-launch-browser"))),(0,n.kt)("h2",{id:"port-forwarding-your-application-port-to-your-localhost"},"Port-forwarding your application port to your localhost"),(0,n.kt)("p",null,"If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command."),(0,n.kt)("pre",null,"gcloud compute start-iap-tunnel vectr-test-instance 8501 --local-host-port=localhost:8501"))}y.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[778],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>f});var o=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function l(t){for(var e=1;e=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var c=o.createContext({}),u=function(t){var e=o.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},p=function(t){var e=u(t.components);return o.createElement(c.Provider,{value:e},t.children)},s={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var r=t.components,n=t.mdxType,a=t.originalType,c=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),d=u(r),f=n,y=d["".concat(c,".").concat(f)]||d[f]||s[f]||a;return r?o.createElement(y,l(l({ref:e},p),{},{components:r})):o.createElement(y,l({ref:e},p))}));function f(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var a=r.length,l=new Array(a);l[0]=d;var i={};for(var c in e)hasOwnProperty.call(e,c)&&(i[c]=e[c]);i.originalType=t,i.mdxType="string"==typeof t?t:n,l[1]=i;for(var u=2;u{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var o=r(7462),n=(r(7294),r(3905));const a={},l="Port-forwarding to localhost",i={unversionedId:"GCP/Identity-Aware Proxy/port-forwarding",id:"GCP/Identity-Aware Proxy/port-forwarding",title:"Port-forwarding to localhost",description:"Install the gcloud CLI",source:"@site/docs/GCP/Identity-Aware Proxy/port-forwarding.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/port-forwarding",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Data Recovery Plan",permalink:"/docs/Engineering principles/DRP"},next:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"}},c={},u=[{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:2},{value:"Authentication with the CLI",id:"gcloud-auth",level:2},{value:"Port-forwarding your application port to your localhost",id:"port-forwarding-your-application-port-to-your-localhost",level:2}],p=t=>function(e){return console.warn("Component "+t+" was not imported, exported, or provided by MDXProvider as global scope"),(0,n.kt)("div",e)},s=p("Tabs"),d=p("TabItem"),f={toc:u};function y(t){let{components:e,...r}=t;return(0,n.kt)("wrapper",(0,o.Z)({},f,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"port-forwarding-to-localhost"},"Port-forwarding to localhost"),(0,n.kt)("h2",{id:"install-the-gcloud-cli"},"Install the gcloud CLI"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://cloud.google.com/sdk/docs/install#linux"},"Official documentation")),(0,n.kt)("h2",{id:"gcloud-auth"},"Authentication with the CLI"),(0,n.kt)("p",null,"Before each session you may launch, make sure to be ",(0,n.kt)("strong",{parentName:"p"},"authenticated with your gcloud account")," within the CLI"),(0,n.kt)(s,{groupId:"operating-systems",mdxType:"Tabs"},(0,n.kt)(d,{value:"Linux/mac",label:"Standard",mdxType:"TabItem"},(0,n.kt)("pre",null,"gcloud auth login")),(0,n.kt)(d,{value:"WSL",label:"WSL",mdxType:"TabItem"},(0,n.kt)("pre",null,"gcloud auth login --no-launch-browser"))),(0,n.kt)("h2",{id:"port-forwarding-your-application-port-to-your-localhost"},"Port-forwarding your application port to your localhost"),(0,n.kt)("p",null,"If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command."),(0,n.kt)("pre",null,"gcloud compute start-iap-tunnel vectr-test-instance 8501 --local-host-port=localhost:8501"))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b38cbf7d.ab35f691.js b/assets/js/b38cbf7d.b3b19047.js similarity index 97% rename from assets/js/b38cbf7d.ab35f691.js rename to assets/js/b38cbf7d.b3b19047.js index 605cfc4..6e308af 100644 --- a/assets/js/b38cbf7d.ab35f691.js +++ b/assets/js/b38cbf7d.b3b19047.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[481],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>m});var n=t(7294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),p=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},f=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),f=p(t),m=o,d=f["".concat(s,".").concat(m)]||f[m]||u[m]||a;return t?n.createElement(d,i(i({ref:r},l),{},{components:t})):n.createElement(d,i({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,i=new Array(a);i[0]=f;var c={};for(var s in r)hasOwnProperty.call(r,s)&&(c[s]=r[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=t(7462),o=(t(7294),t(3905));const a={},i="Hi!",c={unversionedId:"GCP/Terraform/init",id:"GCP/Terraform/init",title:"Hi!",description:"",source:"@site/docs/GCP/Terraform/init.md",sourceDirName:"GCP/Terraform",slug:"/GCP/Terraform/init",permalink:"/docs/GCP/Terraform/init",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"},next:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"}},s={},p=[],l={toc:p};function u(e){let{components:r,...t}=e;return(0,o.kt)("wrapper",(0,n.Z)({},l,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"hi"},"Hi!"))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[481],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>m});var n=t(7294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),p=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},f=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),f=p(t),m=o,d=f["".concat(s,".").concat(m)]||f[m]||u[m]||a;return t?n.createElement(d,i(i({ref:r},l),{},{components:t})):n.createElement(d,i({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,i=new Array(a);i[0]=f;var c={};for(var s in r)hasOwnProperty.call(r,s)&&(c[s]=r[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=t(7462),o=(t(7294),t(3905));const a={},i="Hi!",c={unversionedId:"GCP/Terraform/init",id:"GCP/Terraform/init",title:"Hi!",description:"",source:"@site/docs/GCP/Terraform/init.md",sourceDirName:"GCP/Terraform",slug:"/GCP/Terraform/init",permalink:"/docs/GCP/Terraform/init",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"},next:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"}},s={},p=[],l={toc:p};function u(e){let{components:r,...t}=e;return(0,o.kt)("wrapper",(0,n.Z)({},l,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"hi"},"Hi!"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c37619b8.e14828fe.js b/assets/js/c37619b8.28e5cbf9.js similarity index 99% rename from assets/js/c37619b8.e14828fe.js rename to assets/js/c37619b8.28e5cbf9.js index facbbf5..e6a8f4b 100644 --- a/assets/js/c37619b8.e14828fe.js +++ b/assets/js/c37619b8.28e5cbf9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[295],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=r.createContext({}),u=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=o,h=p["".concat(i,".").concat(m)]||p[m]||d[m]||a;return n?r.createElement(h,l(l({ref:t},c),{},{components:n})):r.createElement(h,l({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=p;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s.mdxType="string"==typeof e?e:o,l[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>O,contentTitle:()=>x,default:()=>A,frontMatter:()=>I,metadata:()=>E,toc:()=>T});var r=n(7462),o=n(7294),a=n(3905),l=n(6010),s=n(2466),i=n(6775),u=n(1980),c=n(7392),d=n(12);function p(e){return function(e){var t;return(null==(t=o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})))?void 0:t.filter(Boolean))??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:o}}=e;return{value:t,label:n,attributes:r,default:o}}))}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function y(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[l,s]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[i,u]=y({queryString:n,groupId:r}),[c,p]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,d.Nk)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=i??c;return h({value:e,tabValues:a})?e:null})();(0,o.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:l,selectValue:(0,o.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),p(e)}),[u,p,a]),tabValues:a}}var f=n(2389);const b="tabList__CuJ",k="tabItem_LNqP";function v(e){let{className:t,block:n,selectedValue:a,selectValue:i,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,s.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=u[n].value;r!==a&&(d(t),i(r))},m=e=>{var t;let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:s}=e;return o.createElement("li",(0,r.Z)({role:"tab",tabIndex:a===t?0:-1,"aria-selected":a===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},s,{className:(0,l.Z)("tabs__item",k,null==s?void 0:s.className,{"tabs__item--active":a===t})}),n??t)})))}function w(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function S(e){const t=g(e);return o.createElement("div",{className:(0,l.Z)("tabs-container",b)},o.createElement(v,(0,r.Z)({},e,t)),o.createElement(w,(0,r.Z)({},e,t)))}function C(e){const t=(0,f.Z)();return o.createElement(S,(0,r.Z)({key:String(t)},e))}const N="tabItem_Ymn6";function P(e){let{children:t,hidden:n,className:r}=e;return o.createElement("div",{role:"tabpanel",className:(0,l.Z)(N,r),hidden:n},t)}const I={},x="Remote SSH an IAP-secured server using a terminal or VSCode",E={unversionedId:"GCP/Identity-Aware Proxy/remote-ssh-iap",id:"GCP/Identity-Aware Proxy/remote-ssh-iap",title:"Remote SSH an IAP-secured server using a terminal or VSCode",description:"Getting started",source:"@site/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/remote-ssh-iap",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"},next:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},O={},T=[{value:"Getting started",id:"getting-started",level:2},{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:3},{value:"Authentication with the CLI",id:"gcloud-auth",level:3},{value:"Using a standard terminal",id:"using-a-standard-terminal",level:2},{value:"Using VSCode Remote Explorer",id:"using-vscode-remote-explorer",level:2},{value:"CLI Authentication",id:"cli-authentication",level:3},{value:"SSH tunnel dry run",id:"ssh-tunnel-dry-run",level:3},{value:"Updating your ~/.ssh/config",id:"updating-your-sshconfig",level:3},{value:"Connect to Host on VSCode",id:"connect-to-host-on-vscode",level:3},{value:"Troubleshoot",id:"troubleshoot",level:2},{value:"SSH issues with WSL & VScode on Windows",id:"ssh-issues-with-wsl--vscode-on-windows",level:3}],V={toc:T};function A(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},V,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"remote-ssh-an-iap-secured-server-using-a-terminal-or-vscode"},"Remote SSH an IAP-secured server using a terminal or VSCode"),(0,a.kt)("h2",{id:"getting-started"},"Getting started"),(0,a.kt)("h3",{id:"install-the-gcloud-cli"},"Install the gcloud CLI"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://cloud.google.com/sdk/docs/install#linux"},"Official documentation")),(0,a.kt)("h3",{id:"gcloud-auth"},"Authentication with the CLI"),(0,a.kt)("p",null,"Before each session you may launch, make sure to be ",(0,a.kt)("strong",{parentName:"p"},"authenticated with your gcloud account")," within the CLI"),(0,a.kt)(C,{groupId:"operating-systems",mdxType:"Tabs"},(0,a.kt)(P,{value:"Linux/mac",label:"Standard",mdxType:"TabItem"},(0,a.kt)("pre",null,"gcloud auth login")),(0,a.kt)(P,{value:"WSL",label:"WSL",mdxType:"TabItem"},(0,a.kt)("pre",null,"gcloud auth login --no-launch-browser"))),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"using-a-standard-terminal"},"Using a standard terminal"),(0,a.kt)("p",null,"Very straightforward, make sure to be authenticated and run the following command :"),(0,a.kt)("pre",null,"gcloud compute ssh my-instance --tunnel-through-iap "),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"using-vscode-remote-explorer"},"Using VSCode Remote Explorer"),(0,a.kt)("h3",{id:"cli-authentication"},"CLI Authentication"),(0,a.kt)("p",null,"As usual, make sure to be authenticated : ",(0,a.kt)("a",{parentName:"p",href:"#gcloud-auth"},"gcloud authentication")),(0,a.kt)("h3",{id:"ssh-tunnel-dry-run"},"SSH tunnel dry run"),(0,a.kt)("p",null,"Then, make sure to ",(0,a.kt)("strong",{parentName:"p"},"dry run ssh tunnel")," to your instance : "),(0,a.kt)("pre",null,"gcloud compute ssh my-instance --tunnel-through-iap --dry-run"),(0,a.kt)("p",null,"You should get a response similar to that one : "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'/usr/bin/ssh -t -i /Users/YOURNAME/.ssh/google_compute_engine \n-o CheckHostIP=no \n-o HashKnownHosts=no -o HostKeyAlias=compute.XXXX -o IdentitiesOnly=yes \n-o StrictHostKeyChecking=yes \n-o UserKnownHostsFile=/Users/YOURNAME/.ssh/google_compute_known_hosts \n-o ProxyCommand="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -S /Applications/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel my-instance %p --listen-on-stdin --project=my-project --zone=my-zone --verbosity=warning" \n-o ProxyUseFdpass=no YOURNAME@compute.XXXX\n')),(0,a.kt)("p",null,"Now, what we are going to do is to ",(0,a.kt)("strong",{parentName:"p"},"copy the ProxyCommand")," out of it, which contains the info we need :\n",(0,a.kt)("inlineCode",{parentName:"p"},"/Library/Frameworks/Python [....] -verbosity=warning")),(0,a.kt)("h3",{id:"updating-your-sshconfig"},"Updating your ~/.ssh/config"),(0,a.kt)("p",null,"Now, using VScode, let's have a look at our ssh config file : "),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"CMD + shift + P"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"Remote-SSH : Open SSH configuration file"))),(0,a.kt)("p",null,"Into this file, add the following content and make sure to ",(0,a.kt)("strong",{parentName:"p"},"replace the full ProxyCommand")," by the way copied ealier :"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"Host my-instance-name\n HostName my-instance-name\n IdentityFile /Users/YOURNAME/.ssh/google_compute_engine\n CheckHostIP no\n HashKnownHosts no\n HostKeyAlias my-instance-name\n IdentitiesOnly yes\n StrictHostKeyChecking yes\n UserKnownHostsFile /Users/YOURNAME/.ssh/google_compute_known_hosts\n ProxyCommand /Library/Frameworks/Python [....] -verbosity=warning\n ProxyUseFdpass no\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("em",{parentName:"p"},"Host, HostName & HostKeyAlias")," can all be replaced by whatever value you wish.\nDo not forget ",(0,a.kt)("em",{parentName:"p"},"setting the right UserKnownHostsFile")," directory as well as pasting the ",(0,a.kt)("em",{parentName:"p"},"full ProxyCommand content"))),(0,a.kt)("h3",{id:"connect-to-host-on-vscode"},"Connect to Host on VSCode"),(0,a.kt)("p",null,"Now, you should be able to remote SSH your IAP-secured instance directly on VScode."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"CMD + shift + P"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"Remote-SSH : Connect to Host"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Pick your new entry ",(0,a.kt)("strong",{parentName:"p"},"'my-instance-name'"),", which should appear")),(0,a.kt)("p",null,"You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"There might be a few additional steps on a ",(0,a.kt)("strong",{parentName:"p"},"Windows")," environment where you use ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"Windows Subsystem for Linux")),". By default, VSCode does not use the WSL's ssh, which is a problem. See ",(0,a.kt)("a",{parentName:"p",href:"#troubleshoot"},"Troubleshoot")," below.")),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"troubleshoot"},"Troubleshoot"),(0,a.kt)("h3",{id:"ssh-issues-with-wsl--vscode-on-windows"},"SSH issues with WSL & VScode on Windows"),(0,a.kt)("p",null,"Coming later"))}A.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[295],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=r.createContext({}),u=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=o,h=p["".concat(i,".").concat(m)]||p[m]||d[m]||a;return n?r.createElement(h,l(l({ref:t},c),{},{components:n})):r.createElement(h,l({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=p;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s.mdxType="string"==typeof e?e:o,l[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>O,contentTitle:()=>x,default:()=>A,frontMatter:()=>I,metadata:()=>E,toc:()=>T});var r=n(7462),o=n(7294),a=n(3905),l=n(6010),s=n(2466),i=n(6775),u=n(1980),c=n(7392),d=n(12);function p(e){return function(e){var t;return(null==(t=o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})))?void 0:t.filter(Boolean))??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:o}}=e;return{value:t,label:n,attributes:r,default:o}}))}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function y(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[l,s]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[i,u]=y({queryString:n,groupId:r}),[c,p]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,d.Nk)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=i??c;return h({value:e,tabValues:a})?e:null})();(0,o.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:l,selectValue:(0,o.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),p(e)}),[u,p,a]),tabValues:a}}var f=n(2389);const b="tabList__CuJ",k="tabItem_LNqP";function v(e){let{className:t,block:n,selectedValue:a,selectValue:i,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,s.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=u[n].value;r!==a&&(d(t),i(r))},m=e=>{var t;let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:s}=e;return o.createElement("li",(0,r.Z)({role:"tab",tabIndex:a===t?0:-1,"aria-selected":a===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},s,{className:(0,l.Z)("tabs__item",k,null==s?void 0:s.className,{"tabs__item--active":a===t})}),n??t)})))}function w(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function S(e){const t=g(e);return o.createElement("div",{className:(0,l.Z)("tabs-container",b)},o.createElement(v,(0,r.Z)({},e,t)),o.createElement(w,(0,r.Z)({},e,t)))}function C(e){const t=(0,f.Z)();return o.createElement(S,(0,r.Z)({key:String(t)},e))}const N="tabItem_Ymn6";function P(e){let{children:t,hidden:n,className:r}=e;return o.createElement("div",{role:"tabpanel",className:(0,l.Z)(N,r),hidden:n},t)}const I={},x="Remote SSH an IAP-secured server using a terminal or VSCode",E={unversionedId:"GCP/Identity-Aware Proxy/remote-ssh-iap",id:"GCP/Identity-Aware Proxy/remote-ssh-iap",title:"Remote SSH an IAP-secured server using a terminal or VSCode",description:"Getting started",source:"@site/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/remote-ssh-iap",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"},next:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},O={},T=[{value:"Getting started",id:"getting-started",level:2},{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:3},{value:"Authentication with the CLI",id:"gcloud-auth",level:3},{value:"Using a standard terminal",id:"using-a-standard-terminal",level:2},{value:"Using VSCode Remote Explorer",id:"using-vscode-remote-explorer",level:2},{value:"CLI Authentication",id:"cli-authentication",level:3},{value:"SSH tunnel dry run",id:"ssh-tunnel-dry-run",level:3},{value:"Updating your ~/.ssh/config",id:"updating-your-sshconfig",level:3},{value:"Connect to Host on VSCode",id:"connect-to-host-on-vscode",level:3},{value:"Troubleshoot",id:"troubleshoot",level:2},{value:"SSH issues with WSL & VScode on Windows",id:"ssh-issues-with-wsl--vscode-on-windows",level:3}],V={toc:T};function A(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},V,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"remote-ssh-an-iap-secured-server-using-a-terminal-or-vscode"},"Remote SSH an IAP-secured server using a terminal or VSCode"),(0,a.kt)("h2",{id:"getting-started"},"Getting started"),(0,a.kt)("h3",{id:"install-the-gcloud-cli"},"Install the gcloud CLI"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://cloud.google.com/sdk/docs/install#linux"},"Official documentation")),(0,a.kt)("h3",{id:"gcloud-auth"},"Authentication with the CLI"),(0,a.kt)("p",null,"Before each session you may launch, make sure to be ",(0,a.kt)("strong",{parentName:"p"},"authenticated with your gcloud account")," within the CLI"),(0,a.kt)(C,{groupId:"operating-systems",mdxType:"Tabs"},(0,a.kt)(P,{value:"Linux/mac",label:"Standard",mdxType:"TabItem"},(0,a.kt)("pre",null,"gcloud auth login")),(0,a.kt)(P,{value:"WSL",label:"WSL",mdxType:"TabItem"},(0,a.kt)("pre",null,"gcloud auth login --no-launch-browser"))),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"using-a-standard-terminal"},"Using a standard terminal"),(0,a.kt)("p",null,"Very straightforward, make sure to be authenticated and run the following command :"),(0,a.kt)("pre",null,"gcloud compute ssh my-instance --tunnel-through-iap "),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"using-vscode-remote-explorer"},"Using VSCode Remote Explorer"),(0,a.kt)("h3",{id:"cli-authentication"},"CLI Authentication"),(0,a.kt)("p",null,"As usual, make sure to be authenticated : ",(0,a.kt)("a",{parentName:"p",href:"#gcloud-auth"},"gcloud authentication")),(0,a.kt)("h3",{id:"ssh-tunnel-dry-run"},"SSH tunnel dry run"),(0,a.kt)("p",null,"Then, make sure to ",(0,a.kt)("strong",{parentName:"p"},"dry run ssh tunnel")," to your instance : "),(0,a.kt)("pre",null,"gcloud compute ssh my-instance --tunnel-through-iap --dry-run"),(0,a.kt)("p",null,"You should get a response similar to that one : "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'/usr/bin/ssh -t -i /Users/YOURNAME/.ssh/google_compute_engine \n-o CheckHostIP=no \n-o HashKnownHosts=no -o HostKeyAlias=compute.XXXX -o IdentitiesOnly=yes \n-o StrictHostKeyChecking=yes \n-o UserKnownHostsFile=/Users/YOURNAME/.ssh/google_compute_known_hosts \n-o ProxyCommand="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -S /Applications/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel my-instance %p --listen-on-stdin --project=my-project --zone=my-zone --verbosity=warning" \n-o ProxyUseFdpass=no YOURNAME@compute.XXXX\n')),(0,a.kt)("p",null,"Now, what we are going to do is to ",(0,a.kt)("strong",{parentName:"p"},"copy the ProxyCommand")," out of it, which contains the info we need :\n",(0,a.kt)("inlineCode",{parentName:"p"},"/Library/Frameworks/Python [....] -verbosity=warning")),(0,a.kt)("h3",{id:"updating-your-sshconfig"},"Updating your ~/.ssh/config"),(0,a.kt)("p",null,"Now, using VScode, let's have a look at our ssh config file : "),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"CMD + shift + P"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"Remote-SSH : Open SSH configuration file"))),(0,a.kt)("p",null,"Into this file, add the following content and make sure to ",(0,a.kt)("strong",{parentName:"p"},"replace the full ProxyCommand")," by the way copied ealier :"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"Host my-instance-name\n HostName my-instance-name\n IdentityFile /Users/YOURNAME/.ssh/google_compute_engine\n CheckHostIP no\n HashKnownHosts no\n HostKeyAlias my-instance-name\n IdentitiesOnly yes\n StrictHostKeyChecking yes\n UserKnownHostsFile /Users/YOURNAME/.ssh/google_compute_known_hosts\n ProxyCommand /Library/Frameworks/Python [....] -verbosity=warning\n ProxyUseFdpass no\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("em",{parentName:"p"},"Host, HostName & HostKeyAlias")," can all be replaced by whatever value you wish.\nDo not forget ",(0,a.kt)("em",{parentName:"p"},"setting the right UserKnownHostsFile")," directory as well as pasting the ",(0,a.kt)("em",{parentName:"p"},"full ProxyCommand content"))),(0,a.kt)("h3",{id:"connect-to-host-on-vscode"},"Connect to Host on VSCode"),(0,a.kt)("p",null,"Now, you should be able to remote SSH your IAP-secured instance directly on VScode."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"CMD + shift + P"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("strong",{parentName:"p"},"Remote-SSH : Connect to Host"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Pick your new entry ",(0,a.kt)("strong",{parentName:"p"},"'my-instance-name'"),", which should appear")),(0,a.kt)("p",null,"You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"There might be a few additional steps on a ",(0,a.kt)("strong",{parentName:"p"},"Windows")," environment where you use ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"Windows Subsystem for Linux")),". By default, VSCode does not use the WSL's ssh, which is a problem. See ",(0,a.kt)("a",{parentName:"p",href:"#troubleshoot"},"Troubleshoot")," below.")),(0,a.kt)("hr",null),(0,a.kt)("h2",{id:"troubleshoot"},"Troubleshoot"),(0,a.kt)("h3",{id:"ssh-issues-with-wsl--vscode-on-windows"},"SSH issues with WSL & VScode on Windows"),(0,a.kt)("p",null,"Coming later"))}A.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ebfee794.96440a6a.js b/assets/js/ebfee794.acd3e249.js similarity index 98% rename from assets/js/ebfee794.96440a6a.js rename to assets/js/ebfee794.acd3e249.js index 18b10a3..3e2190d 100644 --- a/assets/js/ebfee794.96440a6a.js +++ b/assets/js/ebfee794.acd3e249.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[305],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=s(n),d=o,f=m["".concat(c,".").concat(d)]||m[d]||u[d]||a;return n?r.createElement(f,l(l({ref:t},p),{},{components:n})):r.createElement(f,l({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:o,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));const a={sidebar_position:0},l="Welcome",i={unversionedId:"welcome",id:"welcome",title:"Welcome",description:"Welcome to the documentation space.",source:"@site/docs/welcome.md",sourceDirName:".",slug:"/welcome",permalink:"/docs/welcome",draft:!1,tags:[],version:"current",lastUpdatedAt:1689290479,formattedLastUpdatedAt:"Jul 13, 2023",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"tutorialSidebar",next:{title:"Data Recovery Plan",permalink:"/docs/Engineering principles/DRP"}},c={},s=[{value:"Sections coming soon",id:"sections-coming-soon",level:3},{value:"Blog posts subjects to be covered",id:"blog-posts-subjects-to-be-covered",level:3}],p={toc:s};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("p",null,"Welcome to the documentation space."),(0,o.kt)("h3",{id:"sections-coming-soon"},"Sections coming soon"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Cloud Service Providers : AWS, GCP \u2601\ufe0f"),(0,o.kt)("li",{parentName:"ul"},"TheHive \ud83d\udc1d"),(0,o.kt)("li",{parentName:"ul"},"Shuffle \ud83d\udd00"),(0,o.kt)("li",{parentName:"ul"},"Splunk \ud83e\udeb5 ",(0,o.kt)("em",{parentName:"li"},"(log pun intended)")),(0,o.kt)("li",{parentName:"ul"},"Python \ud83d\udc0d"),(0,o.kt)("li",{parentName:"ul"},"VSCode \ud83d\udcbb")),(0,o.kt)("h3",{id:"blog-posts-subjects-to-be-covered"},"Blog posts subjects to be covered"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Security Operations Center"),(0,o.kt)("li",{parentName:"ul"},"Security Operations Automation"),(0,o.kt)("li",{parentName:"ul"},"Identity-Aware Proxy")),(0,o.kt)("admonition",{title:"Note to self",type:"note"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"Stay hydrated! \ud83d\udca6"),(0,o.kt)("li",{parentName:"ul"},"Easy with the all-nighters \ud83d\ude34"),(0,o.kt)("li",{parentName:"ul"},"You hold the keys to the path you'll walk down \u26f0"))))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[305],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=s(n),d=o,f=m["".concat(c,".").concat(d)]||m[d]||u[d]||a;return n?r.createElement(f,l(l({ref:t},p),{},{components:n})):r.createElement(f,l({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:o,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));const a={sidebar_position:0},l="Welcome",i={unversionedId:"welcome",id:"welcome",title:"Welcome",description:"Welcome to the documentation space.",source:"@site/docs/welcome.md",sourceDirName:".",slug:"/welcome",permalink:"/docs/welcome",draft:!1,tags:[],version:"current",lastUpdatedAt:1689291378,formattedLastUpdatedAt:"Jul 13, 2023",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"tutorialSidebar",next:{title:"Data Recovery Plan",permalink:"/docs/Engineering principles/DRP"}},c={},s=[{value:"Sections coming soon",id:"sections-coming-soon",level:3},{value:"Blog posts subjects to be covered",id:"blog-posts-subjects-to-be-covered",level:3}],p={toc:s};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("p",null,"Welcome to the documentation space."),(0,o.kt)("h3",{id:"sections-coming-soon"},"Sections coming soon"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Cloud Service Providers : AWS, GCP \u2601\ufe0f"),(0,o.kt)("li",{parentName:"ul"},"TheHive \ud83d\udc1d"),(0,o.kt)("li",{parentName:"ul"},"Shuffle \ud83d\udd00"),(0,o.kt)("li",{parentName:"ul"},"Splunk \ud83e\udeb5 ",(0,o.kt)("em",{parentName:"li"},"(log pun intended)")),(0,o.kt)("li",{parentName:"ul"},"Python \ud83d\udc0d"),(0,o.kt)("li",{parentName:"ul"},"VSCode \ud83d\udcbb")),(0,o.kt)("h3",{id:"blog-posts-subjects-to-be-covered"},"Blog posts subjects to be covered"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Security Operations Center"),(0,o.kt)("li",{parentName:"ul"},"Security Operations Automation"),(0,o.kt)("li",{parentName:"ul"},"Identity-Aware Proxy")),(0,o.kt)("admonition",{title:"Note to self",type:"note"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"Stay hydrated! \ud83d\udca6"),(0,o.kt)("li",{parentName:"ul"},"Easy with the all-nighters \ud83d\ude34"),(0,o.kt)("li",{parentName:"ul"},"You hold the keys to the path you'll walk down \u26f0"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.4dce04e0.js b/assets/js/runtime~main.de20a4bb.js similarity index 78% rename from assets/js/runtime~main.4dce04e0.js rename to assets/js/runtime~main.de20a4bb.js index b6fdb43..a594bac 100644 --- a/assets/js/runtime~main.4dce04e0.js +++ b/assets/js/runtime~main.de20a4bb.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,r,a,c,f={},o={};function d(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={id:e,loaded:!1,exports:{}};return f[e].call(r.exports,r,r.exports,d),r.loaded=!0,r.exports}d.m=f,d.c=o,e=[],d.O=(t,r,a,c)=>{if(!r){var f=1/0;for(i=0;i=c)&&Object.keys(d.O).every((e=>d.O[e](r[n])))?r.splice(n--,1):(o=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[r,a,c]},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var c=Object.create(null);d.r(c);var f={};t=t||[null,r({}),r([]),r(r)];for(var o=2&a&&e;"object"==typeof o&&!~t.indexOf(o);o=r(o))Object.getOwnPropertyNames(o).forEach((t=>f[t]=()=>e[t]));return f.default=()=>e,d.d(c,f),c},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((t,r)=>(d.f[r](e,t),t)),[])),d.u=e=>"assets/js/"+({13:"01a85c17",53:"935f2afb",85:"1f391b9e",89:"a6aa9e1f",103:"ccc49370",228:"a5e00c02",237:"1df93b7f",295:"c37619b8",305:"ebfee794",317:"41d37d98",322:"9d09d54c",414:"393be207",430:"843ef7c4",477:"b2f554cd",481:"b38cbf7d",514:"1be78505",533:"b2b675dd",535:"814f3328",608:"9e4087bc",610:"6875c492",713:"a7023ddc",717:"7dd8714f",743:"20417f73",778:"8037d0b1",802:"d2c8aa9a",918:"17896441",979:"5ad2500b",994:"20f5c5cb"}[e]||e)+"."+{13:"a3a80bdc",53:"c8ea9864",68:"d756a874",85:"36c29d22",89:"61915816",103:"9b729f11",228:"73dfb879",237:"8dda6b21",295:"e14828fe",305:"96440a6a",317:"5354aaff",322:"23c36feb",414:"df122eef",430:"f5893efa",477:"737a07f8",481:"ab35f691",506:"3a3f91b1",514:"9fe43ff5",529:"9f699b90",533:"fd8b9d2a",535:"81294198",543:"bf48782a",608:"edcebb74",610:"8ad340f2",713:"59221ce3",717:"b6bda3d0",743:"59cd2589",778:"e8e3f08e",802:"0aec0257",918:"e6533fc6",972:"5058414f",979:"263eea9e",994:"f8a26419"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},c="my-website:",d.l=(e,t,r,f)=>{if(a[e])a[e].push(t);else{var o,n;if(void 0!==r)for(var b=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(s);var c=a[e];if(delete a[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),n&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"918","01a85c17":"13","935f2afb":"53","1f391b9e":"85",a6aa9e1f:"89",ccc49370:"103",a5e00c02:"228","1df93b7f":"237",c37619b8:"295",ebfee794:"305","41d37d98":"317","9d09d54c":"322","393be207":"414","843ef7c4":"430",b2f554cd:"477",b38cbf7d:"481","1be78505":"514",b2b675dd:"533","814f3328":"535","9e4087bc":"608","6875c492":"610",a7023ddc:"713","7dd8714f":"717","20417f73":"743","8037d0b1":"778",d2c8aa9a:"802","5ad2500b":"979","20f5c5cb":"994"}[e]||e,d.p+d.u(e)},(()=>{var e={303:0,532:0};d.f.j=(t,r)=>{var a=d.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var c=new Promise(((r,c)=>a=e[t]=[r,c]));r.push(a[2]=c);var f=d.p+d.u(t),o=new Error;d.l(f,(r=>{if(d.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var c=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;o.message="Loading chunk "+t+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,a[1](o)}}),"chunk-"+t,t)}},d.O.j=t=>0===e[t];var t=(t,r)=>{var a,c,f=r[0],o=r[1],n=r[2],b=0;if(f.some((t=>0!==e[t]))){for(a in o)d.o(o,a)&&(d.m[a]=o[a]);if(n)var i=n(d)}for(t&&t(r);b{"use strict";var e,t,r,a,c,f={},o={};function d(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={id:e,loaded:!1,exports:{}};return f[e].call(r.exports,r,r.exports,d),r.loaded=!0,r.exports}d.m=f,d.c=o,e=[],d.O=(t,r,a,c)=>{if(!r){var f=1/0;for(i=0;i=c)&&Object.keys(d.O).every((e=>d.O[e](r[b])))?r.splice(b--,1):(o=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[r,a,c]},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var c=Object.create(null);d.r(c);var f={};t=t||[null,r({}),r([]),r(r)];for(var o=2&a&&e;"object"==typeof o&&!~t.indexOf(o);o=r(o))Object.getOwnPropertyNames(o).forEach((t=>f[t]=()=>e[t]));return f.default=()=>e,d.d(c,f),c},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((t,r)=>(d.f[r](e,t),t)),[])),d.u=e=>"assets/js/"+({13:"01a85c17",53:"935f2afb",85:"1f391b9e",89:"a6aa9e1f",103:"ccc49370",228:"a5e00c02",237:"1df93b7f",295:"c37619b8",305:"ebfee794",317:"41d37d98",322:"9d09d54c",414:"393be207",430:"843ef7c4",477:"b2f554cd",481:"b38cbf7d",514:"1be78505",533:"b2b675dd",535:"814f3328",608:"9e4087bc",610:"6875c492",713:"a7023ddc",717:"7dd8714f",743:"20417f73",778:"8037d0b1",802:"d2c8aa9a",918:"17896441",979:"5ad2500b",994:"20f5c5cb"}[e]||e)+"."+{13:"a3a80bdc",53:"c8ea9864",68:"d756a874",85:"36c29d22",89:"61915816",103:"9b729f11",228:"73dfb879",237:"8dda6b21",295:"28e5cbf9",305:"acd3e249",317:"5354aaff",322:"23c36feb",414:"df122eef",430:"f5893efa",477:"737a07f8",481:"b3b19047",506:"3a3f91b1",514:"9fe43ff5",529:"9f699b90",533:"fd8b9d2a",535:"81294198",543:"bf48782a",608:"edcebb74",610:"8ad340f2",713:"59221ce3",717:"7f54b122",743:"59cd2589",778:"e1676fac",802:"0aec0257",918:"e6533fc6",972:"5058414f",979:"263eea9e",994:"025c6f9b"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},c="my-website:",d.l=(e,t,r,f)=>{if(a[e])a[e].push(t);else{var o,b;if(void 0!==r)for(var n=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(s);var c=a[e];if(delete a[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"918","01a85c17":"13","935f2afb":"53","1f391b9e":"85",a6aa9e1f:"89",ccc49370:"103",a5e00c02:"228","1df93b7f":"237",c37619b8:"295",ebfee794:"305","41d37d98":"317","9d09d54c":"322","393be207":"414","843ef7c4":"430",b2f554cd:"477",b38cbf7d:"481","1be78505":"514",b2b675dd:"533","814f3328":"535","9e4087bc":"608","6875c492":"610",a7023ddc:"713","7dd8714f":"717","20417f73":"743","8037d0b1":"778",d2c8aa9a:"802","5ad2500b":"979","20f5c5cb":"994"}[e]||e,d.p+d.u(e)},(()=>{var e={303:0,532:0};d.f.j=(t,r)=>{var a=d.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var c=new Promise(((r,c)=>a=e[t]=[r,c]));r.push(a[2]=c);var f=d.p+d.u(t),o=new Error;d.l(f,(r=>{if(d.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var c=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;o.message="Loading chunk "+t+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,a[1](o)}}),"chunk-"+t,t)}},d.O.j=t=>0===e[t];var t=(t,r)=>{var a,c,f=r[0],o=r[1],b=r[2],n=0;if(f.some((t=>0!==e[t]))){for(a in o)d.o(o,a)&&(d.m[a]=o[a]);if(b)var i=b(d)}for(t&&t(r);n Blog | Fabien Bloume - +

· One min read
Fabien Bloume

My name is Fabien, I'm a 27 years old cybersecurity engineer and.. this is my first blog post on here. :)

Most of my posts here will be tech-related and the main goal is to document my learning and exploration journey.

From time-to-time, some posts might be more personal, like travel or music related; I just hope to make of that space one that truly defines things I wish to share and I'm passionnate about. Making it as comfortable as I wish it to be. No worries, tagging might be used in order to separate those!

A documentation tab will also be present to allow for storing quick tips & tricks on specific subjects : cloud, python, automation, security operations and so on.

If some things are useful to me, then they might be to you; welcome to my space.

Enjoy!

- + \ No newline at end of file diff --git a/blog/archive.html b/blog/archive.html index 5f33ddd..0bef6e3 100644 --- a/blog/archive.html +++ b/blog/archive.html @@ -5,13 +5,13 @@ Archive | Fabien Bloume - +
- + \ No newline at end of file diff --git a/blog/hello-world.html b/blog/hello-world.html index fa44ad4..b8c9654 100644 --- a/blog/hello-world.html +++ b/blog/hello-world.html @@ -5,13 +5,13 @@ Hello world! | Fabien Bloume - +

Hello world!

· One min read
Fabien Bloume

My name is Fabien, I'm a 27 years old cybersecurity engineer and.. this is my first blog post on here. :)

Most of my posts here will be tech-related and the main goal is to document my learning and exploration journey.

From time-to-time, some posts might be more personal, like travel or music related; I just hope to make of that space one that truly defines things I wish to share and I'm passionnate about. Making it as comfortable as I wish it to be. No worries, tagging might be used in order to separate those!

A documentation tab will also be present to allow for storing quick tips & tricks on specific subjects : cloud, python, automation, security operations and so on.

If some things are useful to me, then they might be to you; welcome to my space.

Enjoy!

- + \ No newline at end of file diff --git a/blog/tags.html b/blog/tags.html index b52ca18..6eab385 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -5,13 +5,13 @@ Tags | Fabien Bloume - +
- + \ No newline at end of file diff --git a/blog/tags/introduction.html b/blog/tags/introduction.html index a77fbe9..336114b 100644 --- a/blog/tags/introduction.html +++ b/blog/tags/introduction.html @@ -5,13 +5,13 @@ One post tagged with "introduction" | Fabien Bloume - +

One post tagged with "introduction"

View All Tags

· One min read
Fabien Bloume

My name is Fabien, I'm a 27 years old cybersecurity engineer and.. this is my first blog post on here. :)

Most of my posts here will be tech-related and the main goal is to document my learning and exploration journey.

From time-to-time, some posts might be more personal, like travel or music related; I just hope to make of that space one that truly defines things I wish to share and I'm passionnate about. Making it as comfortable as I wish it to be. No worries, tagging might be used in order to separate those!

A documentation tab will also be present to allow for storing quick tips & tricks on specific subjects : cloud, python, automation, security operations and so on.

If some things are useful to me, then they might be to you; welcome to my space.

Enjoy!

- + \ No newline at end of file diff --git a/docs/Engineering principles/DRP.html b/docs/Engineering principles/DRP.html index cc9de6c..70facb9 100644 --- a/docs/Engineering principles/DRP.html +++ b/docs/Engineering principles/DRP.html @@ -5,13 +5,13 @@ Data Recovery Plan | Fabien Bloume - +
-

Data Recovery Plan

Resources

Infrastructure as Code

  • Used for provisioning and managing cloud resources

  • Creating and provisioning a VM

  • Referring to all APIs used to deploy infrastructure

  • Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be.

Popular solution : Hashicorp Terraform, which is multi API / multi-cloud with an open-source core.

Configuration Management

  • Used for virtual machine OS-level configuration
  • Configuring the internals of the VMs
  • Referring to package configuration & software maintenance
- +

Data Recovery Plan

Resources

Infrastructure as Code

  • Used for provisioning and managing cloud resources

  • Creating and provisioning a VM

  • Referring to all APIs used to deploy infrastructure

  • Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be.

Popular solution : Hashicorp Terraform, which is multi API / multi-cloud with an open-source core.

Configuration Management

  • Used for virtual machine OS-level configuration
  • Configuring the internals of the VMs
  • Referring to package configuration & software maintenance
+ \ No newline at end of file diff --git a/docs/GCP/Identity-Aware Proxy/port-forwarding.html b/docs/GCP/Identity-Aware Proxy/port-forwarding.html index 72c85b0..997271c 100644 --- a/docs/GCP/Identity-Aware Proxy/port-forwarding.html +++ b/docs/GCP/Identity-Aware Proxy/port-forwarding.html @@ -5,13 +5,13 @@ Port-forwarding to localhost | Fabien Bloume - +
-

Port-forwarding to localhost

Install the gcloud CLI

Official documentation

Authentication with the CLI

Before each session you may launch, make sure to be authenticated with your gcloud account within the CLI

gcloud auth login
gcloud auth login --no-launch-browser

Port-forwarding your application port to your localhost

If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command.

gcloud compute start-iap-tunnel vectr-test-instance 8501     --local-host-port=localhost:8501
- +

Port-forwarding to localhost

Install the gcloud CLI

Official documentation

Authentication with the CLI

Before each session you may launch, make sure to be authenticated with your gcloud account within the CLI

gcloud auth login
gcloud auth login --no-launch-browser

Port-forwarding your application port to your localhost

If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command.

gcloud compute start-iap-tunnel vectr-test-instance 8501     --local-host-port=localhost:8501
+ \ No newline at end of file diff --git a/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.html b/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.html index fce44b6..9f4d8dc 100644 --- a/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.html +++ b/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.html @@ -5,15 +5,15 @@ Remote SSH an IAP-secured server using a terminal or VSCode | Fabien Bloume - +

Remote SSH an IAP-secured server using a terminal or VSCode

Getting started

Install the gcloud CLI

Official documentation

Authentication with the CLI

Before each session you may launch, make sure to be authenticated with your gcloud account within the CLI

gcloud auth login

Using a standard terminal

Very straightforward, make sure to be authenticated and run the following command :

gcloud compute ssh my-instance --tunnel-through-iap 

Using VSCode Remote Explorer

CLI Authentication

As usual, make sure to be authenticated : gcloud authentication

SSH tunnel dry run

Then, make sure to dry run ssh tunnel to your instance :

gcloud compute ssh my-instance --tunnel-through-iap --dry-run

You should get a response similar to that one :

/usr/bin/ssh -t -i /Users/YOURNAME/.ssh/google_compute_engine 
-o CheckHostIP=no
-o HashKnownHosts=no -o HostKeyAlias=compute.XXXX -o IdentitiesOnly=yes
-o StrictHostKeyChecking=yes
-o UserKnownHostsFile=/Users/YOURNAME/.ssh/google_compute_known_hosts
-o ProxyCommand="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -S /Applications/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel my-instance %p --listen-on-stdin --project=my-project --zone=my-zone --verbosity=warning"
-o ProxyUseFdpass=no YOURNAME@compute.XXXX

Now, what we are going to do is to copy the ProxyCommand out of it, which contains the info we need : /Library/Frameworks/Python [....] -verbosity=warning

Updating your ~/.ssh/config

Now, using VScode, let's have a look at our ssh config file :

CMD + shift + P

Remote-SSH : Open SSH configuration file

Into this file, add the following content and make sure to replace the full ProxyCommand by the way copied ealier :

Host my-instance-name
HostName my-instance-name
IdentityFile /Users/YOURNAME/.ssh/google_compute_engine
CheckHostIP no
HashKnownHosts no
HostKeyAlias my-instance-name
IdentitiesOnly yes
StrictHostKeyChecking yes
UserKnownHostsFile /Users/YOURNAME/.ssh/google_compute_known_hosts
ProxyCommand /Library/Frameworks/Python [....] -verbosity=warning
ProxyUseFdpass no
info

Host, HostName & HostKeyAlias can all be replaced by whatever value you wish. -Do not forget setting the right UserKnownHostsFile directory as well as pasting the full ProxyCommand content

Connect to Host on VSCode

Now, you should be able to remote SSH your IAP-secured instance directly on VScode.

CMD + shift + P

Remote-SSH : Connect to Host

Pick your new entry 'my-instance-name', which should appear

You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer.

caution

There might be a few additional steps on a Windows environment where you use Windows Subsystem for Linux. By default, VSCode does not use the WSL's ssh, which is a problem. See Troubleshoot below.


Troubleshoot

SSH issues with WSL & VScode on Windows

Coming later

- +Do not forget setting the right UserKnownHostsFile directory as well as pasting the full ProxyCommand content

Connect to Host on VSCode

Now, you should be able to remote SSH your IAP-secured instance directly on VScode.

CMD + shift + P

Remote-SSH : Connect to Host

Pick your new entry 'my-instance-name', which should appear

You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer.

caution

There might be a few additional steps on a Windows environment where you use Windows Subsystem for Linux. By default, VSCode does not use the WSL's ssh, which is a problem. See Troubleshoot below.


Troubleshoot

SSH issues with WSL & VScode on Windows

Coming later

+ \ No newline at end of file diff --git a/docs/GCP/Terraform/init.html b/docs/GCP/Terraform/init.html index 5633f1f..bd0baea 100644 --- a/docs/GCP/Terraform/init.html +++ b/docs/GCP/Terraform/init.html @@ -5,13 +5,13 @@ Hi! | Fabien Bloume - + - +
+ \ No newline at end of file diff --git a/docs/Security Operations/secops-resources.html b/docs/Security Operations/secops-resources.html index cf5754e..cb39330 100644 --- a/docs/Security Operations/secops-resources.html +++ b/docs/Security Operations/secops-resources.html @@ -5,13 +5,13 @@ Resources | Fabien Bloume - +
-

Resources

MITRE Frameworks

CTI

NameLinkOwner
Navigatorhttps://mitre.github.io/attack-navigator/enterprise/MITRE
CARhttps://car.mitre.org/wiki/Main_PageMITRE
AMITThttps://github.com/misinfosecproject/amitt_framework
MISPhttps://www.misp-project.orgMISP Project

Detection / Hunting / Blue Teams

NameLinkOwner
SIGMAhttps://github.com/Neo23x0/sigmaFlorian Roth / Thomas Patzke
SIGMA Ruleshttps://github.com/Neo23x0/sigma/tree/master/rulesFlorian Roth
OSCD Communityhttps://oscd.community
BZARhttps://github.com/mitre-attack/bzarMITRE
SIGMA Editorhttps://tdm.socprime.com/sigma/generate/SOCPRIME
UNCODERhttps://uncoder.io/SOCPRIME
Threathunter Playbookhttps://github.com/Cyb3rWard0g/ThreatHunter-PlaybookRoberto Rodriguez
ThreatHunting Apphttps://github.com/olafhartong/ThreatHuntingOlaf Hartong
Atomic Threat Coveragehttps://github.com/atc-project/atomic-threat-coverageATC Project
RE&CThttps://atc-project.github.io/atc-react/ATC Project
DETT&CThttps://github.com/rabobank-cdc/DeTTECTMarcus Bakker / Ruben Bouwman
attack2jirahttps://github.com/mvelazc0/attack2jiraMauricio Velazco

Prevention / Purple-Red Teams / Testing of Controls

NameLinkOwner
CALDERAhttps://github.com/mitre/calderaMITRE
Atomic Red Teamhttps://github.com/redcanaryco/atomic-red-teamRed Canary
SPLUNK ATTACK Rangehttps://github.com/splunk/attack_rangeSPLUNK
MORDORhttps://mordordatasets.com/introduction.htmlRoberto Rodriguez
PurpleSharphttps://github.com/mvelazc0/PurpleSharpMauricio Velazco
VECTRhttps://github.com/SecurityRiskAdvisors/VECTRSecurity Risk Advisors

Unclassified

- +

Resources

MITRE Frameworks

CTI

NameLinkOwner
Navigatorhttps://mitre.github.io/attack-navigator/enterprise/MITRE
CARhttps://car.mitre.org/wiki/Main_PageMITRE
AMITThttps://github.com/misinfosecproject/amitt_framework
MISPhttps://www.misp-project.orgMISP Project

Detection / Hunting / Blue Teams

NameLinkOwner
SIGMAhttps://github.com/Neo23x0/sigmaFlorian Roth / Thomas Patzke
SIGMA Ruleshttps://github.com/Neo23x0/sigma/tree/master/rulesFlorian Roth
OSCD Communityhttps://oscd.community
BZARhttps://github.com/mitre-attack/bzarMITRE
SIGMA Editorhttps://tdm.socprime.com/sigma/generate/SOCPRIME
UNCODERhttps://uncoder.io/SOCPRIME
Threathunter Playbookhttps://github.com/Cyb3rWard0g/ThreatHunter-PlaybookRoberto Rodriguez
ThreatHunting Apphttps://github.com/olafhartong/ThreatHuntingOlaf Hartong
Atomic Threat Coveragehttps://github.com/atc-project/atomic-threat-coverageATC Project
RE&CThttps://atc-project.github.io/atc-react/ATC Project
DETT&CThttps://github.com/rabobank-cdc/DeTTECTMarcus Bakker / Ruben Bouwman
attack2jirahttps://github.com/mvelazc0/attack2jiraMauricio Velazco

Prevention / Purple-Red Teams / Testing of Controls

NameLinkOwner
CALDERAhttps://github.com/mitre/calderaMITRE
Atomic Red Teamhttps://github.com/redcanaryco/atomic-red-teamRed Canary
SPLUNK ATTACK Rangehttps://github.com/splunk/attack_rangeSPLUNK
MORDORhttps://mordordatasets.com/introduction.htmlRoberto Rodriguez
PurpleSharphttps://github.com/mvelazc0/PurpleSharpMauricio Velazco
VECTRhttps://github.com/SecurityRiskAdvisors/VECTRSecurity Risk Advisors

Unclassified

+ \ No newline at end of file diff --git a/docs/welcome.html b/docs/welcome.html index d46d264..42e27f2 100644 --- a/docs/welcome.html +++ b/docs/welcome.html @@ -5,13 +5,13 @@ Welcome | Fabien Bloume - +
-

Welcome

Welcome to the documentation space.

Sections coming soon

  • Cloud Service Providers : AWS, GCP ☁️
  • TheHive 🐝
  • Shuffle 🔀
  • Splunk 🪵 (log pun intended)
  • Python 🐍
  • VSCode 💻

Blog posts subjects to be covered

  • Security Operations Center
  • Security Operations Automation
  • Identity-Aware Proxy
Note to self
  • Stay hydrated! 💦
  • Easy with the all-nighters 😴
  • You hold the keys to the path you'll walk down ⛰
- +

Welcome

Welcome to the documentation space.

Sections coming soon

  • Cloud Service Providers : AWS, GCP ☁️
  • TheHive 🐝
  • Shuffle 🔀
  • Splunk 🪵 (log pun intended)
  • Python 🐍
  • VSCode 💻

Blog posts subjects to be covered

  • Security Operations Center
  • Security Operations Automation
  • Identity-Aware Proxy
Note to self
  • Stay hydrated! 💦
  • Easy with the all-nighters 😴
  • You hold the keys to the path you'll walk down ⛰
+ \ No newline at end of file diff --git a/index.html b/index.html index 3eee60d..c0a3bec 100644 --- a/index.html +++ b/index.html @@ -5,13 +5,13 @@ About me | Fabien Bloume - +

Fabien Bloume

Cybersecurity engineer focused into cloud, tech, and adventure. Exploring things.



Experience

Engineering Diploma in Information Technology

IMT Nord Europe

Sep 2013- July 2019

General engineering, plenty of maths, physics, electronics, computer science.

Specialization in Cybersecurity and Big Data

Had the chance to have internships and work experiences in Czech Republic, Malaysia, China.

- + \ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html index 2315e76..1211b1e 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -5,13 +5,13 @@ Markdown page example | Fabien Bloume - +

Markdown page example

You don't need React to write simple standalone pages.

- + \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..a4dbabb --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: /docs +Allow: /blog \ No newline at end of file