서버의 포트 설정, 트래픽 설정, 방화벽 설정 등 할때 사용되는 몇가지 방법이 존재하는데
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 규칙은 재부팅시 삭제된다
다음 포스팅에서 이를 해결해보자
'리눅스 > linux' 카테고리의 다른 글
하드디스크를 추가하고 파티션을 나누어보자 (2) | 2024.02.02 |
---|---|
iptables 저장 방법 (0) | 2024.01.29 |
Samba Server 를 구축해보자 (우분투, Ubuntu) (0) | 2024.01.28 |
Docker 명령어 (1) | 2023.12.05 |
JSON 방식으로 리눅스에서 컨트롤러 호출하는 방법 (0) | 2021.04.19 |