// google adsense
반응형

시작하기 앞서

1. JDK를 설치한다.

$sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  1. 환경변수를 편집한다.
$sudo vim /etc/profile

# 구문 추가
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
  1. 환경변수를 등록한다.
$source /etc/profile

elasticsearch

설치

  1. /etc/yum.repos.d/ 에 아래의 elasticsearch.repo를 추가한다.
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
  1. yum으로 설치한다.
$sudo yum -y install elasticsearch

kibana

설치

elastic 설치와 같이 repo를 추가해주고 yum으로 설치한다.

$sudo vim /etc/yum.repos.d/kibana.repo

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum -y install kibana

설정

  1. 호스트, 이름, SSL(옵션)설정
$sudo vi /etc/kibana/kibana.yml

# 주석해제 후 수정
#서버 호스트 입력
server.host: "127.0.0.1"

server.name: "anything"

#로그가 담긴 elasticsearch 주소 입력
elasticsearch.url: "http://127.0.0.1:9200"

#SSL 설정 
#로컬에서만 사용할 것이라면 하지 않아도 된다. 단 외부에서 연결하여 사용할 경우엔 보안상 SSL 설정을 꼭 해주자.
server.ssl.enabled: true
server.ssl.certificate: crt경로
server.ssl.key: key경로

SSL 설정을 해주었을 경우 인증서의 권한을 수정해준다.

$sudo chown kibana. 인증서경로(.crt & .key)
  1. 방화벽 설정
$sudo firewall-cmd --add-port=5601/tcp --permanent
$sudo firewall-cmd --reload

filebeat

filebeat는 로그 파일들을 모아서 logstash로 보내준다. logstash가 과부하 되었을때 속도를 줄여주고, 시스템 가동이 갑자기 중단되고 다시 시작되었을때, 로그의 중단점을 기억하고 그 지점부터 로그를 보내준다. 이러한 장점들이 있기에 filebeat를 사용하였다.

설치

마찬가지로 repo를 추가하고 yum으로 설치한다.

$sudo /etc/yum.repos.d/elastic.repo

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum install -y filebeat

filebeat 설정

filebeat에서 보낼 로그의 경로를 설정한다.

우리는 logstash를 사용하여 로그를 보낼 것이므로 output으로 logstash를 사용한다.

$sudo vim /etc/filebeat/filebeat.yml

filebeat.prospector:
- input_type: log
  paths:
    #bash 명령어들을 기록한 로그
    - /var/log/bash_history
    #mysql 로그
    - /var/log/mysql/*
    #apache2 로그
    - /var/log/httpd/*

output.logstash:
  hosts: ["127.0.0.1:5044"]

logstash

설치

repo 추가, yum으로 설치한다. 설정은 뒤에 한꺼번에 다룰 것이다.

$sudo vim /etc/yum.repos.d/logstash.repo

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum -y install logstash

설정

filebeat로 보내진 로그를 elasticsearch로 보내는 설정을 한다.

기타 다른 beat에서 보내진 로그나 logstash에서 직접 로그를 보낼 수 있다.

sudo vim /etc/logstash/conf.d/filebeat.conf

input {
  beats {
    port => 5044
    host => "0.0.0.0"
  }
}
output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

로그 설정

로그를 확인하기 앞서, 실습에 필요한 정보를 로깅한다.

bash_history

리눅스에선 history 명령어를 통해 로그인 했던 사용자가 무슨 명령어를 사용했는지 확인 할 수 있다.

logger를 통하여 쉘 명령어를 syslog 기록하도록 설정하자

$sudo vim /etc/profile.d/cmd.sh
function history_to_syslog
 {
 declare cmd
        who=$(whoami)
        cmd=$(history 1)
        TTY=`tty`
        HISNAME="`basename $TTY`"
 ip=`who |grep pts/${HISNAME} |cut -f 2 -d \(|cut -f 1 -d \)`

 logger -p local7.notice -- IP=$ip USER=$who, PID=$$, PWD=$PWD, CMD=$cmd
 }
 trap history_to_syslog DEBUG || EXIT

HISTSIZE=10000
HISTFILESIZE=1000000
HISTTIMEFORMAT="%F %T "

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE HISTTIMEFORMAT INPUTRC

declare -r HISTFILE

#환경변수 등록
$sudo source /etc/profile.d/cmd.sh

syslog 설정

$sudo vim /etc/rsyslog.conf
local7.notice    /var/log/bash_history

이제 /var/log/bash_history에 명령어를 입력한 시간, 사용자, 명령어가 기록된다.

bash_history

apache 2.4.6 log설정

웹에서 서버에 무언가를 전달 할때 get과 post 방식으로 데이터를 보낸다.

get에는 무슨 데이터가 오고 갔는지 url로 알 수 있고, post는 패킷 body에 담아져 보내진다.

apache는 접속 url과 method가 기록되어 get 방식은 무슨 데이터가 전달되어있는지 알 수 있지만 post 방식은 그렇지않다.

따라서 post 방식을 이용하였을때 무슨 데이터가 전달되었는지 body를 로깅할 수 있게 설정해준다.

apache의 모듈 mod_dumpio을 이용한다. 기본적으로 내장되어 있으므로 따로 설치할 필요는 없다.

$sudo vim /etc/httpd/conf.d/ssl.conf

<VirtualHost _default_:443>
~~~
LoadModule dumpio_module modules/mod_dumpio.so

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

#LogLevel warn
DumpIOInput On
LogLevel dumpio:trace7

그 후 워드프레스 로그인을 해보면 post body의 로그가 ssl_error_log에 남는걸 확인 할 수 있다.

다음은 127.0.0.1/wp-admin에서 로그인시도를 한 기록이다.

id는 105’ OR 1=1, pwd는 00000000을 입력하였다.

[Thu Nov 09 01:00:35.717592 2017] [dumpio:trace7] [pid 27220] mod_dumpio.c(103): [client 127.0.0.1:34232] mod_dumpio:  dumpio_in (data-TRANSIENT): log=105%27+OR+1%3D1&pwd=00000000&wp-submit=Log+In&redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&testcookie=1

kibana에서 로그 확인

  1. systemd를 통해 elasticsearch,logstash,kibana,filebeat를 실행한다.

이때 시스템이 프리징 걸리는 경우가 있다. 이 경우는 거의 RAM문제 이므로, RAM을 4G이상 주도록 한다.

  1. 127.0.0.1:5601에 접속하여 성공적으로 kibana가 실행되었는지 확인한다.

  2. 처음에 index pattern이 없다고 나올 것이다. bash에 curl localhost:9200/_cat/indices?v을 입력하여 elasticsearch에 저장된 index pattern을 확인하고 추가해준다.

filebeat-* 를 추가해 주면 될것이다.

  1. discover에서 보고싶은 파일의 로그가 있다면 filter를 통해 로그를 추출한다.

이 경우 source is /var/log/httpd/ssl_error_log-20171109와 검색 명령어로 105를 검색한다.

결과가 잘 나온것을 확인할 수 있다.

awstats

awstats는 오픈소스웨어의 로그 분석기이다. 이 툴은 apache log같이 크기가 큰 로그 파일을 빠르게 분석하여 그래픽으로 보여준다.

설치

yum -y install awstats

설정

/usr/share/awstats/tools/awstats_configure.pl 로 설정한다.

$sudo /usr/share/awstats/tools/awstats_configure.pl

도메인 이름에는 example.com을 설정해준다.

그 다음 config파일의 경로를 지정해준다.

/etc/awstats/awstats.example.com.conf

설정이 완료되었으면 config 파일을 수정한다.

$sudo vi /etc/awstats/awstats.example.com.conf

LogFile="/var/log/httpd/access_log"
Lang="ko"

실행

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.example.com

http://www.example.com/awstats/awstats.pl?config=www.example.com 으로 들어가 로그를 확인한다.

반응형

'Backend > 리눅스 & 우분투' 카테고리의 다른 글

우분투 설치 후 드라이버 설치  (0) 2018.07.03
우분투 한글 설정  (0) 2018.07.03
우분투 설치  (0) 2018.07.02
반응형

드라이버 설치

우분투를 그냥쓰면 잔버그가 엄청나게 많다.

따라서 깔고나서 소프트웨어들의 업데이트는 필수다.

$sudo apt-get update
$sudo apt-get upgrade

그다음으로 할 일은 그래픽 드라이버를 잡는 것이다.

옵티머스 노트북 같은 경우에는 인텔 드라이버와 엔비디아 드라이버를 깔아야 한다.

Nvidia 드라이버는 기본적으로 잡힌다.

System Settings > Software & updates > Additional Drivers 에서 Nvidia driver를 설정해준다

Intel Graphic Driver도 여기서 기본적으로 잡지만 인텔에서 업데이트 툴을 제공한다.

링크 에 접속하여 최신버전의 툴을 설치한다.

툴로 업데이트 하다보면 wget ~ NO PUBKEY ~ 하면서 에러를 뿜는데

$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys

NO PUBKEY 뒤의 문자열을 넣어서 인증해주고 다시 실행하면 성공적으로 인스톨이 된다.

이러한 인증방식을 GPG라고하는데 RSA 알고리즘을 이용하여 이 제품의 출처를 보증해주는 역할을 해준다고한다. 


마우스가 클릭되지 않는 문제는

임시 방편으로 Ctrl + Alt +F1 로 터미널 모드에 진입했다가 Ctrl + Alt +F7 GUI모드로 진입하므로써 우분투의 Unity를 Refresh해주는 효과로 해결한다.


반응형

'Backend > 리눅스 & 우분투' 카테고리의 다른 글

ELK 설치  (0) 2018.07.04
우분투 한글 설정  (0) 2018.07.03
우분투 설치  (0) 2018.07.02
반응형

우분투 기본 입력기 설정

우분투에는 기본 입력기로 ibus가 설치되어 있지만 다른 프로그램이나 라이브러리를 사용할때 이 기본입력기 때문에 버그가 발생한다고 한다. 향후 발생할 버그를 미연에 방지하기 위해 다른 입력기인 fcitx-hangul을 사용하도록 하자.

$sudo apt-get install fcitx-hangul

System Settings > Language Support > Keyboard Input method system

fcitx로 변경

재부팅

Setting > Keyboard >typing >Text Entry >input sources to use에 eng(US)와 hangul을 추가해주면 된다.

반응형

'Backend > 리눅스 & 우분투' 카테고리의 다른 글

ELK 설치  (0) 2018.07.04
우분투 설치 후 드라이버 설치  (0) 2018.07.03
우분투 설치  (0) 2018.07.02
반응형

윈도우가 설치된 환경에서 우분투를 멀티부팅한다.

우분투 부팅 USB 만들기

우분투 홈페이지에 가서 우분투 iso image를 받고
rufus 프로그램을 이용하여 USB에 우분투를 복사하여 부팅 가능한 USB로 만든다.
디스크 형식과 부팅 시스템 유형에는 MBR 파티션 형식의 UEFI를 선택한다.
GPT 파티션 형식의 UEFI도 해도 되지만 UEFI부팅을 지원해야 하고, 설치과정이 복잡하다.
작업이 완료되었으면 재부팅을 한 후 BIOS/UEFI 부팅 메뉴에서 부팅 순서를 바꿔주도록한다.

우분투 설치

우분투 설치 화면으로 진입했으면 try ubuntu~ 로 진입을 한다.
이 메뉴로 진입하는 이유는 설치중 모르는게 있으면 인터넷에 접속하여 해결할 수 있어 편리하기 때문이다.
try ubuntu 메뉴로 진입했으면 바탕화면에 install ubuntu를 클릭하여 설치를 시작한다.
설치중 업데이트는 우분투 설치 시간을 오래 걸리게 만드므로 체크 해제 한다
서드파티 소프트웨어 설치가 필요한 경우 체크해준다.
wifi 드라이버나 오피스 등을 깔아주기 때문에 유용하다.

우분투 파티션

설치 타입에서 something else를 클릭하고 넘어간다.
자동 설치도 편하지만 향후 문제가 발생될 소지가 있다. 때문에 안전하게 직접 파티션을 설정 해주도록 하자.
깔고자 하는 디스크의 free space를 클릭하고 다음과 같이 파티션을 설정한다.
/boot 500M
swap 현재 메모리*2
/ 30G~50G
/home , /var 등등 나머지
swap은 가상 메모리의 개념으로써, 현재 컴퓨터의 ram용량을 초과하는 프로그램을 구동할 때 사용된다. 적당히 현재메모리*2 정도 주도록 하자.
이렇게 파티션을 구성하는 이유는 만약 문제가 생겼을때 그 파티션만 복구하면 되기 때문이다.
처음에 /(root)만 만들어 설치를 해주었는데, 혹시 몰라 다시 파티션을 나누어 재설치하였다.

부트로더 설정

boot loader는 멀티부팅하는 경우엔 보통 설치하는 물리 디스크 최상단에 설정한다.
이렇게 설정해주는 이유는 GRUB(우분투 부트로더)가 윈도우, 우분투 멀티 부팅할 수 있게 하기 위해서다.
만약 논리 파티션에 부트로더를 설정해 줄 경우, 부팅 메뉴에서 수동으로 우분투 부트 로더를 추가해야 한다고 한다. 참고링크
나머지는 쉽다. 거주 지역을 선택하고 계정을 설정하면 된다.

반응형

'Backend > 리눅스 & 우분투' 카테고리의 다른 글

ELK 설치  (0) 2018.07.04
우분투 설치 후 드라이버 설치  (0) 2018.07.03
우분투 한글 설정  (0) 2018.07.03

+ Recent posts