메뉴 닫기

mysql 외부 접근 차단해보자

서버1대에 웹 + DB + 기타 모든 서비스를 운용중이라면 DB 서비스는 외부에서 접근할 필요가 없다.

 

DB서버에

 

netstat -anlp | grep 3306 명령어를 통해 확인해 보면

 

1.jpg

 

0.0.0.0:3306 → 모든 아이피에 대해 TCP 3306포트가 LISTEN 상태이다.

 

 

외부에서 해당 서버로 포트 스캔을 해보자

 

2.jpg

 

해당 서버는 mysql 이 구동중이라는것을 누구나 알게된다. 당장 문제는 없겠지만 mysql 취약점이 발견되거나

 

외부에서 해당 서버로 3306번 포트로 접근이 가능하기 때문에 접속할수 있는 빌미를 제공할수가 있다.

 

 

telnet 명령어를 통해 3306번 포트를 접근해보자

 

3.jpg

 

접근은 되지만 mysql 서비스가 외부 접근은 닫혀 있다라고 메세지가 뜬다.

 

어쨋든 외부 사용자가 mysql 서비스로 신호를 보내고 mysql 서비스는 외부 접근은 허용할수 없다 라고 메세지를 보내는것이다.

 

 

그냥 깔끔하게 아래 파일을 수정해보자

 

vim /etc/my.cnf (skip-networking 문자열 추가)

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

skip-networking

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid 

 

 

mysql 재시작을 하니 외부에서는 3306번 포트로 접근할수가 없었다.

 

제로보드 XE 에 대해서는 아래와 같이 에러가 발생함

 

4.jpg

 

 

다시 원복 시키고 mysql 재시작후 일단 문제점을 찾을때 까지는 방화벽을 올려야겠다.

 

 

 *filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j DROP

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

COMMIT

 

 

 

자료들을 더 찾아봐야 할듯하다

 

END

 

 [polldaddy rating=”7739789″]

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x