728x90
반응형

개요

Confluence버전이 오래 된 버전을 업그레이드합니다.

Confluence 5.10.8 → Confluence 7.3.5

또한, 4byte아이콘을 대응하기 때문에 MySQL버전을 5.6에서 5.7으로 업그레이드합니다(utf8->utf8mb4).

 

준비 작업

소프트웨어 다운로드:

https://www.atlassian.com/ja/software/confluence/download에서 아래의 Confluence버전을 다운로드한다
atlassian-confluence-7.3.5.tar.gz

https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.33/bin/apache-tomcat-9.0.33.tar.gz에서 Tomcat을 다운로드한다
새 버전의 설치 파일을 컨플루언스 서버 (/home/infra/)에 업로드 또는 wget 등

https://dev.mysql.com/downloads/connector/j/5.1.html에서 아래의 mysql드라이버를 다운로드한다
mysql-connector-java-5.1.48.tar.gz

다운로드 파일을 해제하고, mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar를

 컨플루언스 서버

(/home/infra/)에 전송

 

Confluence버전 업

  • 서비스 정지
    systemctl stop nginx
    systemctl stop tomcat
    systemctl stop mysqld
  • 백업으로 AMI작성
  • Confluence버전 업
    cd /home/infra
  • tar zxvf atlassian-confluence-7.3.5.tar.gz
    chmod 775 atlassian-confluence-7.3.5/confluence
    chown tomcat: -R atlassian-confluence-7.3.5/confluence
    mv /opt/apache-tomcat-8.0.47/webapps/confluence /tmp/
    mv atlassian-confluence-7.3.5/confluence /opt/apache-tomcat-8.0.47/webapps/
  • 설정 파일 변경
    vi /opt/apache-tomcat-8.0.47/webapps/confluence/WEB-INF/classes/confluence-init.properties
- # confluence.home=/var/data/confluence/
+ confluence.home=/var/data/confluence/
  • MySQL Connector파일 갱신
  • chown tomcat: mysql-connector-java-5.1.48-bin.jar
    mv mysql-connector-java-5.1.48-bin.jar /opt/apache-tomcat-8.0.47/webapps/confluence/WEB-INF/lib/
  • /etc/my.cnf설정 변경
    transaction-isolation=READ-COMMITTED를 추가하는

  • Tomcat버전 업
    tar zxvf apache-tomcat-9.0.33.tar.gz
    mv /opt/apache-tomcat-8.0.47/bin /tmp
    mv /opt/apache-tomcat-8.0.47/lib /tmp
    mv apache-tomcat-9.0.33/bin /opt/apache-tomcat-8.0.47/
    mv apache-tomcat-9.0.33/lib /opt/apache-tomcat-8.0.47/
    chown -R tomcat: /opt/apache-tomcat-8.0.47/bin /opt/apache-tomcat-8.0.47/lib
    mv /opt/apache-tomcat-8.0.47 /opt/apache-tomcat-9.0.33
    vi /etc/systemd/system/tomcat.service
Apache Tomcat 8
↓
Apache Tomcat 9
  
apache-tomcat-8.0.47
↓
apache-tomcat-9.0.33
  • 서비스 기동
    systemctl start mysqld
    systemctl start tomcat
    systemctl start nginx
  • 관리 화면에서의 설정
  • 포털  페이지 접속
    -"공동 편집"을 비활성
    -"앱을 관리"중의 활성화된 앱의 버전을 업데이트

MySQL버전 업(5.6→ 5.7)

  • 서비스 정지
    systemctl stop nginx
    systemctl stop tomcat
    systemctl stop mysqld

  • mysql5.6의 삭제
    rpm -qa | grep mysql
    rpm -e mysql57-community-release-el6-7.noarch
    rpm -e mysql-community-client-5.6.38-2.el6.x86_64 mysql-community-libs-5.6.38-2.el6.x86_64 mysql-community-common-5.6.38-2.el6.x86_64 mysql-community-server-5.6.38-2.el6.x86_64 --nodeps

  • mysql5.7설치
    yum localinstallhttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    yum install mysql-community-server
    yum install mysql-community-libs-compat
    mv /etc/my.cnf.rpmsave /etc/my.cnf

  • percona-x
    rpm -e percona-xtrabackup-22-2.2.13-1.el7.x86_64
    yum installhttps://repo.percona.com/yum/percona-release-latest.noarch.rpm
    yum install percona-xtrabackup-24

  • my.cnf의 설정 변경
    아래의 옵션을 삭제
    innodb_support_xa
    innodb_use_sys_malloc
    아래의 옵션을 추가
    secure-file-priv = ""

  • mysql실행
    systemctl start mysqld

  • mysql테이블의 체크와 업그레이드
    mysql_upgrade -uroot -p

  • DB의 문자 코드를 utf8에서 utf8mb4로 변경
vi /etc/my.cnf
  character-set-server = utf8mb4
  collation-server = utf8mb4_bin
  
systemctl stop mysqld
systemctl start mysqld
 
ALTER DATABASE confluence CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

 

기존 테이블 컬럼의 문자 코드를 utf8에서 utf8mb4로 변경

SET global FOREIGN_KEY_CHECKS=0;
 
SELECT CONCAT('ALTER TABLE ', table_name, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;')
FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = 'confluence'
AND
(
    C.CHARACTER_SET_NAME != 'utf8mb4'
    OR
    C.COLLATION_NAME != 'utf8mb4_bin'
) INTO OUTFILE '/tmp/alter-tables.sql';
 
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_bin', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'confluence'
AND DATA_TYPE = 'varchar'
AND
(
    CHARACTER_SET_NAME != 'utf8mb4'
    OR
    COLLATION_NAME != 'utf8mb4_bin'
) INTO OUTFILE '/tmp/alter-columns-1.sql';
 
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_bin', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'confluence'
AND DATA_TYPE != 'varchar'
AND
(
    CHARACTER_SET_NAME != 'utf8mb4'
    OR
    COLLATION_NAME != 'utf8mb4_bin'
) INTO OUTFILE '/tmp/alter-columns-2.sql';
 
mysql -uroot -p confluence < /tmp/alter-tables.sql
mysql -uroot -p confluence < /tmp/alter-columns-1.sql
mysql -uroot -p confluence < /tmp/alter-columns-2.sql
 
SET global FOREIGN_KEY_CHECKS=1;

 

Confluence DB설정 파일의 변경
vi /var/data/confluence/confluence.cfg.xml

- <property name="hibernate.connection.url">jdbc:mysql://localhost/confluence?useUnicode=true&amp;characterEncoding=utf8</property>
+ <property name="hibernate.connection.url">jdbc:mysql://localhost/confluence?useUnicode=true&amp;connectionCollation=utf8mb4_bin</property>

 

  • 서비스 기동
    systemctl restart mysqld
    systemctl start tomcat
    systemctl start nginx
  • 화면 확인
    컨플루언스 포털 접속하여 캐시 클리어:"캐시 관리"→"모두 클리어"
  • 인덱스 다시 구축:"관리"→"콘텐츠의 인덱스 작성"
728x90
300x250

'IT > Confluence' 카테고리의 다른 글

Confluence 7.4.5로 업그레이드  (0) 2021.08.17
Confluence mysql percona backup 설정  (0) 2021.08.12
Confluence Upgrade  (0) 2021.08.09
Confluence 서버 이관 및 재설정  (0) 2021.08.09
Confluence 설정  (0) 2021.08.09
728x90
반응형

crontab이 utc시간으로 기동될 경우의 설정 변경

cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime
 
service crond restart
 
service rsyslog restart
728x90
300x250

'IT > OS' 카테고리의 다른 글

네트워크 지연 발생 테스트  (0) 2021.08.19
Linux screen 설정과 사용  (0) 2021.08.19
OS 각 환경별 디스크 크기 확장  (0) 2021.08.11
Linux Logrotate 설정  (0) 2021.08.09
OS내 Symbolic Link 다 찾기  (0) 2021.08.09
728x90
반응형

Docker의 보안에 대해 docker의 구조로 부팅하면 iptables를 편집하고 노출시킨 포트에 대한 접근을 허용하기 때문에 알게 모르게 포트를 모두 개방할 가능성이 있습니다.

 

위 문제를 해결하기 위해 Docker 부팅 후 iptables 규칙을 추가하는 방법을 기재합니다.

iptables 규칙을 추가할 셸 스크립트를 준비합니다.실행 권한도 설정.

# touch /usr/local/sbin/docker-iptables.sh
# chmod 755 /usr/local/sbin/docker-iptables.sh
# vi /usr/local/sbin/docker-iptables.sh

파일의 내용은 아래와 같이 합니다.

이 내용은 LAN(10.101.39.0/24)에서 TCP80번과 443번 포트에 접속하는 것만 허용하는 예입니다. 컨테이너가 공개하는 포트에 따라서적절히 규칙을 변경해주세요.

 

/usr/local/sbin/docker-iptables.sh

#!/bin/bash
 
function _iptables () {
    /sbin/iptables "$1" DOCKER-USER ! -i docker0 -o docker0 -j REJECT
    /sbin/iptables "$1" DOCKER-USER ! -i docker0 -o docker0 -s 10.101.39.0/24 -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
    /sbin/iptables "$1" DOCKER-USER ! -i docker0 -o docker0 -s 10.101.39.0/24 -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
    /sbin/iptables "$1" DOCKER-USER ! -i docker0 -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
}
 
function _usage () {
    echo "usage: $0 (start|stop)" >&2
}
 
 
case "$1" in
    start)
        _iptables -I
        ;;
    stop)
        _iptables -D
        ;;
    *)
        _usage
        ;;
esac

systemd에서 docker를 시작할 때 처리에 이 셸스크립트를 실행하도록 추가합니다.

# mkdir /etc/systemd/system/docker.service.d
# vi /etc/systemd/system/docker.service.d/add_iptables.conf

[Service]
ExecStartPost=/usr/local/sbin/docker-iptables.sh start
ExecStop=/usr/local/sbin/docker-iptables.sh stop

추가한 systemd 설정을 반영합니다

# systemctl daemon-reload

마지막으로 docker 데몬을 중지, 부팅한 상태에서 각각 iptables 규칙이 변경되었는지 확인합니다.

# systemctl stop docker.service
# iptables -vnL
# systemctl start docker.service
# iptables -vnL
728x90
300x250

'IT > Opensource' 카테고리의 다른 글

Stunnel  (0) 2023.06.22
Redash 설치 및 세팅 (bitnami 버전)  (0) 2021.08.11
Redash 설치 및 세팅 (Docker Compose 버전)  (0) 2021.08.11
LVS 사전 준비  (0) 2021.08.09
PMM 명령어  (0) 2021.07.30
728x90
반응형

S3 설정

대상 버킷 --> 접근 제한 --> CORS 설정

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
728x90

CloudFront에서 설정

1. 대상 디스트리뷰션을 선택

2. Behaviors를 편집

3. Cache Based on Selected Request Headers를 white list로 변경

4. Origin을 Add >> 한다

 

확인방법

curl에서 Origin 요청 헤더를 부여하여 접속해보고 Access-Control-Allow-Origin 헤더가 돌아와 있으면 OK

curl -H 'Origin: http://origin.example.com' -I -X GET http://xhr.example.net/path/to/index.html
728x90
300x250

'IT > AWS' 카테고리의 다른 글

Amazon Linux 에서 PHP 7.X 설치  (0) 2022.01.17
AWS CLI 보안그룹 추가 및 포트 삭제  (0) 2022.01.17
AWS AD검증  (0) 2021.08.12
AWS Client VPN 인증서 준비  (0) 2021.08.12
AWS Client VPN 증명서 갱신  (0) 2021.08.12
728x90
반응형

Windows

환경:Windows 10 Pro 1909

RSAT:Active Directory Domain Services및 라이트 웨이트 디렉터리 서비스 툴

설정 → 앱 → 애플리케이션과 기능 → 옵션 기능 → 기능 추가에 추가

 

도메인 참여

DNS서버의 변경

설정 → 네트워크와 인터넷 → 상태 → 어댑터의 옵션을 변경 →
접속하고 있는 NIC(예:이더넷)를 오른쪽 클릭 → 속성 → 인터넷 프로토콜 버전 4(TCP/IPv4)→ 속성 →
다음 DNS서버 주소를 쓸 AWS Directory Service작성했을 때 생성된 DNS주소를 입력한다.

 

도메인 조인

설정 → 시스템 → 버전 정보 → 시스템 정보 → 컴퓨터 이름, 도메인 및 워크 그룹 설정 설정 변경 →
컴퓨터 이름을 변경하고 클릭하세요변경 → 소속 그룹 도메인에 체크 →
유저명과 패스워드에 Directory Service작성 시 admin과 그 패스워드를 입력한다

재기동 후, admin에서 PC에 로그인

 

사용자 추가

시작 → Windows관리 툴 → Active Directory사용자와 컴퓨터

AD의 FQDN→ 서브 도메인 부분 → Users를 오른쪽 클릭 →신규 작성 → 사용자

dsadd user "CN=test hk,OU=Users,OU=parktest-ad-0,DC=parktest-ad-0,DC=naver,DC=com" `
  -samid test hk`
  -upn test@parktest-ad-0.naver.com `
  -fn hk`
  -ln test`
  -display "test hk" `
  -pwdneverexpires yes `
  -email "test_hk@naver.com" `
  -memberof "CN=AWS-CVPN,OU=Groups,OU=parktest-ad-0,DC=parktest-ad-0,DC=naver,DC=com" `
  -pwd "passw0rdPassw0rd"

 

728x90
300x250
728x90
반응형

서버 증명서와 클라이언트 인증서의 준비

적당한 서버에서 아래 내용 수행

$ mkdir -p ~/aws-client-vpn/certs
$ cd ~/aws-client-vpn/
$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ ./easyrsa init-pki
$ ./easyrsa build-ca nopass
...
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:aws-client-vpn.naver.com    # <-- "aws-client-vpn.naver.com" 라고 입력
  
$ ./easyrsa build-server-full server nopass
  
$ ./easyrsa build-client-full client1.domain.tld nopass
  
$ cp pki/ca.crt ~/aws-client-vpn/certs/
$ cp pki/issued/server.crt ~/aws-client-vpn/certs/
$ cp pki/private/server.key ~/aws-client-vpn/certs/
$ cp pki/issued/client1.domain.tld.crt ~/aws-client-vpn/certs
$ cp pki/private/client1.domain.tld.key ~/aws-client-vpn/certs/
$ cd ~/aws-client-vpn/certs/
  
$ aws acm import-certificate --certificate file://server.crt --private-key file://server.key --certificate-chain file://ca.crt --region ap-northeast-1
  
$ aws acm import-certificate --certificate file://client1.domain.tld.crt --private-key file://client1.domain.tld.key --certificate-chain file://ca.crt --region ap-northeast-1

위처럼 ACM에 대한 Import까지 끝났습니다.

클라이언트 인증서와 키(client1.domain.tld.crt, client1.domain.tld.key)는 SCP에서 로컬 PC로 다운로드 합니다

 

728x90
300x250

'IT > AWS' 카테고리의 다른 글

AWS S3 + CloudFront CORS 설정  (0) 2021.08.12
AWS AD검증  (0) 2021.08.12
AWS Client VPN 증명서 갱신  (0) 2021.08.12
AWS 프로그램용 IAM 사용자. 역할에 S3 삭제 권한 제외  (0) 2021.08.12
Amazon EC2 API Tools  (0) 2021.08.09
728x90
반응형

 AWS Client VPN은 증명서만의 인증이 되기 때문에 월 1회 정도의 증명서 갱신 작업을 실시하고 있습니다.

 

클라이언트 증명서 준비

AWS Client VPN 인증서 페이지 서버 증명서와 클라이언트 증명서 준비 중 클라이언트 증명서만 설정합니다.

infra.naver 에서 아래와 같이 합니다.

$ cd ~/aws-client-vpn/easy-rsa/easyrsa3/
 
$ count="$(($(ls ~/aws-client-vpn/certs/client*.crt | wc -l)+1))"
 
$ ./easyrsa build-client-full client${count}.domain.tld nopass
$ cp pki/issued/client${count}.domain.tld.crt ~/aws-client-vpn/certs/
$ cp pki/private/client${count}.domain.tld.key ~/aws-client-vpn/certs/
 
$ cd ~/aws-client-vpn/certs/
 
$ aws acm import-certificate --certificate file://client${count}.domain.tld.crt --private-key file://client${count}.domain.tld.key --certificate-chain file://ca.crt --region ap-northeast-1

aws acm import-certificate 명령어로 출력된 CertificateArn의 값은 다음 엔드포인트 작성을 awscli에서 수행할 때 필요합니다.

Import시의 출력 예:

{
    "CertificateArn": "arn:aws:acm:ap-northeast-1:1234:certificate/ce4346c4-1234-1234-1234-e700ab8191ae"
}

 

 

AWS Client VPN 엔드포인트 생성

AWS Client VPN 인증서 페이지 'AWS Client VPN 엔드포인트 만들기'와 동일한 작업을 수행합니다. awscli 를 사용하여 수행하는 순서를 나타냅니다.

 

엔드포인트 생성

authentication-options의 ClientRootCertificateChainArn은 ACM에 Import한 클라이언트 증명서의 ARN으로 대체하십시오.

aws ec2 create-client-vpn-endpoint \
  --client-cidr-block "10.70.32.0/22" \
  --dns-servers 10.12.0.2 10.52.19.65 \
  --server-certificate-arn arn:aws:acm:ap-northeast-1:123:certificate/1234-5deb-4de4-bf3f-123 \
  --connection-log-options Enabled=true,CloudwatchLogGroup=/aws/vpc/cvpn/naver-default,CloudwatchLogStream=naver-default \
  --no-split-tunnel \
  --transport-protocol udp \
  --vpn-port 443 \
  --tag-specifications "ResourceType=client-vpn-endpoint,Tags=[{Key=Name,Value=naver-default-${count}}]" \
  --vpc-id vpc-123 \
  --security-group-ids sg-123 \
  --authentication-options Type=certificate-authentication,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:ap-northeast-1:123:certificate/123123-123-6789-abcd-ef0123456789}

엔드포인트 생성 시 출력 예시

ClientVpnEndpointId 는 관련지어, 인증, 루트 테이블의 설정 명령어 시에 필요합니다.

{
    "ClientVpnEndpointId": "cvpn-endpoint-123",
    "Status": {
        "Code": "pending-associate"
    },
    "DnsName": "cvpn-endpoint-123.prod.clientvpn.ap-northeast-1.amazonaws.com"
}

 

연관된 내용

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

for subnet in subnet-123 subnet-123 ; do
  aws ec2 associate-client-vpn-target-network \
    --subnet-id ${subnet} \
    --client-vpn-endpoint-id cvpn-endpoint-123
done

 

인증

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

aws ec2 authorize-client-vpn-ingress \
  --target-network-cidr 0.0.0.0/0 \
  --authorize-all-groups \
  --client-vpn-endpoint-id cvpn-endpoint-123

 

루트 테이블

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

for subnet in subnet-123 subnet-1234 ; do
  aws ec2 create-client-vpn-route \
    --destination-cidr-block 0.0.0.0/0  \
    --target-vpc-subnet-id ${subnet} \
    --client-vpn-endpoint-id cvpn-endpoint-123
done

 

ovpn 파일 편집

3개의 파일을 하나로 묶기 위해 .ovpn 파일을 편집합니다.먼저 3개의 파일을 준비하겠습니다.

.crt 파일 (infra-ops-0에서 작성한 클라이언트 증명서) SCP에서 다운로드

.key 파일(infra-ops-0에서 작성한 클라이언트 키 파일) SCP에서 다운로드

.ovpn 파일 관리 콘솔에서 작성한 엔드포인트를 선택하여 '클라이언트 설정 다운로드'

 

.ovpn 파일을 편집합니다. 접속처의 호스트명을 변경합니다.

remote cvpn-endpoint-....amazonaws.com 443
↓
remote naver.cvpn-endpoint-....amazonaws.com 443

증명서 파일의 내용을 .ovpn에 추가합니다.

<cert>
-----BEGIN CERTIFICATE-----
....
....
....
-----END CERTIFICATE-----
</cert>

키 파일의 내용을 .ovpn에 추가합니다.

<key>
-----BEGIN PRIVATE KEY-----
....
....
....
-----END PRIVATE KEY-----
</key>
728x90
300x250

'IT > AWS' 카테고리의 다른 글

AWS AD검증  (0) 2021.08.12
AWS Client VPN 인증서 준비  (0) 2021.08.12
AWS 프로그램용 IAM 사용자. 역할에 S3 삭제 권한 제외  (0) 2021.08.12
Amazon EC2 API Tools  (0) 2021.08.09
AWS Python에 의한 관리  (0) 2021.08.09
728x90
반응형

GitLab의 Web상의 관리 화면 Admin Erea에서는 값을 수정할 수 없으므로 직접 DB를 갱신할 필요가 있다.

Git Lab Server에 로그인하여 아래의 명령어를 입력한다.

gitlab-rails dbconsole

DB 콘솔로 전환됩니다.

identities 테이블의 extern_uid 컬럼에 정보가 저장되어 있으므로 대상자의 id를 확인하기 위해 SELECT에서 일람표시를 한다.

gitlabhq_production=> SELECT * FROM identities;

대상자의 id를 알게 되면 UPDATE에서 extern_uid 컬럼을 수정한다.

gitlabhq_production=> UPDATE identities SET extern_uid = 'uid=someuser,ou=People,dc=example,dc=com' WHERE id=1;

 

참조 : GitLab Omnibus LDAP User Mismatch After OU Change https://theterminallife.com/gitlab-omnibus-ldap-user-mismatch-after-ou-change/

728x90
300x250

'IT > Git' 카테고리의 다른 글

GitLab LDAP Group 구성  (0) 2021.08.12
GitLab CE에서 EE로의 이행  (0) 2021.08.12
GitLab API 조작  (0) 2021.08.12
GitLab Runner 구축  (0) 2021.08.12
GitLab Runner 업데이트 작업  (0) 2021.08.12

+ Recent posts