IPTables
- 리눅스 커널의 netfilter 모듈을 활용하여 네트워크 패킷 필터링, 네트워크 주소 변환(NAT), 패킷 포워딩 수행하는 도구
- 네 개의 테이블과 여러 체인을 사용하여 네트워크 트래픽 제어
주요 테이블
1. FILTER : 기본 테이블로, 패킷 필터링을 수행
> INPUT : 로컬 시스템으로 들어오는 패킷
> FORWARD : 다른 인터페이스로 전달되는 패킷
> OUTPUT : 로컬 시스템에서 나가는 패킷
2. NAT : 네트워크 주소 변환을 담당
> PREROUTING : 패킷이 라우팅되기 전에 처리
> POSTROUTING : 패킷이 라우팅된 후에 처리
> OUTPUT : 로컬 시스템에서 생성된 패킷
3. MANGLE : 패킷의 헤더를 수정
> PREROUTING : 라우팅 전에 패킷 헤더 수정
> POSTROUTING : 라우팅 후에 패킷 헤더 수정
> INPUT : 로컬 시스템으로 들어오는 패킷 헤더 수정
> OUTPUT : 로컬 시스템에서 나가는 패킷 헤더 수정
> FORWARD : 다른 인터페이스로 전달되는 패킷 헤더 수정
4. raw :conntrack (연결 추적) 결정을 하기 전에 패킷을 처리
> PREROUTING : 라우팅 전에 패킷 처리
> OUTPUT : 로컬 시스템에 나가는 패킷 처리
IPTables 명령어 형식
iptables [-t 테이블] 명령어 [체인] [매개변수]
> -t : 테이블을 지정 (기본값은 filter)
> 명령어 : 실행할 작업을 지정 (ex : -A는 체인에 규칙 추가)
> 체인 : 적용할 체인 지정 (ex : INPUT, OUTPUT, FORWARD)
> 매개변수 : 규칙을 정의 (ex : -p tcp --dport 80 -j ACCEPT)
주요 명령어
> -A : 체인에 규칙을 추가
> -D : 체인에서 규칙을 삭제
> -P : 체인의 기본 정책을 설정
> -L : 체인의 규칙 목록을 출력
> -F : 체인의 모든 규칙 삭제
사용 예시
1. 기본 정책 설정
- 모든 들어오는 트래픽 차단, 전달되는 트래픽 차단, 나가는 트래픽 허용
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
같은 네트워크인 경우 ACCEPT 없이 통신 가능
2. 특정 IP 차단
- 192.168.1.100 주소로부터 들어오는 모든 트래픽 허용
- GUI 환경과 CLI 환경 동일 작동
iptables -A INPUT -s 192.168.1.100 -j DROP
DROP
3. 특정 포트 차단
- TCP 포트 22 (SSH)로 들어오는 트래픽 허용
- GUI 환경과 CLI 환경 동일 작동
iptables -A INPUT -p tcp --dport 22 -j DROP
DROP
4. 상태 기반 규칙
- 기존 연결 또는 관련 연결의 패킷 허용
iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
5. NAT 설정
- eth0 인터페이스를 통해 나가는 패킷에 대한 소스 NAT를 설정
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
마스커레이드(Masquerade)
- 내부 네트워크의 사설 IP 주소를 외부 네트워크의 공인 IP 주소로 변환하여 외부 네트워크와의 통신을 가능하게 하는 기술
- 특히 동적 IP 주소를 사용하는 경우 유용합니다.
6. 특정 프로토콜 차단
- ICMP 패킷을 차단
iptables -A INPUT -p icmp -j DROP
7. 로깅 설정
- TCP 포트 80으로 들어오는 트래픽을 로깅
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP Access:"
IPTables 규칙 확인 및 저장
- 현재 규칙 확인
> -v : 상세 출력
> -n : 숫자로 출력
iptables -L -v -n
규칙 저장 (배포판에 따라 상이)
Debian/Ubuntu
sh -c "iptables-save > /etc/iptables/rules.v4"
Red Hat/CentOS
sh -c "iptables-save > /etc/sysconfig/iptables"
결론
운영체제로 방화벽을 설정하는 것과 똑같다고 볼 수 있다. 네트워크기초, 정보보호기초 어떤 카테고리에 넣을지 고민하다 정보보호기초 카테고리에 넣었는데 그만큼 속하는 부분이 있다. 정보보안기사를 준비하시는 분이라면 실기에서 출제가 많이되고 필수적으로 알아야하기 때문에 숙지 해두시고 지문을 주거나 명령어를 줬을 때에 따라 작성하는 방법도 알아두셔야한다.
'정보보안 > 리눅스' 카테고리의 다른 글
리눅스(KALI, CENTOS, UBUNTU) 싱글모드 부팅 및 root passwd 변경(분실) (0) | 2024.08.07 |
---|---|
리눅스(KALI,CentOS) Netwrok 설정 (2) | 2024.07.18 |