CentOS 7.x NTP 시간 동기화



리눅스 서버 시간을 우리나라 Asia Seoul 로 동기화 하는 방법입니다.


해외 업체에서 VPS를 개설하니 시간이 맞지 않는군요~


rdate 로 동기화 가능하며 ntpd 데몬으로도 할 수 있습니다.


우선 date 명령어로 시간이 맞는지 확인합니다.


# date

Thu Mar 30 12:07:08 KST 2017


KST 로 나오지 않는다면 /etc/localtime 을 바꾸어 줍니다.


# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime



이제 시간을 동기화 하는 방법입니다.



▶ 크론으로 동기화


00 06 * * * root /usr/bin/rdate -s time.bora.net && /sbin/clock -w


매일 새벽6시 시간을 동기화 하는 크론입니다.



▶ ntpd 데몬으로 동기화


# yum -y install ntp

# systemctl start ntpd

# systemctl enable ntpd



동기화가 잘 되고 있는지 확인


# ntpq -pn

     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*211.233.40.78   204.123.2.5      2 u   76   64    2   37.130    0.738   0.000

 45.76.107.191   160.16.75.242    3 u   10   64    1    1.939    3.836   0.000



타임서버를 다른 곳을 변경하는 방법


vi /etc/ntp.conf


#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

server kr.pool.ntp.org

server asia.pool.ntp.org


그런데 굳이 안바꿔도 됩니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 특정 계정만 su 명령어 허용하기



일반계정으로 ssh 로 로그인 후에 su 로 root 계정에 접근할 수 있습니다.


su 명령어를 사용할 수 있는 계정을 지정한다면 보안에 좀 더 도움이 되지 않을까 생각됩니다.



1. /etc/group 파일수정


wheel:x:10:root,허용계정


위의 부분을 찾아서 root 뒤에 콤마로 구분해서 계정을 추가 해주면 됩니다.



2. /etc/pam.d/su 파일수정


auth            required        pam_wheel.so use_uid


위 부분을 찾아서 주석을 제거해주면 됩니다.



반응형

'LINUX' 카테고리의 다른 글

CentOS 6.x letsencrypt install  (0) 2017.04.06
CentOS 7.x NTP 시간 동기화  (0) 2017.03.30
리눅스 UNISON 환경설정  (0) 2017.03.27
CentOS 7.x unison 양방향 파일동기화  (10) 2017.03.27
CentOS 7.x logwatch 로그분석 알림 유틸  (0) 2017.03.24
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 UNISON 환경설정



특정 폴더를 제외하는 옵션 및 unison 사용방법에 대해서 알아보겠습니다.


▶ 환경설정 파일 없이 명령어로 실행하는 방법


unison -batch -times -ignore='Path test1' -ignore='Path test2' -ignore='Path test3' -logfile=/var/log/unison.log /var/www/html ssh://root@192.168.1.3//var/www/html



▶ unison 환경설정 하기 ( vi /root/.unison/default.prf )


# Unison preferences file

root = /var/www/html

root = ssh://root@192.168.1.3//var/www/html

sshargs = -p 10022

ignore = Path test1

ignore = Path test2

ignore = Path test3

ignore = Name *.tmp

ignore = Name *.swp

batch = true

times = true

logfile = /var/log/unison.log


root : 첫번째는 로컬의 디렉토리


root : 두번째는 원격지의 디렉토리 ( 포트가 22번이 아니라면 아이피 뒤에 :포트번호를 적어주면 됩니다. )

원격지 주소뒤에는 원격지의 폴더 구분자로 / 적어주어야 됩니다. 슬래쉬가 두개가 되는거지요~


sshargs : ssh 접속 포트를 입력합니다. root 에서 주소뒤에 포트번호를 적어주어도 됩니다.


ignore : 제외할 폴더를 나열하며 됩니다. /var/www/html/test1 이라면 test1 만 적어주면 됩니다.

path 가 아닌 파일명은 Name *.tmp 이렇게 적어주면 됩니다.

batch : 물어보지 않고 실행하는 옵션입니다.

times : 파일의 시간 정보도 싱크하는 옵션입니다.

logfile : 로그 파일이 저장되는 경로입니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.x unison 양방향 파일동기화



LSYNCD 데몬을 두 서버 모두 기동시키면 lsyncd 로도 양방향 파일동기화가 가능하지만 delete = true 로 옵션을 걸었을 때 문제가 있습니다.


lsyncd 데몬이 한 군데가 멈추었다던가, 두 서버 중 한 서버가 기타 여러 이유로 싱크가 잠시 중단이 되었을 때는 의도하지 않게 파일이 삭제되는 위험성이 있습니다.


메인서버 -> 백업서버 이런 단방향은 아무런 문제가 없습니다. 하지만 로드밸런싱으로 구축된 서버라면 문제가 생길 수 있다는 겁니다.


예를 들어 백업서버가 재부팅되고 있는 사이에 메인서버에 파일이 업로드가 되었다면 이 때 문제가 발생합니다.


백업서버 재부팅이 되면 lsyncd 데몬이 실행이 되겠지요. 이 때 파일 싱크가 이루어 지게 되는데 메인서버에는 있지만 백업서버에는 파일이 없는 파일이 있습니다. 이 파일은 없는 파일이기 때문에 메인서버의 파일까지 삭제가 되게 됩니다.


그렇다고 delete 옵션을 false 를 주게 되면 위 문제는 생기지 않겠지만 불필요한 파일을 계속 가지고 있어야 한다는 문제가 있습니다.



이런 경우에 lsyncd 유틸도 사용하면서 unison 을 보조적으로 크론을 이용해서 하루에 한번 동기화를 하게되면 위 문제가 해결이 가능합니다.



▶ unison 설치


# yum install unison


서버 양쪽에 모두 설치를 하여야 합니다.


한쪽만 설치를 하게 되면 아래와 같은 에러가 발생합니다.


Contacting server...

bash: unison: command not found

Fatal error: Lost connection with the server



▶ lsyncd 설정


settings {

        logfile="/var/log/lsyncd/lsyncd.log",

        statusFile="/var/log/lsyncd/lsyncd-status.log"

}


sync {

        default.rsyncssh,

        source="/var/www/html",

        host="192.168.1.3", -- 메인서버, 백업서버 다르게 설정

        targetdir="/var/www/html",

        delete = false,

        rsync = {

                archive = true,

                compress = false,

                verbose = false

        }

}


서버 양쪽에 모두 설정을 합니다.


자세한 lsyncd 설정방법은 https://ivps.tistory.com/150 여기를 참고하세요.



▶ unison 환경설정 ( /root/.unison/default.prf )


# Unison preferences file

root = /var/www/html

root = ssh://root@192.168.1.3//var/www/html

ignore = Path test1

ignore = Path test2

ignore = Path test3

batch = true

times = true

logfile = /var/log/unison.log


/root/.unison 폴더가 없다면 unison 을 한번 실행해주면 폴더가 생깁니다.

첫번째 root 는 로컬의 디렉토리

두번째 root 는 원격지의 디렉토리 ( 포트가 22번이 아니라면 아이피 뒤에 :포트번호를 적어주면 됩니다. )

ignore 는 제외할 폴더를 나열하며 됩니다. /var/www/html/test1 이라면 test1 만 적어주면 됩니다.



▶ cron 등록


# echo "00 03 * * * root /usr/bin/unison" > /etc/cron.d/unison

# chmod 600 /etc/cron.d/unison


동작시간은 자신에 맞게 수정하면 됩니다.


크론은 두 서버중에 한군데만 등록하면 됩니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.x logwatch 로그분석 알림 유틸



리눅스의 로그를 분석해서 에러정보나 ssh 접속시도와 같은 정보를 매일 오전에 메일로 보내주는 유틸입니다.


하드디스크 용량 정보도 있어서 유용하다면 유용하고 메일을 하루에 한통씩을 받아야 하는 어쩌면 귀찮기도 합니다.


설치는 방법은 아래와 같습니다.


# yum install logwatch


설정은 크게 바꿀건 없고 메일 주소만 변경해주면 됩니다.


# vi /usr/share/logwatch/default.conf/logwatch.conf

MailTo = root


root 대신에 실제 메일주소를 입력하면 됩니다.


/etc/cron.daily 크론에 등록이 되어 있어서 매일 하루에 한번씩 실행이 됩니다.


강제로 실행하는 방법은 아래 처럼 하면 됩니다.


# /usr/sbin/logwatch --output mail


위의 명령어를 실행하면 메일로 아래 처럼 리포트 메일이 날아옵니다.


################### Logwatch 7.4.0 (03/01/11) #################### 

        Processing Initiated: Fri Mar 24 16:27:20 2017

        Date Range Processed: yesterday

                              ( 2017-Mar-23 )

                              Period is day.

        Detail Level of Output: 0

        Type of Output/Format: mail / text

        Logfiles for Host: conoha.ivps.kr

 ################################################################## 

 

 --------------------- httpd Begin ------------------------ 


 Connection attempts using mod_proxy:

    1.162.172.194 -> mx-tw.mail.gm0.yahoodns.net:25: 231 Time(s)

    195.154.226.17 -> lqak.euw1.lol.riotgames.com:443: 3 Time(s)

 

 A total of 3 sites probed the server 

    183.129.160.229

    60.191.38.77

    60.191.38.78

 

 Requests with error response codes

    400 Bad Request

       lqak.euw1.lol.riotgames.com:443: 3 Time(s)

    404 Not Found

       /favicon.ico: 14 Time(s)

       /robots.txt: 8 Time(s)

       /current_config/passwd: 4 Time(s)

       /current_config/Account1: 3 Time(s)

       /admin/i18n/readme.txt: 2 Time(s)

       /auto/4_0235.html: 1 Time(s)

       /auto/8_6858.html: 1 Time(s)

       /cgi-bin/php?-d+allow_url_include%3Don+-d+ ... atus_env%3D0+-n: 1 Time(s)

       /hot/news/0_3783.html: 1 Time(s)

       /html/5_8085.html: 1 Time(s)

       /html/7_7733.html: 1 Time(s)

       /media/7_4339.html: 1 Time(s)

       /phpmyadmin: 1 Time(s)

       /pic/news/5_4026.html: 1 Time(s)

       /shehui/6_1375.html: 1 Time(s)

       /tech/4_7891.html: 1 Time(s)

       /yule/1_6028.html: 1 Time(s)

    405 Method Not Allowed

       /webdav/: 3 Time(s)

 

 ---------------------- httpd End ------------------------- 


 

 --------------------- pam_unix Begin ------------------------ 


 sshd:

    Authentication Failures:

 

 vsftpd:

    Authentication Failures:

       unknown (202.107.219.49): 1 Time(s)

       unknown (39.33.123.228): 1 Time(s)

    Invalid Users:

       Unknown Account: 2 Time(s)

 

 

 ---------------------- pam_unix End ------------------------- 


 

 --------------------- Connections (secure-log) Begin ------------------------ 


 

 **Unmatched Entries**

 

 ---------------------- Connections (secure-log) End ------------------------- 


 

 --------------------- SSHD Begin ------------------------ 


 

 SSHD Killed: 2 Time(s)

 

 SSHD Started: 4 Time(s)

 

 Failed logins from:

 

 Illegal users from:

    undef: 1 time

 

 Login attempted when not in AllowUsers list:

 

 Users logging in through sshd:

 

 

 Received disconnect:

    11: disconnected by user : 17 Time(s)

 

 **Unmatched Entries**

 error: key_from_blob: can't read key type : 2 time(s)

 error: buffer_get_string_ret: bad string length 67108871 : 2 time(s)

 

 ---------------------- SSHD End ------------------------- 


 

 --------------------- Disk Space Begin ------------------------ 


 Filesystem      Size  Used Avail Use% Mounted on

 /dev/vda2        20G   15G  4.4G  77% /

 devtmpfs        236M     0  236M   0% /dev

 

 

 ---------------------- Disk Space End ------------------------- 


 

 ###################### Logwatch End ######################### 


조금 가공한 로그입니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

MySQL mysqldump 전용 계정 만들기



mysqldump 명령어 사용시 사용할 계정에 최소한의 필요한 권한만으로 계정을 만들어 보겠습니다.


우선 select 는 필수적으로 권한이 있어야 합니다.


그리고 show databases, 테이블락이 필요하다면 lock tables 도 필요합니다.


이렇게 세가지 권한으로 계정을 생성하면 됩니다.


GRANT SELECT, SHOW DATABASES, LOCK TABLES ON *.* TO '유저아이디'@'localhost' IDENTIFIED BY '비밀번호'


flush privileges 는 따로 안해줘도 됩니다.



이 정도 권한이면 굳이 root 계정이 아닌 덤프 전용 계정으로 백업을 진행하여도 되지 않을까 싶습니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 SSH 특정 계정만 접속 허용하기



지정한 유저만 ssh 로그인을 허용하게 할 수 있습니다.


/etc/ssh/sshd_config 파일에 AllowUsers 옵션을 사용하여 유저아이디를 공백으로 나열하면 됩니다.


여기에 root 계정이 빠지게 되면 "PermitRootLogin yes" 이더라도 root 도 접근이 차단되니 주의하셔야 합니다.


# echo "AllowUsers 유저1 유저2 유저3" >> /etc/ssh/sshd_config

# systemctl restart sshd


vi 편집기를 사용해서 추가해주어도 됩니다.


그리고 sshd 데몬을 재시작 적용이 됩니다.


여기에 누락된 계정은 ssh 포트를 이용하는 rsync, sftp 와 같은 것도 차단이 되니깐 전체적으로 잘 파악하고 설정하시기 바랍니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

DNSLOOKUP 명령어 TTL 정보 알아내기



dnslookup 으로 도메인의 IP 외에도 갱신되는 시간도 알아낼 수가 있습니다.



# nslookup -debug conoha.ivps.kr

Server:         157.7.180.133

Address:        157.7.180.133#53


------------

    QUESTIONS:

        conoha.ivps.kr, type = A, class = IN

    ANSWERS:

    ->  conoha.ivps.kr

        internet address = 133.130.124.240

        ttl = 92

    AUTHORITY RECORDS:

    ADDITIONAL RECORDS:

------------

Non-authoritative answer:

Name:   conoha.ivps.kr

Address: 133.130.124.240


-debug 옵션 사용으로 좀 더 자세한 정보를 볼 수가 있습니다.



# nslookup

> conoha.ivps.kr

Server:         157.7.180.133

Address:        157.7.180.133#53


Non-authoritative answer:

Name:   conoha.ivps.kr

Address: 133.130.124.240

> set debug

> conoha.ivps.kr

Server:         157.7.180.133

Address:        157.7.180.133#53


------------

    QUESTIONS:

        conoha.ivps.kr, type = A, class = IN

    ANSWERS:

    ->  conoha.ivps.kr

        internet address = 133.130.124.240

        ttl = 44

    AUTHORITY RECORDS:

    ADDITIONAL RECORDS:

------------

Non-authoritative answer:

Name:   conoha.ivps.kr

Address: 133.130.124.240

> exit


nslookup 을 먼저 실행하고 set debug 해서도 자세하게 볼 수 있습니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

MySQL 읽기전용 유저 생성



셀렉트만 가능한 유저를 생성하는 방법입니다.


다른 용도로도 사용을 하겠지만, 주 용도가 데이터 변경이 되면 안되는 Replication Slave 서버를 핸들링할때 사용합니다.


GRANT SELECT ON *.* to 'readuser'@'%' IDENTIFIED BY 'readonly'

*.* 대신에 접근가능한 database명을 지정해도 됩니다.


한번 테스트를 해보겠습니다. ( delete, update, insert )


# mysql -ureaduser -preadonly

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 58

Server version: 5.5.52-MariaDB MariaDB Server


Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> use testdb

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

MariaDB [testdb]> select * from test_table4;

+-----+-------+

| idx | title |

+-----+-------+

|   1 | 111   |

|   2 | 222   |

|   3 | 333   |

+-----+-------+

3 rows in set (0.00 sec)


MariaDB [testdb]> delete from test_table4 where idx = 3;

ERROR 1142 (42000): DELETE command denied to user 'readuser'@'localhost' for table 'test_table4'

MariaDB [testdb]> update test_table4 set title='444' where idx = 4;

ERROR 1142 (42000): UPDATE command denied to user 'readuser'@'localhost' for table 'test_table4'

MariaDB [testdb]> insert into test_table4 value (4,444);

ERROR 1142 (42000): INSERT command denied to user 'readuser'@'localhost' for table 'test_table4'


셀렉트는 가능하지만 삭제, 수정, 추가 기능은 에러가 뜨는 것을 확인할 수 있습니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 쉘스크립트 문자열 치환



쉘스크립트에서 문자열을 치환하려면 for 문을 돌려서 치환 하던가 아니면 리눅스 명령어 sed 를 활용하면 됩니다.


예제는 php 에서 implode 함수와 비슷한 기능을 하는 예제입니다.



▶ 배열인 경우


ARR_A=(1 2 3 4 5)

ARR_C=`echo ${ARR_A[@]} | sed -e "s/ /,/g"`


echo $ARR_C


결과 값은 1,2,3,4,5 입니다.



▶ 문자열인 경우


ARR_B="1 2 3 4 5"

ARR_C=`echo $ARR_B | sed -e "s/ /,/g"`


echo $ARR_C


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,