728x90

서버의 포트 설정, 트래픽 설정, 방화벽 설정 등 할때 사용되는 몇가지 방법이 존재하는데

1.firewalld

2. ufw (iptables을 좀더 간단한 인터페이스로 바꾸었찌만 기능은 더쭘)

3. iptables  가 있다.

 

여기서 가장 막강한 능력을 가진 iptables을 알아보자

 

실무에서 예를 들면 다음과 같은 상황에서 생각해 볼법하다

 

- ssh, nginx, tomcat 등 포트를 오픈한다

- 포트 포워딩을 한다

- 특정 ip에 대한 모든것을 허용/거부 한다 

등 이있다

 

그러기 떄문에 명령어도 위의 스타일 형태를 가질거라 추측 할 수있다 (출발지 어디 포트 , 도착지 어디 포트 허용 / 거부 )

 

iptables 는 "tables" 이라는 단어가 있듯이

 

5개의 테이블이 존재한다

filter, nat, mangle, raw, security

 

각 테이블에는 여러 체인이 있다 

체인이란 단어 느낌처럼 서로 연결되어있고

패킷이 -----> ----->  -----> 서버 방향으로 들어갈 것아닌가?

그때 구간( -----> )을 각각 체인이라 부른다고 가볍게 생각하자

구간별 체인마다 이름을 달리하여 부른다.

 

전체 체인을 나열하면

1. prerouting( 들어오기전 )

2. forward( 통과할때 ) 

3. input( 들어올때 ) 

4. output( 나갈때 

5. postrouting( 나간후)

(마치 웹개발자 감성으로는 인터셉터나 필터같다)

 

각 테이블마다 모든 체인을 사용하는 것은 아니고

아래에 표로 정리했다.

 

 

 

자주 사용되는 3개의 정도만 알아보자 

테이블 테이블에 속한 체인 설명
filter forward, input, output 기본으로 사용하는 테이블
nat prerouting, input, output, postrouting 네트워크 주소 변환이 필요할때
사용하는 테이블
mangle prerouting, forward, input, output, postrouting nat와 패킷필터링과는 상관없는
네트워크 패킷 내용을
바꾸거나 수정하는 테이블

 

 

 

여러 명령어 옵션이 있어서 햇갈리는데

중요한것 몇개만 추려봤다

-t 테이블 옵션
-j 행위에 대한 옵션이다(jump)
SNAT, DNAT
-s 출발지 ip
-d 목적지 ip
--sport 출발지 port
--dport 목적지 port
-p 프로토콜
--to-destination 도착지 ip:port
-A 규칙 추가 Append

 

// 규칙 조회
iptables -nL

// 규칙 초기화
iptables -F

// 특정 IP 허용
iptables -A INPUT -s 192.168.10.100 -j ACCEPT

// 특정 IP 거부
iptables -A INPUT -s 192.168.10.100 -j DROP (또는 REJECT)

// 프로토콜 : TCP  
// 포트 : 22, 80, 8080, 443, 3306 포트 허용
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT



////////////////////////////////////////////////////////////////////////////////////////
// 포트 포워딩

// 초기설정
sysctl -w net.ipv4.ip_forward=1

// 80번 포트로 들어오는 tcp 패킷을
// 192.168.10.200:8080 으로 포트포워딩하기
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to-destination 192.168.10.200:8080


// 192.168.10.200:8080 의 응답을 패킷 수정하기
// -d : 목적지 아이피
// --dport : 목적지 포트
iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.200 --dport 8080 -j SNAT --to-source 내아이피

////////////////////////////////////////////////////////////////////////////////////////

 

참고로 여기서 작성한 iptables 규칙은 재부팅시 삭제된다

다음 포스팅에서 이를 해결해보자

 

 

 

728x90

+ Recent posts