300x250
작업환경
- 가상머신 : Virtual Box 7
- 방화벽(Iptables) : Cent OS 7
- 사무용 PC(Office PC) : Fedora Workstation 35
- DMZ Zone(WebServer) : Fedora Server
>> 각 체인마다 상태추적을 실행하고 동일한 패킷과 관련된 패킷을 허용하라
이외 유효하지 않은 패킷은 차단하고 로그 prefix 값을 "INVALID_DATA"로 설정할 것
상태추적 기능은 기본정책의 가장 높은 우선순위를 가지고 통용적으로 사용됨
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -I INPUT 1 -m conntrack --ctstate INVALID -j LOG --log-prefix="INVALID_DATA"
정책변경 후의 결괏값
- INPUT, OUTPUT, FORWARD 모든 체인에서 상태추적 기능이 실행됨
- 새로운 패킷과 연관성 있는 패킷이 허용되고 이외의 유효하지 않은 패킷은 차단되고 로그로 기록됨
사용된 추가 옵션
- -m : module, 모듈 사용 옵션
- conntrack : 세션 감시 모듈
- --ctstate (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED) 네 가지 상태를 추적함
- NEW : 이전에 없던 패킷의 새로운 첫 연결 요청이 들어오는 패킷
- ESTABLISHED : NEW상태를 거친 이후의 패킷 / 새로운 연결 요청에 관한 그 후의 패킷들이 오고 가는 상태
- RELATED : 새로운 연결 요청이지만, 기존의 연결과 관련된 패킷
- INVALID : 이전 상태 중 어떤 것도 적용되지 않는 패킷
- --ctstate (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED) 네 가지 상태를 추적함
- limit : 시간당 패킷의 흐름(갯수) 제한
- string : 문자열 필터링
>> 통상적으로 사용되는 상태추적 기본정책 코드
가장 높은 우선순위로 사용됨
iptables -A INPUT -m conntrack --ctstate INVALID -j LOG
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate INVALID -j LOG
iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate INVALID -j LOG
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
정책변경 후의 결괏값
- 각 기본정책에 해당하는 패킷의 로그가 남는다.
- 비정상패킷이 차단된다.
- 동일하거나 관련성 있는 패킷이 허용된다.
- 위 세가지는 모든 기본정책에 공통적으로 설정되어 있다.
>> 시간 제어 필터링
원본 코드
iptables -A INPUT -m limit --limit 값(패킷수/시간단위) -j ACCEPT
iptables -A INPUT -m limit --limit 값(패킷수/시간단위) -j DROP
>> 시간 제어 필터링 예제
예제 13 : 초당 5개까지의 icmp 패킷은 허용하고 6번째 패킷부터는 차단하고 로그로 기록하라
iptables -A INPUT -p icmp -m limit --limit 5/s -j DROP
iptables -A INPUT -p icmp -j LOG --log-prefix "TOOMANY"
iptables -A INPUT -p icmp -j DROP
정책변경 후의 결괏값
- 초당(second) 5개의 icmp 패킷이 허용되고 초과하는 패킷은 전부 차단되며
- TOOMANY의 prefix로 로그로 기록된다.
>> 문자 제어 필터링
원본 코드
iptables -A INPUT -m string --string "문자열" --algo 알고리즘명 -j DROP
iptables -A INPUT -m string --hex-string "hex값" --algo 알고리즘명 -j DROP
-알고리즘 : bm, kmp
>> 문자 제어 필터링 예제
예제 14 : 7777번 포트로 동작하는 서버 데몬과 통신을 허용하되 메시지 중 "Iwillkillu" 내용이 포함되어 있으면
이를 로그로 기록하고 차단하라
iptables -A INPUT -p tcp --dport 7777 -m string --string "Iwillkillu" --algo bm -j LOG --log-prefix "CHECKED"
iptables -A INPUT -p tcp --dport 7777 -m string --string "Iwillkillu" --algo bm -j DROP
iptables -A INPUT -p tcp --dport 7777 -j ACCEPT
정책변경 후의 결괏값
- 결괏값은 nc(넷캣)으로 확인할 수 있다.
- 사용할 수 있는 알고리즘에는 bm, kmp 등이 있다.
사용된 추가 옵션
- -m : module, 모듈 사용 옵션
- --algo : algorithm, 사용할 알고리즘을 선정합니다.
- string : 제어할 문자열을 지정하거나 hex 문자값을 제어할 수도 있습니다.
방화벽 활용을 위한 가상 인프라 구축 Iptables 활용
300x250
'정보보안 > 방화벽' 카테고리의 다른 글
iptables 문법 사용법과 예제 총 정리 (1) | 2023.02.03 |
---|---|
Iptables 로그 prefix 설정법 (0) | 2023.02.01 |
Iptables 로그 옵션 설정과 다양한 예제 (0) | 2023.01.31 |
Iptables 방화벽의 SSH 서비스에 대한 다양한 설정법 (0) | 2023.01.30 |
Iptables 방화벽 SSH 사용 설정 다양한 예시 - 3 (0) | 2023.01.17 |
댓글