CIサーバのセキュリティを向上する

前回の記事ではnginxによるSSLプロキシを有効にして通信路を暗号化しました。が、今のままでは平文のHTTPでもアクセスできる状態になっていますので、これを閉じます。

例によってdocker-copose.ymlです。

version: '2'

services:
  # リポジトリ
  gitbucket:
    image: takezoe/gitbucket
    container_name: gitbucket
    volumes:
      - ./gitbucket/data:/gitbucket
    environment:
      - TZ=JST-9
    ports:
      - 8080
      - 29418:29418

  # CIサーバ
  jenkins:
    image: jenkins:alpine
    container_name: jenkins
    volumes:
      - ./jenkins/home:/var/jenkins_home
      - ./jenkins/executors.groovy:/usr/share/jenkins/ref/init.groovy.d/executors.groovy
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Tokyo
    ports:
      - 8080
      - 50000:50000

  # Rocket.Chatデータ
  db:
    image: mongo:3.0
    container_name: db
    volumes:
      - ./db/data:/data/db
    command: --smallfiles

  # Rocket.Chat本体
  rocket.chat:
    image: rocket.chat:latest
    container_name: rocket.chat
    environment:
      - ROOT_URL=http://localhost:8082
    links:
      - db
    ports:
      - 3000

  # リバースプロキシ
  nginx:
    image: nginx:alpine
    container_name: nginx
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt:ro
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - gitbucket
      - jenkins
      - rocket.chat
    ports:
      # HTTPS
      - 8280:8280
      - 8281:8281
      - 8282:8282

フォントを赤くした3箇所のexposeを解除して、コンテナ間でのみ通信するように変更しました。Jenkinsの50000番ポートについてはJNLPによる接続なので、使わないようであればこれもexposeする必要はないと思います。

GitBucketの29418番ポートは外部とのSSH通信のためのポートですので、このままにしておきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です