1. Static (DI 가 잘되지 않아 env = null 인 경우, EnvironmentAware를 구현)

@Configuration
@PropertySource("classpath:my.properties")
public class MyConfig implements EnvironmentAware {
    final static Environment env;
    
    @Override
    public void setEnvironment(Environment env) {
        MyConfig.env = env;
    }

2. Contructor DI

@Configuration
@PropertySource("classpath:my.properties")
public class MyConfig {
    final Environment env;

    public MyConfig(Environment env) {
        this.env = env;
    }

3. Setter DI

@Configuration
@PropertySource("classpath:my.properties")
public class MyConfig {
    Environment env;

    @Autowired
    public void setEnv(Environment env) {
        this.env = env;
    }

※ Field DI는 권장되지 않아 사용하지 않을 예정

Posted by Lawmin

댓글을 달아 주세요

1. Field DI (Not recommended)

@Controller
public class MyController {
    @Autowired
    MyConfig myConfig;

 

2. Constructor DI (Recommended)

@Controller
public class MyController {
    final MyConfig myConfig;

    public MyController(MyConfig myConfig) {
        this.myConfig = myConfig;
    }

 

3. lombok plugin Constructor DI

@AllArgsConstructor
@Controller
public class MyController {
    final MyConfig myConfig;

 

4. Setter DI

@Controller
public class MyController {
    MyConfig myConfig;

    @Autowired
    public void setMyConfig(MyConfig myConfig) {
        this.myConfig = myConfig;
    }

 

Posted by Lawmin

댓글을 달아 주세요

DB 마이그레이션 작업시 계정 암호를 몰라 private DB LINK를 생성하기 어려울 때가 있다.

(DB LINK의 암호는 암호화값 그대로 dump 라도 뜰 수 있지만...)


이럴 때 아래와 같이 proxy 권한을 부여하여 작업이 가능하다.

(물론 권한만 있다면 db link 뿐만 아니라 다른 object 도 작업 가능하다.)


SQL> ALTER USER user_b GRANT CONNECT THROUGH user_a;


ID: user_a[user_b] 로 접속시 user_a 암호를 입력하여 user_b 로 접속할수 있다. (proxy)


SQL> CONN user_a[user_b]


권한 해제 시,

SQL> ALTER USER user_b REVOKE CONNECT THROUGH user_a;

Posted by Lawmin

댓글을 달아 주세요

1. 무료 윈도우즈(Windows)용 SFTP 서버는 여러가지가 있으며,

   간단히 구성하려면 tiny-sftp-server 를 사용할 수 있습니다. (아래는 이를 이용해 설정)

http://labs.rebex.net/tiny-sftp-server/

https://www.bitvise.com/ssh-server


2. RebexTinySftpServer.exe.config 파일을 수정합니다. (사용할 계정, 자동시작 여부 설정)

<add key="userName" value="계정"/>

<add key="userPassword" value="암호"/>

<add key="userRootDir" value="FTP폴더"/>

<add key="autoStart" value="true"/>


3. 아래와 같은 배치 파일을 만들고, 작업 스케줄러에 주기적으로 실행되도록 설정합니다.

(SFTP 프로세스 죽었을때 다시 실행)

C:\FTP> copy con check_and_run.bat

tasklist /fi "ImageName eq RebexTinySftpServer.exe" /NH 2> NUL | find /I /N "RebexTinySftpServer.exe" || start "" "C:\FTP경로\RebexTinySftpServer.exe"


C:\FTP> taskschd

Posted by Lawmin

댓글을 달아 주세요

프로세스 중복 실행되지 않도록 체크 후 실행 (배치 파일로 만들어 작업 스케줄러에 등록)

tasklist /fi "ImageName eq 프로세스.exe" /NH 2> NUL | find /I /N "프로세스.exe" || start "" "C:\실행경로\프로세스.exe"

Posted by Lawmin

댓글을 달아 주세요

1. httpd.conf 수정 (주석처리 해제: 첫 # 글자 삭제)

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so


# Virtual hosts

Include conf/extra/httpd-vhosts.conf


2. extra/httpd-vhosts.conf 수정 (reverseproxy 설정 + location별 IP 제한)

<VirtualHost _default_:80>

    DocumentRoot "${SRVROOT}/htdocs"

    ProxyRequests Off

    ProxyPreserveHost On

    <Location /nagios>

        Require ip 허용할IP1 허용할IP2

    </Location>

    <Location /nagiosgraph>

        Require ip 허용할IP1 허용할IP2

    </Location>

    ProxyPass /nagios http://실제서버IP/nagios

    ProxyPassReverse /nagios http://실제서버IP/nagios

    ProxyPass /nagiosgraph http://실제서버IP/nagiosgraph

    ProxyPassReverse /nagiosgraph http://실제서버IP/nagiosgraph

</VirtualHost>


※ 허용할 IP는 space 로 구분하여 추가 가능,
1) IP 제한하지 않는 다면 Require ip 대신 Require all granted
2) 모두 차단한다면 Require all denied

※ Location, ProxyPass, ProxyPassReverse 는 필요한 만큼 추가 가능 (순서대로 적용, 즉, 마지막것이 유효)

※ Location과 Directory(File)의 차이 (구분하여 사용)
1) Location은 파일시스템에 존재하지 않는 논리적 경로 (URL)
2) Directory 및 File은 파일시스템에 존재하는 경로
    (기본 하위 옵션으로 Options None 및 AllowOverride None 을 줘서 보안설정을 추가로 한다.)

(참고) https://httpd.apache.org/docs/current/mod/core.html#location


※ httpd 2.2 의 경우 아래와 같이 적용

Order Allow,Deny

Allow from 허용할IP



Posted by Lawmin

댓글을 달아 주세요

1. web.xml 을 만들어 아래와 같이 등록합니다.

(web.xml은 Eclipse 웹 프로젝트에서 Java EE Tools > Generate Deployment Descriptor Stub 메뉴를 눌러 생성가능)


2. https 제외할 패턴은 NONE, 적용할 패턴은 CONFIDENTIAL 로 등록하면 됩니다. (순서대로 적용)


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

  <display-name>사이트명</display-name>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <security-constraint>   

    <web-resource-collection>      

    <web-resource-name>Non-secure</web-resource-name>      

    <url-pattern>/제외할패턴.jsp</url-pattern>   

    </web-resource-collection>   

    <user-data-constraint>      

    <transport-guarantee>NONE</transport-guarantee>   

    </user-data-constraint>

  </security-constraint>

  <security-constraint>   

    <web-resource-collection>      

    <web-resource-name>Secured</web-resource-name>      

    <url-pattern>/*</url-pattern>   

    </web-resource-collection>   

    <user-data-constraint>      

    <transport-guarantee>CONFIDENTIAL</transport-guarantee>   

    </user-data-constraint>

  </security-constraint>

</web-app>

Posted by Lawmin

댓글을 달아 주세요

CentOS 최초 설치 이후 template 만드는 과정을 정리한 것입니다.


# 패키지 업데이트

yum -y upgrade


# 재부팅

shutdown -r now


# 필수 프로그램 설치

yum -y install net-tools nano deltarpm wget bash-completion yum-plugin-remove-with-leaves yum-utils yum-versionlock


# yum update시 커널 버전 고정 (버전은 필요에 따라 변경)

echo 7.4.1708 > /etc/yum/vars/releasever


# mirrorlist 를 주석처리하고 mirror 를 살림 (vi /etc/yum.repos.d/)

# cf) http://ftp.daumkakao.com/centos/7.4.1708/updates/x86_64/repodata/

# 아니면 yum 실행시 옵션으로도 가능 (yum --releasever=7.3.1611 update)


# VM tools 및 script 실행용 perl 설치

yum -y install open-vm-tools perl


# 로깅 서비스 중지

systemctl stop rsyslog

service auditd stop


# 오래된 커널 제거

package-cleanup -y --oldkernels --count=1


# 필요없는 패키지 삭제

package-cleanup --leaves | xargs yum -y remove


# yum 정리

yum clean all


# 오래된 로그 정리

/usr/sbin/logrotate /etc/logrotate.conf --force

rm -f /var/log/*-???????? /var/log/*.gz

rm -f /var/log/dmesg.old

rm -rf /var/log/anaconda


# 감사 로그 정리

cat /dev/null > /var/log/audit/audit.log

cat /dev/null > /var/log/wtmp

cat /dev/null > /var/log/lastlog

cat /dev/null > /var/log/grubby


# MAC, UUID 템플릿 제거 (VM 생성시 바뀌는 정보, 필요시 적용)

# sed -i '/^\(HWADDR\|UUID\)=/d' /etc/sysconfig/network-scripts/ifcfg-e*


# 부팅시 네트워크 사용하도록 변경 (필요시 적용)

# sed -i -e 's@^ONBOOT="no@ONBOOT="yes@' /etc/sysconfig/network-scripts/ifcfg-e*


# 임시 파일 정리

rm -rf /tmp/*

rm -rf /var/tmp/*


# root의 ssh 이력 정리

rm -rf ~root/.ssh/

rm -f ~root/anaconda-ks.cfg


# root 패스워드 삭제 (필요시 적용)

# passwd -d root


# root의 셸 이력 정리

cat /dev/null > ~/.bash_history && history -cw


# VM 종료

shutdown -h now

Posted by Lawmin

댓글을 달아 주세요