글을 쓰기 앞서 이곳을 참조하여 공부했습니다.
(틀린 내용이 있을 수 있으니 지적해주시면 바로 반영하겠습니다.)
Q. iptables 가 뭔가요?
보통 데스크탑에서 자주 사용하는 운영체제인 Windows에 방화벽🧱 이 있듯이
Linux 에도 iptables 라는 방화벽 기능이 있습니다. ( Linux Kernel v2.4 이전에는 ipchains로 사용되었습니다. )
Legacy : iptables
Cloud : Security Group
Container : Network Policy
Q. iptables 가 뭘하나요?
iptables 기능은 Kernel 상에서 netfilter 라는 패킷필터링 기능을 사용자 공간에서 사용할 수 있게 해줍니다.
기본적으로 Network Device 에 설정값으로 Kernel 이 패킷들을 필터링을 하지만 인위적으로 필터링할 패킷들을 설정하기 위해 사용할 수 있습니다.
Q. 패킷필터링은 뭔가요?
Kernel 이 수신하는 트래픽 (패킷) 의 헤더를 보고 그 전체 패킷의 방향을 결정하는 것을 말합니다.
일반적으로 패킷은 헤더와 데이터를 가지고 있습니다.
UDP 프로토콜의 헤더 입니다. ( 이외에도 TCP, IP , ARP, ... 등의 프로토콜 헤더가 있습니다. 여기 참조)
Destination Port 를 확인하여 패킷의 목적지로 확인되면 패킷을 허용(ACCEPT) 합니다.
Q. iptables 를 어떻게 사용하나요?
iptables 는 특정 패킷필터링을 하기 위해 정책을 설정해주어야 합니다.
현재 Server 를 기점으로
INPUT : Server 로 들어오는 트래픽 정책
OUTPUT : Server로부터 나가는 트래픽 정책
FORWARD : Server가 트래픽을 전달하는 트래픽 정책
마스커레이드 (Masquerade)
- 내부 사설 IP의 PC들이 외부 인터넷이 연결 가능하도록 해주는 기능
NAT (Network Address Translation) : 네트워크 주소 변환 서비스
- SNAT (Source NAT) : 내부 사설IP에서 외부로 나갈 때 공인IP로 변환
- DNAT (Destination NAT) : 외부에서 방화벽(외부IP)으로 요청되는 주소로 내부사설IP로 변환
일반적으로 INPUT 정책은 보안에 큰 영향을 주기 때문에 안전한 정책을 설정해주어야 하지만
OUTPUT 정책의 경우는 대부분 수신한 곳으로 응답을 해주는 역할이기 때문에 큰 영향이 없다.
정책
- ACCEPT (허용)
- DROP (폐기)
- REJECT (거부)
Command
규칙 추가
iptables -A INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -p [프로토콜] - j [정책]
규칙 제거
iptables -D INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -p [프로토콜] - j [정책]
정책에는 순서가 있으며 내림차순으로 우선 적용됩니다.
따라서, 정책 설정 시 순서에 유의하여 작성해야 합니다.
# 규칙 변경 후 저장
service iptables save => /etc/sysconfig/iptables 에 저장됩니다.
iptables -L # 현재 규칙 확인
iptables -F # 현재 규칙 초기화
다양한 명령어 활용은 아래를 참조하세요.
trimstray's github
gabia's blog
'📡Network' 카테고리의 다른 글
Load Balancer (0) | 2022.12.11 |
---|---|
IP Class , NAT (0) | 2022.08.14 |
IP (0) | 2022.08.14 |