2016년 6월 13일 월요일

BDC Parameter 관련

[ 출처 : http://www.sapjoy.co.kr/ ]

BDC Parameter중 RACOMMIT의 역활은?
 => BDC가 돌때 구문중에 COMMIT을 만나게 되면 바로 돌아오게 되는데 그걸 무시하고 계속 진행하고자 할때
      RACOMMIT =  'X' 처리
 => BDC 진행 중 Warning으로 저장 되지 않을 때 사용하면 정상 처리됨.

CTU-Parameter의 설명값
DISMODEProcessing mode for batch input processing. Values as for the MODE addition.
UPMODE Processing mode for batch input processing. Values as for the UPDATE addition.
CATTMODE CATT mode for batch input processing. CATT means Computer Aided Testtool. While batch input is mostly used for data transfer, CATT processes are to be viewed as more complex transactions, since they are reusable tests. Values: " " (no CATT mode), "N" (CATT without single screen control), "A" (CATT with single screen control).
DEFSIZE Selection as to whether the screens of the called transaction are displayed in the standard screen size. Values "X" (standard size), " " (current size).
RACOMMIT Selection as to whether the COMMIT WORK statement terminates batch input processing or not. Values: " " (COMMIT WORK terminates processing), "X" ( COMMIT WORK does not terminate processing).
NOBINPT Selection for the symbol field sy-binpt. Values: " " (sy-binpt contains in the called transaction "X"), "X" (sy-binpt contains in the called transaction " ").
NOBIEND Selection for the system field sy-binpt. Values: " " (sy-binpt contains "X" after the end of the batch input data in the called transsaction ) "X" (sy-binpt contains " " after the end of the batch input data in the called transaction).

2016년 5월 17일 화요일

매듭 묶는 법

[출처 : http://www.ddanzi.com/ ]

리프 노트 : 가장 쉬운 매듭. 무겁지 않은 무게를 지탱할 때 사용.














8자 매듭 : 로프에서 손이 미끄러지지 않게 할 떄 사용


















보우라인 : 무거운 것을 지탱할 수 있는 매듭. 인명 구조때도 사용.


















클로브 히치 : 극장에서 조명 매달 때 사용




















Coll unattached rope : 밧즐을 깔끔히 보관했다가, 사용할 때 편리하게 한 방에 풀 수 있는 방법



















대각선 묶기 :  물건 두개를 여러 각도로 묶을 때 사용. 조난됐을 때 주로 필요





















직각 묶기 : 긴 물건 두개를 직각으로 고정시킬 때 사용. 주로 조난 상황에서 사용됨




















삼발이 묶기 : 긴 물체 셋을 한데 고정시킬 때 사용. 주로 조난시에.



















즉석 하네스 : 절대 로프로 해서는 안됩니다. 납작한 끈으로 하세요.
             아주 긴급한 상황 아니면 하지 마세요.



















트럭 운전사 매듭 : 무거운 것도 잘 지탱하는 매듭.
                 복잡하지만 한번 익혀 놓으면 아주 쓸모가 많아요. 



















로프 그네 : 좋은 아빠가 되기 위한 필수 지식!
           (마당 있는 집에 사는 미국 아빠들 말이겠네요)






































나비넥타이 매듭

2016년 4월 27일 수요일

Ubuntu 설정 파일 재 설치 방법

[ 출처 : http://rockball.tistory.com/ ]

Ubuntu Server에서 Apache 서버를 관리 Test를 하다보니 다음과 같은 문제가 발생하였습니다.
Apache2에 대한  Setting을 초기화한 후 Test를 하려고 Apache2 Package를 다음 명령어를 사용하여 삭제하였습니다.

> sudo apt-get autoremove apache2

삭제 후 살펴보니 /etc/apache2 폴더가 그대로 남아 있어 해당 폴더를 다음 명령어를 사용하여 수동 삭제 하엿습니다.

> sudo rm -rf /etc/apache2

그 다음 새로 apache2를 설치하였습니다.

> sudo apt-get install apache2

설치 후 /etc/apache2 폴더 아래를 보면 apache2.conf 파일이 없으며 설치 후 폴더만 존재하는 현상이 발생합니다.
(물론 apache2.conf파일이 없어 apache2 Service도 기동되지 않습니다.)

해당 이슈를 해결하기 위해 다음 명령어 수행이 필요합니다.

> sudo apt-get remove --purge apache2
> sudo apt-get clean
> sudo apt-get install apache2

기본적으로 debian 계열(우분투)는 설정 파일은 별도로 관리하고 있습니다.
해당 파일 삭제를 하기 위해서는 --purge 옵션을 사용한 경우에만 제거가 가능합니다.

2016년 4월 21일 목요일

호스트 기반 침입차단(iptables) [출처] 호스트 기반 침입차단(iptables)|작성자 만이

[출처 : http://blog.naver.com/ ]

번역하기 전용뷰어 보기


#service iptables status
-> 방화벽을 설정하지 않았으므로 실행이 정지상태이다.

#setup
-> 방화벽을 Enable로 바꿔서 실행시킨다





[방화벽 기초]

#iptables -L
-> Filter 테이블의 내용을 보여준다. -L 옵션은 방화벽에 설정된 규칙의 목록을 보여주는 옵션이다.

#iptables -F
-> -F 옵션은 기존설정을 제거한다. 즉, 방화벽에 설정된 규칙을 모두 제거한다.

table name : -t filter, -t nat, -t mangle
chain name : -A(Append), -D(Drop), -I(Insert)를 의미
layer object : -s 192.168.x.10(출발지 주소를 의미)
                        -d 192.168.x.20(목적지 주소를 의미)
                        -p는 프로토콜 지정, --dport는 도착지 Port(예: -p -tcp --dport 80)
                        -ACCEPT(접근 허락), -DROP(접근거부), -REJECT(접근거부), -LOG(log를 남김)

[Fedora]
-> 방화벽 설정을 모두 제거했으므로 접속이 된다.


예제 1> Fedora에서 Cent로 접속이 되지 않도록 하라.
[Cent]
#iptables -t filter -A INPUT -s 192.168.77.20 -j DROP

-> 접속이 차단되어 있다.

그러나 xp의 ip는 차단이 안되었기 때문에 통신이 된다.




#iptables -A INPUT -t filter -s 192.168.77.1 -j REJECT
-> DROP과의 차이점을 보자.
REJECT는 응답의 부하를 악용한 도스공격에 노출되게 된다. 그러므로 사용하기에 적합하지 않다.



예제 2> Cent에서 Fedora의 특정 서비스(telnet) 접속만 차단하라.
[Cent]
#iptables -F
#iptables -t filter -A INPUT -s 192.168.77.20 -p tcp --dport 23 -j DROP
#iptables -L

[Fedora]
#ping 192.168.77.10 : 접속 O
#telnet 192.168.77.10 : 접속 X
#ssh apple@192.168.77.10 : 접속 O





[방화벽 설정 저장/복구]

#iptables-save > firewall.rule
-> 설정파일로 저장
#iptables-restore < firewall.rule
-> 설정파일 불러오기
#service iptables restart
-> firewall rule 설정이 초기화된다.

 
#vi /etc/sysconfig/iptables-config
-> 최근의 방화벽 rule 설정으로 재시작해도 사용하고 싶으면 파일 수정을 하면 가능하다.
     이렇게 되면 재부팅이나 재시작해도 rule 설정이 초기화 되지 않는다.







[방화벽 기초 연결 설정]

#iptables -nL
-> 숫자 형태로 화면에 출력한다.
#iptables -L --line-numbers
-> rule의 순서를 확인할 수 있다.
#iptables -L -v
-> 자세한 정보 출력. 패킷의 크기 및 룰 등을 보여준다.

#iptables -A INPUT ~~~
-> INPUT chain의 맨 끝에 rule이 추가된다..
#iptables -I INPUT 1 ~~~
-> INPUT chain의 첫번째에 rule이 삽입된다.(rule은 순차적으로 적용되기에 순서가 매우 중요하다)
#iptables -D INPUT 2
-> INPUT chain의 두번째 rule을 삭제한다.
#iptables -R INPUT 2 ~~~
-> INPUT chain의 두번째 rule을 해당 설정으로 수정한다.

#iptables -N EXTRANET
-> EXTRANET이라는 이름의 chain을 생성한다.
#iptables -E A B
-> A chain의 이름을 B으로 변경한다.
#iptables -X EXTRANET
-> EXTRANET chain을 삭제한다.
    그러나 EXTRANET chain에 링크가 걸려있다면!!!
    1. 링크가 걸려있는 rule을 먼저 삭제(예 : #iptables -D INPUT 3)
    2. EXTRANET chain의 rule을 모두 삭제(예 : #iptables -D EXTRANET 1)
    3. EXTRANET chain을 삭제한다.(#iptables -X EXTRANET)


다음과 같이 방화벽 rule이 설정이 되어있다고 가정하자.
사용자 chain인 EXTRANET을 INPUT chain에 연결했다.(#iptables -I INPUT 2 -j EXTRANET)


xp(192.168.77.1)에서 접속을 하게 되면 접속이 안된다.
왜냐하면 rule은 순서가 중요하기 때문에 2번째 rule에 모두 DROP(접속 거부)를 해놓았기 때문에
그 밑에 ACCEPT로 telnet 포트를 열어놓아도 접속이 되지 않된다.
그러므로 xp에서 telnet 포트만 열어놓고 모든 포트를 막으려면 ACCEPT chain이 EXTRANET chain보다 순서가 위에 있어야한다.


예제 3> Fedora에서 Cent로 ssh, ftp는 허용, telnet, web접속은 차단하라
#iptables -F
#iptables -A INPUT -s 192.168.77.20 -p tcp --dport 23 -j DROP
#iptables -A INPUT -s 192.168.77.20 -p tcp --dport 80 -j DROP

왜 허용 설정을 안할까???
--> INPUT chain의 기본 설정이 ACCEPT로 되어있기때문에 차단할 포트만 막아버리면 나머지는 자동으로 허용이 된다.
     그러나 만약 INPUT chain 기본 설정이 DROP으로 되어있으면 허용할 포트만 설정하면 나머지는 자동으로 차단이 된다.
     (#iptables -P INPUT DROP : INPUT chain의 기본 감시 정책을 DROP으로 설정)


기본정책을 DROP으로 설정한 예)
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -F
#iptables -A INPUT -s 192.168.77.1 -p tcp --dport 23 -j ACCEPT

- 이제 xp에서 Cent에 접속 시도해보면 접속이 안된다. 기본정책이 DROP이면 상태추적기능을 사용해야한다.
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  - RELATED : 제어를 당한 포트에 대한 응답 허가 설정



예제 4> Cent에 외부의 모든 컴퓨터에 ICMP(ping)에 응답하지 못하도록 설정하고 자기 자신또한 외부로
ping 테스트를 하지 못하도록 설정하라.
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
-> 외부로 ping이 못 나가게 설정. echo-request를 숫자 8로 설정도 가능하다.
#iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP
-> 외부로부터 ping이 못 들어오게 설정. echo-reply를 숫자 0으로도 설정 가능하다.


* Multiport를 이용
#iptables -P INPUT DROP
#iptables -I INPUT 1 -s 192.168.77.1 -p tcp -m multiport --dport 80,22,23 -j ACCEPT
-> HTTP,SSH,TELNET 포트만 허용
#iptables -I INPUT 1 -p tcp -m multiport --dport 20:80 -j ACCEPT
-> 20~80번 포트만 허가하는 설정

* MAC Address Filtering
IP주소는 쉽게 위조가 가능하다. 왜냐하면 IP주소를 바꿔도 IP주소를 바꾸면 해킹이 가능하므로
MAC의 주소를 바꾸는것이 좋다. MAC의 주소는 위조가 어렵기 때문이다.

[Cent]
#iptables -F
#iptables -P OUTPUT DROP
#iptables -P INPUT DROP
#iptables -A INPUT -s 192.168.77.20 -j ACCEPT
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[Fedora]
#ping 192.168.77.10 : 접속 O
#ifconfig eth0 192.168.77.120 up && route add default gw 192.168.77.2
-> ip address를 수정하고 다시 접속하면 접속이 안되는것을 확인가능하다.
    그래서 MAC 주소를 차단해보자
#ifconfig

[Cent]
#iptables -R INPUT 1 -m mac --mac-source <Fedora의 HWaddr> -j ACCEPT
-> Fedora의 MAC 주소를 허용

[Fedora]
#ping 192.168.77.10 : 접속 0




[방화벽 로그파일]

#vi /etc/syslog.conf

3행 -> kern.*           /var/log/firewall : 제일 처음에 설정되어 있어야 log가 남는다. 다른 log설정보다 우선시되야한다.

#service syslog restart
#cat /var/log/firewall
-> 로그를 처음 설정했다면 로그정보가 없을것이다. 로그발생을 위해 일련의 작업을 해보자
#iptables -I INPUT -p tcp -m multiport --dport 21,22,23,80 -j LOG --log--prefix
  "unknown port attempt..."
#watch tail -5 /var/log/firewall
-> 로그 실시간 확인

[xp]
Cent로 접속을 해본다.(http://192.168.77.10).



네트워크 기반 침입차단(iptables)

[출처 : http://blog.naver.com/ ]





[Cent]                                                [Fedora]                                           [Win2003]
eth 0 : 192.168.10.10                          eth 0 : 10.1.1.20                                로컬 : 10.1.1.30
            255.255.255.0                                       255.255.255.0                                 255.255.255.0
            192.168.10.2                                        10.1.1.1                                            10.1.1.1
eth 1 : 10.1.1.1
            255.255.255.0


FOWARD는 통과하는 패킷에 대해 설정을 할 때 사용한다.

예졔1> XP에서 Fedora로 web, telnet 접속만 허락하는 설정을 하라.
[Cent]
#iptables -P FORWARD DROP
#iptables -A FORWARD -d 10.1.1.20 -p tcp -m multiport --dport 23,80 -j ACCEPT
#iptalbes -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

예졔2> Fedora에서 xp로 ftp만 허용하는 설정을 하라.
[Fedora]
#iptables -A FORWARD -s 10.1.1.20 -p tcp --dport 21 -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


IP MASQUERADE 설정

1. POSTROUTING
   내부의 사설 IP가 라우터를 거쳐 공인 IP를 가지고 외부로 나갈 수 있는 것이며 eth0에 설정된 공인IP로 변환된다.
   - MASQUERADE target : 방화벽의 공인 IP가 유동 IP인 경우 이용한다.
                                          공인 IP를 가지고 외부로 나간다.
   - SNAT target : 방화벽의 공인 IP가 고정 IP인 경우 사용한다.
                             방화벽 자체에서 IP를 할당하여 유연하게 공인 IP를 가지고 나간다.

2. PREROUTING
   외부의 공인 IP가 라우터를 거쳐 내부 IP로 들어올수 있는 것
    - DNAT target : 목적지 주소만 변경된다.

3. OUTPUT


ㅁ POSTROUTING MASQUERADE
방화벽 eth0에 설정된 ip주소로 변환해서 나가도록 하는 것이다.


내부            -------->   eth1    -------->       eth0         --------> 외부
10.1.1.0/24               10.1.1.1                 192.168.77.10               


예제1> 내부에서 외부로 나갈때 eth0의 ip를 달고 나가는지 확인해보자
[Fedora]
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> Fedora의 주소가 10.1.1.20으로 접속한 것을 확인 가능하다.


[Cent]
#iptables -P FORWARD ACCEPT
#iptables -F
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -j MASQUERADE
#iptables -nL -t nat
#telnet 192.168.77.1 135

[Fedora]
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> 10.1.1.20(Fedora)이 192.168.10.10:xxxxx로 ip매스커레이드 된것을 확인 가능하다.

예제2> 사용할 특정 포트를 지정해보아라.
[Cent]
#iptables -F -t nat
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -p tcp -j MASQUERADE --to-port 3000-5000
-> 3000번 포트에서 5000번 사이의 포트를 달고 나간다.

[Fedora]
#telnet 192.168.10.1 445

[xp]
C:\>netstat -apn tcp
-> 3000-5000번 사이의 포트를 할당받아 나왔다.


ㅁ POSTROUTING SNAT
 방화벽의 eth0의 여러개의 ip를 사용하는 경우 ip중 하나를 선택해서 나가도록 하는 것이다.
 외부에서 방화벽을 통과해서 들어오려고 할때 POSTROUTING을 이용한다.

                                                 방화벽
내부         ---------->      eth1 ------>  eth0        ----------> 외부
eth0의 ip

[Cent]
#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#cp ifcfg-eth0 ifcfg-eth0:2
#vi ifcfg-eth0:1
-> DEVICE=eth0:1
    IPADDR=192.168.10.11
#vi ifcfg-eth0:2
-> DEVICE=eth0:2
    IPADDR=192.168.10.12
#service network restart


예제1> 내부의 컴퓨터가 xp의 135포트로 접속할 때는 192.168.10.12를 이용하고,
           나머지 모든 포트로 접속할 때는 192.168.10.11을 이용하도록 설정하라.
[Cent]
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -d 192.168.10.1 -p tcp --dport 135 -j SNAT --to-source
  192.168.10.12
#iptables -I POSTROUTING 2 -t nat -s 10.1.1.0/24 -j SNAT --to-source 192.168.10.11

[Fedora]
#telnet 192.168.10.1 445
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> 해당 포트에 맞제 11번과 12번이 ip가 들어온다.



ㅁ PREROUTING
목적지 주소를 변경하려 할 때 사용한다. DNAT Target을 이용한다.

예제1> xp에서 Cent 192.168.10.10 과 192.168.10.11 의 23번 포트로 들어오는 것과 192.168.10.12의
           80번 포트로  들어오는 것을 전부 10.1.1.20으로 변환시켜라.
#iptables -A PREROUTING -t nat -d 192.168.10.10 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20
#iptables -A PREROUTING -t nat -d 192.168.10.11 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20
#iptables -A PREROUTING -t nat -d 192.168.10.12 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20


ㅁ REDIRECT target
포트를 변경 시킬 때 사용한다.

예제1> 목적지가 Fedora의 2222포트로 들어오면 Cent의 80번 포트로 변경시키는 설정을 하라.
[Cent]
#iptables -A PREROUTING -t nat -d 10.1.1.0/24 -p tcp --dport 2222 -j REDIRECT --to-ports 80

[Fedora]
#service httpd stop

[xp]
-> Fedora로 목적지가 되면 Cent방화벽에서 REDIRECT를 시켜서 Cent의 80번포트로 바꾼다.
    즉, Cent는 외부로부터 2222포트로 들어온 패킷을 Cent에서 Listen하고 있는 80번 포트로 REDIRECT한 것이다.