선릉역 1번 출구
iptables 본문
1. chain
iptables -[A|I|F|D] [체인]
옵션 | 뜻 |
A(append) | 제일 마지막에 룰 추가 |
I(insert) | 체인의 첫 행에 룰 추가 |
D(delete) | 룰 삭제 -d n: 특정 위치 룰 삭제 |
F(flush) | 규칙 초기화 - iptables -F |
chain | 뜻 |
INPUT | 서버로 들어오는 정책 |
FORWARD | 서버에서 포워딩 시 기본 정책 |
OUTPUT | 서버에서 나가는 정책 |
2. 제어 옵션(기본)
제어 옵션 | 뜻 |
-s | 송신지 제어 |
-d | 수신지 제어 |
-p | 프로토콜 제어 |
--sport | 송신지 포트 제어 |
--dport | 수신지 포트 제어 |
ex) iptables -A INPUT -s 192.168.10.0 -p tcp -j DROP
3. 부가 옵션
부가 옵션 | 뜻 |
--icmp-type [메시지 타입] | ICMP의 타입과 메세지 코드를 통해 메시지 식별 ex) --icmp -type echo-reply |
--tcp-flags [검사할 플래그 리스트][설정 플래그 리스트] | 플래그 값 확인 |
-m state --state [탐지할 상태] | 확장 기능 중 tcp 상태 기능을 사용한다는 의미 ex) -m state --state NEW |
NEW: 최초로 들어온 패킷의 상태 | |
ESTABLISHED: 상태 추적 테이블에 연결정보를 가지고 있는 패킷의 상태 | |
RELATED: 상태 추적 테이블에 연관된 연결정보를 가지고 있는 패킷의 상태 | |
INVALID: 어떤 상태에도 해당되지 않는 패킷 상태 |
4. target
옵션 | 뜻 |
-j ACCEPT | 해당 패킷을 허용 |
-j DROP | 해당 패킷 차단 |
-j REJECT | 해당 패킷 차단 & ICMP 에러 메시지 응답 |
-j LOG | 탐지 로그를 남김 /var/log/messages |
예시 참고 사이트
5. 확장 모듈
connlimit 모듈: 동일한 IP 또는 IP 대역의 동시 연결 개수에 대한 제한
-m connlimit --connlimit-above 로 많이 사용함
ex) iptables -A INPUT -p tcp --syn -flags ALL SYN, FIN -m connlimit --connlimit-above 5 -j DROP
TCP 패킷의 모든 플래그를 검사해서 SYN, FIN 플래그만 설정되어 있는 패킷 중 동일 출발지 IP로 동시 연결 개수 5개 초과시 차단
limit 모듈: snort threshold와 유사한 룰로 매칭 제한
-m limit --limit 6/minute
recent 모듈: 목적지 아이피로 들어오는 패킷
-m recent --update --seconds [초] --hitcount [횟수]
connlimit
connlimit은 특정 IP 주소에서 특정 포트로 들어오는 연결 수를 제한하는 옵션입니다. 예를 들어, 특정 IP 주소에서 특정 포트로 들어오는 연결 수를 10개로 제한하려면 다음과 같이 명령을 입력합니다.
iptables -A INPUT -p tcp --dport 80 --connlimit 10 -j DROP
이 명령은 특정 IP 주소에서 특정 포트로 들어오는 연결 수가 10개를 초과하면 연결을 차단합니다.
limit
limit은 특정 시간 동안 특정 IP 주소에서 특정 포트로 들어오는 패킷 수를 제한하는 옵션입니다. 예를 들어, 특정 IP 주소에서 특정 포트로 들어오는 패킷 수를 초당 10개로 제한하려면 다음과 같이 명령을 입력합니다.
iptables -A INPUT -p tcp --dport 80 --limit rate 10/s -j DROP
이 명령은 특정 IP 주소에서 특정 포트로 들어오는 패킷 수가 초당 10개를 초과하면 연결을 차단합니다.
recent
recent는 특정 IP 주소에서 특정 포트로 들어오는 패킷을 기록하는 옵션입니다. 기록된 패킷 수가 특정 값을 초과하면 연결을 차단할 수 있습니다. 예를 들어, 특정 IP 주소에서 특정 포트로 들어오는 패킷 수가 10개를 초과하면 연결을 차단하려면 다음과 같이 명령을 입력합니다.
iptables -A INPUT -p tcp --dport 80 -j recent --set --name bad_guy
iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 60 --hitcount 10 --name bad_guy --rsource -j DROP
-> 목적지 아이피로 들어오는 패킷을 bad_guy라는 테이블에 추가하고 60초 동안 10번이상 들어오면 접근을 차단함
이 명령은 특정 IP 주소에서 특정 포트로 들어오는 패킷을 기록하고, 기록된 패킷 수가 10개를 초과하면 연결을 차단합니다.
'Computer > Network' 카테고리의 다른 글
Docker keycloak 구축하기 (0) | 2023.10.18 |
---|---|
GUI & CLI 설정 반영의 차이 (0) | 2023.07.18 |
snort (0) | 2023.07.17 |
DRDoS 공격 유형 (0) | 2023.07.13 |
DNS 보안 (0) | 2023.06.27 |
Comments