SSH 밖에 열려있지 않아서 불편해서 사무실에서 사용하는 ip 대역만
MySQL 데이터베이스에 직접 접근 할 수 있도록 열기로 했습니다.
리눅스 서버에는 iptables 를 사용해서 제한하고 있습니다.
현재 설정을 보려면 다음을 입력합니다.
# iptables -L
추가를 하겠습니다.
# iptables -A INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT
이제 xxx.xxx.xxx.0 ~ 255 까지의 IP 대에서 접근이 가능합니다.
-A : 새로운 rule 을 추가하는 옵션 (INPUT, FORWARD, OUTPUT)
-p : 사용할 프로토콜을 지정 (TCP, UDP)
-s : 사용할 ip 주소를 지정
--destination-port : 사용할 포트를 지정
-j : 패킷처리방법을 지정(ACCEPT, DROP, REJECT)
추가했던 chain rule 을 제거하는 방법
# iptables -D INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
==> mysql 포트 열기
주의사항
위에서 처럼 명령을 사용해서 처리했을 경우 리부팅하면 추가된 설정이 없어지고 적용되지 않습니다.
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F OUTPUT
# 웹서버일경우 80으로 들어오는 요청과 1.1.1.1 에서들어오는 ssh 요청을
# 받아들인다.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPT
# 1초에 15번 이상의 HTTP 접근을 할경우 (DOS공격) 접근을 차단한다.
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -connlimit-mask 24 -j DROP
# 메일서버의 경우 동시에 5개이상 SMTP 접근자(스팸머)의 경우 5분동안
# 접근을 제한한다.
iptables -A INPUT -m recent --name spammer --rcheck --seconds 300 -j drop
iptables -A INPUT -p tcp --syn --dport 25 -m connlimit --connlimit-above 5 -m recent --name spammer --set -j DROP
# STRING 필터기능
# MSN 문자열이들어간 패킷 차단
iptables -A FORWARD -m string --string "messenger.msn.com" -j DROP
# 싸이월드로 접속차단
iptables -A FORWARD -p tcp --dport 80 -m string --string "Host: cyworld.nate.com" -j DROP
# 포트스캔을 차단한다.
iptables -A INPUT -m psd -j DROP
# 만약서버가 해킹당해 DOS공격지로 사용될때 적용시킴.
# DNS 쿼리이외에 UDP 패킷이 나가는 것을 방지
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp ! --dport 53 -m state --state NEW -j DROP
# 이외 모든 접근을 차단한다.
iptables -A INPUT -j DROP
===========================================================