http://sungjk.github.io/2017/07/27/clean-code.html







간단하게 $RANDOM 를 사용한다. 아래처럼


#! /bin/bash


RANDOM_NUM=$RANDOM

echo $RANDOM_NUM 


$RANDOM을 사용하면, 0에서 32767 사이의 난수가 발생한다.







0부터 100까지 난수를 발생시키고 싶다면 아래처럼 % 를 사용하여 처리한다.



#! /bin/bash


RANDOM_NUM=`expr $RANDOM % 100`

echo $RANDOM_NUM


참고로 expr 는 Shall Script 에서 숫자 계산을 할 때 사용된다.






10000부터 30000 사이의 난수를 발생시키고 싶다면 아래처럼 0~10000 사이의 값을 만든 후 30000을 더해준다.


#! /bin/bash


RANDOM_NUM=`expr $RANDOM % 10000 + 30000`

echo $RANDOM_NUM







 

앞의 True 와 False 는 결과적으로 탐지를 맞게 했는지 틀리게 했는지를 의미,

 

즉 

 

True 면 결과적으로 탐지를 맞게 한 것이고, 

 

False 면 결과적으로 탐지를 틀리게 함.

 

 

 

 

뒤의 Positive 와 Negative 는 탐지한 것의 성격, 

 

즉 

 

Positive 면 공격 트래픽이라고 탐지한 것이고, 

 

Negative 면 정상 트래픽이라고 탐지한 것.

 

 

 

 

결론적으로

 

 

True Positive: 공격 트래픽을 맞게 탐지함(공격이라고 탐지했음. 실제 트래픽이 공격이였고, 공격이라고 맞게 탐지했기 때문에 막거나 알람을 띄움).

 

True Negative: 정상 트래픽을 맞게 탐지함(정상이라고 탐지했음. 실제 트래픽이 정상이었고, 정상이라고 맞게 탐지했기 때문에 트래픽을 허용).

 

False Positive: 공격 트래픽을 틀리게 탐지함(공격이라고 탐지했음. 그런데 알고보니 정상 트래픽임, 틀리게 탐지하였음)

 

False Negative: 정상 트래픽을 틀리게 탐지한(정상이라고 탐지했음. 그런데 알고보니 공격 트래픽임, 틀리게 탐지하였음). 이렇게 탐지하면 심각한 결과를 초래함.

 

 

precision : 공격이라고 판단한 케이스들 중에서, 실제로 공격이 맞는지 하는 비율 ( 실제 공격 개수 / 공격이라고 판단한 개수 )


recall : 실제 모든 공격 케이스들 중에서, 공격이라고 잘 판단한 비율 ( 공격이라고 판단한 개수 / 실제 공격 개수 )

 

 

 

https://blog.neonkid.xyz/87


http://bluese05.tistory.com/15


공식 문서(영어) : https://docs.docker.com/network/


*Hadoop3 를 Docker container에 올려서 실행하는 방법은 아래 링크 참고.

http://eyeballs.tistory.com/14 






Hadoop 3 깃허브에서 만든 Dockerfile 을 해부해보는 시간을 갖겠습니다.


몇몇 명령어들은 커스터마이징 되어 있기 때문에 본래의 Dockerfile과 다릅니다.

*참고로 아래 Dockerfile 을 그대로 build 하면 돌아가지 않습니다.

제대로 된 Dockerfile은 가장 위에 있는 14번 글 안에 있습니다.


FROM ubuntu:latest


ENV DEBIAN_FRONTEND noninteractive

ENV HADOOP_HOME /opt/hadoop

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64


RUN apt-get update

RUN apt-get install -y --reinstall build-essential #컴파일을 하기 위해 필요한 것들(gcc, make 등)

RUN apt-get install -y ssh 

RUN apt-get install -y rsync 

RUN apt-get install -y vim 

RUN apt-get install -y net-tools

RUN apt-get install -y openjdk-8-jdk #hadoop3 에서 필수적인 jdk8 을 설치.

RUN apt-get install -y python2.7-dev #python 2.7 로 설치.

RUN apt-get install -y libxml2-dev 

RUN apt-get install -y libkrb5-dev 

RUN apt-get install -y libffi-dev 

RUN apt-get install -y libssl-dev 

RUN apt-get install -y libldap2-dev 

RUN apt-get install -y python-lxml 

RUN apt-get install -y libxslt1-dev 

RUN apt-get install -y libgmp3-dev 

RUN apt-get install -y libsasl2-dev 

RUN apt-get install -y libsqlite3-dev  

RUN apt-get install -y libmysqlclient-dev


RUN \

    if [ ! -e /usr/bin/python ]; then ln -s /usr/bin/python2.7 /usr/bin/python; fi #/usr/bin/python 파일이 있으면 /usr/bin/python2.7을 /usr/bin/python 으로 바로가기 할 수 있도록 심볼릭 링크를 만든다.


RUN \

    wget https://archive.apache.org/dist/hadoop/core/hadoop-3.1.1/hadoop-3.1.1.tar.gz && \

    tar -xzf hadoop-3.1.1.tar.gz && \

    mv hadoop-3.1.1 $HADOOP_HOME && \

    for user in hadoop hdfs yarn mapred; do \

         useradd -U -M -d /opt/hadoop/ --shell /bin/bash ${user}; \ #hadoop, hdfs, yarn, mapred 라는 이름으로 사용자를 등록한다. home dir는 /opt/hadoop/ 이며 계정의 로그인쉘은 /bin/bash 이다.

    done && \

    for user in root hdfs yarn mapred; do \

         usermod -G hadoop ${user}; \ #위에서 만든 사용자들과 root를 hadoop 이란 그룹으로 묶는다.

    done && \

    echo "export JAVA_HOME=$JAVA_HOME" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ #각종 환경 변수들을 hadoop-env.sh에 넣는다.

    echo "export HDFS_DATANODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \

#    echo "export HDFS_DATANODE_SECURE_USER=hdfs" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \

    echo "export HDFS_NAMENODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \

    echo "export HDFS_SECONDARYNAMENODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \

    echo "export YARN_RESOURCEMANAGER_USER=root" >> $HADOOP_HOME/etc/hadoop/yarn-env.sh && \

    echo "export YARN_NODEMANAGER_USER=root" >> $HADOOP_HOME/etc/hadoop/yarn-env.sh && \

    echo "PATH=$PATH:$HADOOP_HOME/bin" >> ~/.bashrc


RUN \

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \ #ssh를 위한 key를 생성한다. pw는 ''. 

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \ #생성한 키를 저장한다.

    chmod 0600 ~/.ssh/authorized_keys #권한을 사용자만 읽고 쓸 수 있도록 바꾼다.


ADD *xml $HADOOP_HOME/etc/hadoop/


ADD ssh_config /root/.ssh/config


ADD start-all.sh start-all.sh


EXPOSE 8088 9870 9864 19888 8042 8888


CMD bash start-all.sh #Docker Container가 시작되었을 때 이 명령어를 실행하여 start all 한다.


ENV DEBIAN_FRONTEND teletype

 





+ Recent posts