[HTTPS] TLS/SSL指南 – (Ciphers/CURL Test)

Intro TLS – 傳輸層安全性協定 (Transport Layer Security) Cipher suite SSL Lab – Checking server online 實作 查看 Cipher suite list $ openssl ciphers -v TLS_RSA_WITH_AES_128_GCM_SHA256 對應指令為 AES128-GCM-SHA256 Curl 指定 Cipher $ curl -v –ciphers ECDHE-RSA-AES128-SHA256 “https://target.host” 需確認CURL版本支援–ciphers,經測試version 7.47.0不支援 指定最高TLS版本 $ […]

[HTTPS] Two-way SSL – SSL雙向驗證 on Nginx

Intro Two-way SSL即Server端也要求Client端提供certificate做驗證,handshake流程上是Client端先驗證Server端後才換Server端驗證Client端。 圖片來源:web-service-principles – HTTP Client端憑證 Client端提供終端憑證並設定使用該憑證對應的Private Key; Server端設定Client端的CA憑證,以用於驗證Client端提供的終端憑證。 [Server] TLS/SSL憑證(Certificate)常用指令 – 製作CSR Nginx設定 Nginx可以在Server block上啟用驗證Client端certificate: server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/public.crt; ssl_certificate_key /etc/nginx/ssl/private.rsa; # Client certificate verification ssl_client_certificate /etc/nginx/ssl/client_ca.pem; ssl_verify_client on; server_name api.my_domain.com; location / { # […]

[AWS] VPC 設定指南 (NAT Gateway)

Intro AWS VPC為提供完整雲端網路架構設定。 服務定義 (Definitions) Compare AWS and Azure services to Google Cloud (Reference: Ashish Patel Medium) VPC (Virtual Private Cloud) 可視為一個 AWS tenant 的虛擬網路,CIDR 限制可以參考 VPC CIDR blocks CIDR (Classless Inter-Domain Routing): 通過可變長度的子網路遮罩來劃分 IP 地址的方法 Private IPv4 ranges (RFC-1918): […]

[Web] Nginx limit_req 指南 – ngx_http_limit_req_module

Intro Nginx限制訪問速率模組:Nginx http_limit_req 原理 使用leaky bucket原理(可以稱漏桶原理),桶的概念如下: 桶中存放request (令牌的概念) 桶上方由Nginx照設定速率計算補充request 桶下方提供提取request,即一個Request會消耗掉桶中存放的一個request Nginx對於桶的特性如下: 單一IP對應使用一個桶 limit_req_zone中rate是以request數量回推時間做補充的,依照兩次領取的時差補充相應的量 limit_req中burst即定義桶的request最大存放量,在每個新IP(不在Zone中)進入時會拿到全滿request(burst量)的桶 重啟Nginx會清空Zone,意即所有桶的剩餘Quota記憶清除,重新以全滿計算 比照實際設定,limit_req_zone $binary_remote_addr zone=one:10m rate=6r/m;即每間隔10秒可以得到一個request補充量。以rate=100r/s速率來說明,即每0.01秒得一個request補充量,間距0.1秒計算得10個request補充量; 而limit_req zone=one burst=5 nodelay;則表示每個IP桶最大預存的request量為5,有用掉則需等待補充。 Nginx實際上實作leaky bucket補充的方式可能為Trigger回填間隔補充量方式,本篇僅為概念說明,不代表實際Nginx演算法 Reference Nginx下limit_req模块burst参数超详细解析

[Network] Fail2ban 指南 – 搭配 SSH/Nginx (DDoS、Request Limit)

Outline SSH 設定方針 Nginx 防禦設定方針 Access log Error log by llimit_req_zone 進階 Fail2ban 設定 Email Notifications * Intro Fail2ban – Manuals 架構 Fail2ban 是依照設定檔執行過濾,原始設定檔路徑: /etc/fail2ban/jail.conf 如要修改新增可以複製建立成local的設定檔名稱,如有此檔會以此檔優先: /etc/fail2ban/jail.local /etc/fail2ban/jail.d/* Ubuntu Fail2ban 0.9 版本中可以找到預設的/etc/fail2ban/jail.d/defaults-debian.conf,內容是對[sshd]做enabled = true。 所以安裝好後預設即會開啟SSH保護(預設port為22) [過濾器名稱]會對應到/etc/fail2ban/filter.d/過濾器名稱.conf。 參數解析 官方文件 – Options […]

[Network] DNS (Domain Name System) 原理

Outline DNS Wiki Root Name Servers Theory RFC 1034 – Iterative 查詢標準: DNS resolution 順序: Resolution Process (圖片來源:Web Service Principles – DNS) Round-robin DNS Round-robin DNS Wiki (同個 A Record 設定多個 IP Answers) 舉例來說: $ nslookup -type=a a-record-with-2ip.local 8.8.8.8 Server: […]

[Network] 網路架構筆記

Intro 網路架構觀念筆記 Concepts 網路(Gateway)不可平行橋接、必有其parent。全球parent root再彼此同步。 網路與網路橋接需要網卡設IP接點,再利用Route Table去轉發路由,以IP分享器接主網路自己做NAT內網為例,主網路可以透過Route Table將IP分享器內網IP/CIDR轉發給IP分享器的主網路IP閘道,一般來說IP分享器會支援轉發滲透內網。 Router 一般來說,WAN埠支援L3、LAN埠僅支援到L2 WAN/LAN埠橋接模式分為路由模式或NAT Modes AP模式即為Get同網一個IP作為自己,並幫助同網繼續switch及配發DHCP。 Repeater(中繼)模式直接L1轉發,並不會Get同網IP,所以裝置也會隱匿於網路中。 AP-Client(ASUS Media Brige)模式可以理解成用WiFi去接AP模式的網路而變成同網Switch,本身不再提供AP模式(類無線橋接)。 LAN VLAN 虛擬區域網路(Virtual Local Area Network或簡寫VLAN,V-LAN)是一種建構於區域網路交換技術(LAN Switch)的網路管理的技術,網管人員可以藉此透過控制交換器有效分派出入區域網的封包到正確的出入埠,達到對不同實體區域網中的裝置進行邏輯分群(Grouping)管理,並降低區域網內大量資料流通時,因無用封包過多導致壅塞的問題,以及提昇區域網的資訊安全保障。 VLANs and Trunks for Beginners – Part 1 – Youtube Trunking Avaya與Cisco應用在VLAN上的Trunking是指將不同網段的VLAN群,能夠透過單一的網路線傳送資料至相對應的VLAN。[1] 使用的「trunking protocol」有IEEE_802.1Q與Cisco Inter-Switch Link協定,其邏輯為在資料中增加一個標籤(Tag)標示出所屬的VLAN,當資料傳送到另一端的VLAN群時,交換器可根據標籤得知資料該傳送到哪個VLAN。例如:同大樓中,1F的IT部門與5F的IT部門要互傳資料時,透過trunking […]

[Server] Let’s Encrypt with Certbot 指南

Intro Let’s Encrypt – Free SSL/TLS Certificates Certbot – Automatically enable HTTPS on your website with EFF’s Certbot, deploying Let’s Encrypt certificates 近年普遍使用Certbot做Let’s Encrypt憑證申請及自動續約。 快速申請 by Nginx 在單台Web server上使用Certbot快速對已設定的sites做申請,例如:Nginx on Ubuntu 16.04 (xenial) DNS認證申請 (LB佈署架構適用) 考慮Loading Balancing擴充性,如果要多台Nodes同時使用同一個憑證,就會回到單一Node申請佈署至Nodes上,這時使用DNS申請是比較好的選擇。 如不使用DNS Plugins,可以使用手動申請DNS Manual,指令如下: […]