CloudFormation: SecurityGroup

AWSTemplateFormatVersion: "2010-09-09"
Description: sg-create
Resources:
  SG1:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "test-create"
      GroupName: "security-group01"
      VpcId: "vpc-xxxxxxxxxxxxx"
      Tags:
        - Key: "Name"
          Value: "secg-01"
      SecurityGroupIngress:
        - IpProtocol:tcp
          FromPort:22
          ToPort:22
          CidrIp: "xxx.xxx.xxx.xxx/xx"

これ、全部やるの??

AWS Fargateとは

Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS) で動作するホストマシンを意識せずにコンテナを実行できる環境
AWS Fargateを利用すればコンテナと実行環境の2重管理が不要になるコンテナ向けサーバレスコンピューティング
EC2インスタンス、スケーリング、集合体のクラスターを管理する必要がなくなる

### Fargeteのメリット
– ホストマシンのOS、ミドルウェアの構築が必要ない
– インスタンスタイプやクラスター管理が不要
– AutoScaling
– インフラストラクチャの設計や設定の手間を省く

### Fargateのデメリット
パブリックIPの固定割り当てができない
sshやdocker execが使えない

### コスト
EC2より1~2割高

### 実践
fargateでtask definitionを作成します。

fargateで起動まではできた。VPCやsubnet、Security Groupなどは設定するのでEC2とあまり変わらないような気がするが、EC2のインスタンスタイプなどは設定しないので、そこはよしなにやってくれる

ECSで複数コンテナを動かしたい

まず、ローカルから環境を作ります。
$ tree
.
├── backend
│   └── index.js
├── docker
│   ├── express
│   │   └── Dockerfile
│   └── nuxt
│   └── Dockerfile
├── docker-compose.yml
└── frontend

5 directories, 4 files

backend/index.js

import express from 'express';
const app = express();
app.get('/', (req, res) => res.send('hello-world'));

frontend/pages/index.vue

<template>
	<div class="container">
		{{name}}
	</div>
</template>

<script>
export default {
	data() {
		return {
			name: null
		}
	},
	async asyncData({$axios}) {
		const res = await $axios.$get('hello');
		return {name:res}
	}
}
</script>

docker/express/Dockerfile

FROM node:14.4.0-alpine3.12
WORKDIR /app
COPY ./backend/package*.json ./
RUN npm ci
EXPOSE 8888
CMD ["npm", "run", "dev"]

docker/nuxt/Dockerfile

FROM node:14.4.0-alpine3.12
WORKDIR /app
ENV NUXT_HOST 0.0.0.0
COPY ./frontend/package*.json ./
RUN npm ci
EXPOSE 3000
CMD ["npm", "run", "dev"]

docker-compose.yml

version: "3"
services:
  front:
    tty: true
    build:
      context: .
      dockerfile: ./docker/nuxt/Dockerfile 
    volumes:
      - ./frontend:/app
      - /app/node_modules
    ports:
      - 3000:3000
  backend:
    tty: true
    build:
      context: .
      dockefile: ./docker/express/Dockerfile
    volumes:
      - ./backend:/app
      - /app/node_modules
    ports:
      - 8888:8888

### ECSの構成
タスクとはコンテナがまとまって動く単位
サービスとは複数コンテナの集合体、タスクを並列に動かすことができる

サービスの構成
– フロントエンドサービス
– バックエンドサービス

うーむ、なんかやりたいことと違うような気がするな…

[AWS] ALBを経由してECSを接続する

1. availability zone a, cのpublic subnetを2つ作っておき、target group, albを作成
2. create serviceの際に、application loadbalancerを選択し、作成したloadbalancerを選ぶ

3.作成されたalbのdnsを叩くと、コンテナに接続される

EC2 container instancesで2にすると、albでserviceを作成すると、ec2も2つ起動しているので、冗長化構成でできているように見えるが… どうなんだろうか….

次は複数コンテナをtask definitionで設定する方法だな

Browser Exploit Against SSL/TLSの脆弱性

### Browser Exploit Against SSL/TLS(BEAST)とは
SSL 3.0 の CBC モードを利用している場合、プロトコルに存在している脆弱性が悪用される可能性がある
暗号化ブロックの境界位置をイヴが自由にずらすことで、常に1バイトずつのブルートフォース攻撃が可能になる

### 対策
これらのプロトコルをサポートするサーバで TLS 1.2 または TLS 1.3 を有効にします。
これらのプロトコルをサポートするウェブブラウザで TLS 1.2 または TLS 1.3 を有効にします。

UbuntuではTLS1.2がデフォルトで有効になっている
なるほどー、最新OSを使うのは大事だな

RC4暗号とは?

### RC4暗号とは?
1ビット単位で暗号化・復号が可能なストリーム暗号(stream cipher)で、WEPやWPA、SSL/TLS、sshなど様々なプロトコルの暗号方式の一つとして採用
RC4は脆弱な暗号方式とされており、ブラウザのサポートが順次終了して利用できなくなる

RC4 暗号が暗号化で保護されなくなったため、RC4 のサポートが削除されるという合意が業界全体で存在している

### 無効化の方法
ubuntuの場合
/etc/apache2/site-available/default-ssl.conf

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!3DES:!RC4

sudo systemctl restart httpd.service

2^30.6 byteのキーストリームにより識別可能
2^44.7 byteのキーストリームにより識別可能
などが原因らしい
なるほどー

HttpOnly属性、URLエンコードとは?

### HttpOnly属性
httponly属性を指定すると、HTTPテキスト内のスクリプトからCookieをアクセスできなくなる。
クロスサイト・スクリプティングの脆弱性があっても、その脆弱性によってCookieを盗まれるという事態を防止できる。

php.ini

session.cookie_httponly = 1

### URLエンコードとは
あ -> %E3%81%82 など日本語文字などをURLに使って良い文字の組み合わせに変換すること
パーセントエンコードとも言われることがある
URLデコードは %E3%81%82 -> あ など

X-Content-Type-Options:nosniffとは?

Content-TypeはHTTPレスポンスヘッダに付与する属性
text/plain, text/html, application/json, application/pdfなど

### X-Content-Type-Options:nosniffとは?
ファイルの内容をContent-Type属性から判断してとお願いできる。

phpの場合

header("X-Content-Type-Options: nosniff");

なるほどー やりおる

VPN接続入門

### VPN概要
– 内部ネットワークあどれすは通常インターネットからDNSの名前解決ができない
– 接続先がプライベートアドレスを使っている場合もインターネットを介して接続できない
– 誰でも内部ネットワークに通信できるとセキュリティ上問題
— VPNだと認証後に接続先ネットワークと直接接続されているように使うことができる
— VPNはファイヤーウォールと一緒、個別に構築する場合はDMZに配置する
– 専用線は第三者がアクセスできないので通信の盗聴を予防できる
– VPNであれば既存の公衆回線を利用できる
– 離れた場所にあるネットワークに対し、同じLANにいるようなアクセスが実現できる

### トンネリング
元々のパケットにインターネットで使われるIPアドレスを追加することでインターネットでルーティングできるようになる。受信側では、追加されたIPアドレスを外して送信先のIPアドレスと通信
パケットにアドレス等を追加することをカプセル化と言う
データの暗号化には共通鍵暗号方式がよく使われる(DES, 3DES, RC4, AES, RSAなど)

### VPN接続の認証や共通鍵作成
ID, Passwordハッシュが使われる。MD5, SHA1, SHA2等が使われる
データ等をハッシュを利用してMAC値を生成(HMACと言う)

閉域網はインターネットとは分離隔離された形で閉域網を構築している

なるほどー、閉域網かあ

RSSでiOS developerの新着情報を取得しよう

$feed = file_get_contents('https://developer.apple.com/news/rss/news.rss');
$rss = simplexml_load_string($feed);

$i=0;
foreach($rss->channel->item as $item) {
	if($i < 10) {
		$date = $item->pubDate;
		$title = $item->title;
		$description = strip_tags($item->description);
		$description = substr($description, 0, 150) . "...";
		echo $date . "\n";
		echo $title . "\n";
		echo $description . "\n\n";
	}
	$i++;
}

$ php index.php
Tue, 15 Feb 2022 10:00:46 PST
Enable Family Sharing for your subscriptions
Family Sharing helps people share access to eligible auto-renewable subscriptions with up to five iCloud family members across their Apple devices. Yo…

Tue, 08 Feb 2022 08:40:52 PST
Get ready for App Store sessions
Connect with Apple experts through online sessions February 15 to March 29 to learn about the latest App Store features and get your questions answere…

Thu, 03 Feb 2022 22:35:55 PST
Additional details available for dating apps in the Netherlands
Throughout its history, Apple’s App Store has helped drive innovation in the Netherlands. Today, the iOS app economy supports over 184,000 Dutch job…

Tue, 01 Feb 2022 12:18:13 PST
Updated Apple Developer certificates now available
As a reminder, the intermediate certificate updates are now available for the Apple Push Notification service (APNs) and Developer ID.Apple Worldwide …

Wed, 26 Jan 2022 13:32:49 PST
Apple Search Ads now supports custom product pages
With custom product pages, you can create up to 35 additional versions of your App Store product page to showcase different app features, content, or …

Tue, 25 Jan 2022 16:27:41 PST
New App Store Connect API capabilities now available
The App Store Connect API now offers greater flexibility to automate and customize workflows for your app. With these new capabilities, you can create…

Sat, 22 Jan 2022 09:28:08 PST
Deadline for in-app purchase and account deletion requirements extended
In order to provide more time for you to update your apps, we’ve changed the following requirement deadlines to June 30, 2022.Online group event in-…

Thu, 20 Jan 2022 14:18:26 PST
Custom offer codes for subscriptions now available
Now it’s even easier to acquire, retain, and win back subscribers. In addition to one-time-use codes, you can now create custom codes in App Store Con…

Wed, 19 Jan 2022 07:00:24 PST
Explore the latest videos
Discover how you can add support for in-app events, develop for Apple Watch, learn about Metal for A15, and more.

これをメールでcronで送るか…

ほう