Posted on 2018/04/23 19:30
Filed Under Linux/설정방법

DNS server, DNS service  

원격 접속 가능한 호스트 및 사용자 확인



[root@company bin]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 561388
Server version: 5.0.51-log Source distribution
 
 
 
mysql> select HOST, USER, Password FROM mysql.user;
+-----------------+-------+-------------------------------------------+
| HOST            | USER  | Password                                  |
+-----------------+-------+-------------------------------------------+
| localhost       | root  | *(생략)                           | 
| company         | root  |                                           | 
| 127.0.0.1       | root  |                                           | 
| localhost       |       |                                           | 
| company         |       |                                           | 
| localhost       | news  | *(생략)                                | 
| 211.200.200.200 | news  | (생략)                                     | 
| 100.200.100.100 | news  | (생략)                                      | 
| 192.168.100.110 | news  | (생략)                                      | 
+-----------------+-------+-------------------------------------------+
 
9 rows in set (0.02 sec)


위 경우 HOST에 명시된 호스트에서만 접속 가능.

따라서 사용자 추가.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| company            | 
+--------------------+
3 rows in set (0.01 sec)
 
mysql> use mysql
Database changed
 
mysql> insert into user (host,user,password) 
values('%','news',password('newspasswd'));
Query OK, 0 rows affected (0.02 sec)
 
mysql> GRANT all privileges on *.* to 'news'@'%' 
identified by 'newspasswd' ;
Query OK, 0 rows affected (0.02 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
 
 
mysql> select HOST, USER, Password FROM mysql.user;
+-----------------+-------+-------------------------------------------+
| HOST            | USER  | Password                                  |
+-----------------+-------+-------------------------------------------+
| localhost       | root  | *7540F67EE4(생략)                         | 
| company         | root  |                                           | 
| 127.0.0.1       | root  |                                           | 
| localhost       |       |                                           | 
| company         |       |                                           | 
| localhost       | news  | *7540F67EE4                               | 
| 211.200.200.200 | news  | 49d7                                      | 
| 100.200.100.100 | news  | 49d7                                      | 
| 192.168.100.110 | news  | 49d7                                      | 
| %  | news  | *7540F67EE4                               | 
+-----------------+-------+-------------------------------------------+
10 rows in set (0.02 sec)
 

단 MySQL 5.7에서는 Insert 명령어를 아래와 같이 변경해야 함.
insert into user(host,user,authentication_string,ssl_cipher,x509_issuer,x509_subject) values ('%', 'news', password('password'),'','','');


호스트를 %로 할경우 어떤 호스트에서든 접속 가능.


이렇게 하고도... 외부에서 접속이 안될 경우

1. OS 방화벽 (리눅스 방화벽 확인 ) 해제 - ufw disable
2. MySQL 설정 파일 "my.cnf" (mysqld.cnf) 에, bind-address=127.0.0.1 로 되어 있는 것을 "0.0.0.0" 으로 변경 후, 
3. MySQL 재시작

2018/04/23 19:30 2018/04/23 19:30

Posted on 2018/04/02 15:28
Filed Under Linux/장애처리

DNS server, DNS service  

우분투 16.04 버전은 systemd 기반으로 PID들이 관리된다,
rc.local을 부득이 하게 사용할 일이 생겨 사용하려 했으나 활성화가 안되어 있어서 활성화 방법을 찾아서 기록

 

/lib/systemd/sytem/rc-local.service 을 수정한다.

 

가장 하단에 

 

more..

 


​위 와 같이 추가 시켜준 뒤 

more..

 

​rc.local 서비스를 활성화 시켜준다.

Install을 추가시켜주지 않고 활성화를 시켜주려 하면, 해당 부분이 없어 활성화가 되지 않는다.

 

rc.local이 제데로 동작하는지 테스트는 서비스 재시작 뒤 확인 해주면 된다.

more..

 

​정상적으로 동작한다면 

 

more..


active (활성화) 되었다고 표시되며, 하단에 로그도 확인이 가능하다.

2018/04/02 15:28 2018/04/02 15:28

Posted on 2018/03/08 17:43
Filed Under Programming/C,C++

DNS server, DNS service  

출처: http://bbolmin.tistory.com/65 


Stack Smashing Protector은 gcc 4.1버전 부터 있는 stack overflow를 방지하기 위한 컴파일러 옵션이다.

 

gcc 4.6.1버전에서 컴파일 후 overflow가 발생하는 프로그램을 실행시켜 보니 다음과 같이 stack smashing detected가 뜨는 것을 확인 할 수 있다.

SSP 끄기 : -fno-stack-protector

SSP를 모든 함수에 설치 : -fstack-protector-all (원래는 일정 크기의 char배열이 있는 함수에만 적용됨)


SSP의 기능을 살펴보자

1. 로컬 변수 재배치

2. 로컬 변수전에 포인터 배치

3. canary 삽입

 

1. 로컬 변수 재배치

 

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

 

void main(int argc, char *argv[])

{

    int check=0;
    char buf[10];

    strcpy(buf, argv[1]);

    if(check==0)
        exit(0);

    printf("check : %d\n", check);

}

buf를 오버플로우시켜서 check값을 바꿀 수 있을 것이다. 하지만 SSP는 스택에서 char배열을 제일 높은 곳으로 올려 다른 변수 값이 변조되는 것을 막는다.

 

 

2. 로컬 변수전에 포인터 배치

 

void test(char *arg)

{

char buf[10];

strcpy(buf, arg);

}

위와 같이 포인터가 있을 때 buf를 오버플로우 시켜서 test함수의 파라미터로 전달된 포인터 arg값을 바꿀 수 있을 것이다. 하지만 SSP는 arg포인터를 buf아래 쪽에 두어서 변조되는 것을 막는다.

 

 

 

3. canary 삽입

 

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

|       ret     |

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

|      ebp     |

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

|   canary  |

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

|       buf     |

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

 

stack guard처럼 canary를 두어 ret변조를 탐지한다. 이 때 canary는 ebp와 buf 사이에 넣는다. canary 값은 1) random, 2) terminator, 3) null 을 사용하여 우회하는 것을 방지한다. canary 변조를 탐지 했을 때 맨위 그림와 같이 stack-smashing-detected 메시지를 띄어준다. (변조 탐지시 __stack_chk_fail함수를 호출)

 

2018/03/08 17:43 2018/03/08 17:43

About

by CoCo

Notice

Counter

· Total
: 846588
· Today
: 75
· Yesterday
: 70