Always-Try(정보보안 및 일상)

[정보보안기사][실기] iptables 침입차단 시스템 본문

정보보안 자격증 + ISMS-P

[정보보안기사][실기] iptables 침입차단 시스템

Always-Try 2021. 10. 1. 02:28

iptables 사용 문법

 

더보기

1. 형식

  • iptabels [테이블] -[A | -I | -D] [체인] [룰] [타겟] 
    • [테이블] 미설정 시 디폴트로 filter 테이블 적용 (대부분 여기 해당)
    • '-[A | I | D] [체인]' 
      • -A: append 모드, 해당 체인의 제일 마지막 줄에 추가 (대부분 여기에 해당)
      • -I: insert 모드, 해당 체인의 첫 행에 룰을 추가
      • -D: 특정 행의 체인을 삭제하거나 체인 전체를 삭제할 때 사용
        • 체인 종류: INPUT, OUTPUT, FORWARD

2. 테이블

  • 미설정 시 디폴트로 filter 테이블 적용 (대부분 여기 해당)

3. -[A | -I | -D] [체인]

  • -A: append 모드, 해당 체인의 제일 마지막 줄에 추가 (대부분 여기에 해당)
  • -I: insert 모드, 해당 체인의 첫 행에 룰을 추가
  • -D: 특정 행의 체인을 삭제하거나 체인 전체를 삭제할 때 사용
    • 체인 종류: INPUT, OUTPUT, FORWARD

4. [룰]

  • -s: 출발지 IP 
  • -d: 목적지 IP
  • --sport: 출발지 포트 ( ':' 위치에 따라 이상, 이하로 표현 가능)
    • 23 or 1024: or :65535 or 1:1023
  • --dport: 목적지 포트 
  • --icmp-type [메시지타입]
    • echo-request
  • -p tcp [패킷 유형]
    • --tcp-flags [검사할 플래그 리스트] [설정되어야 할 플래그 리스트]
      • SYN,FIN SYN,FIN (-> SYN,FIN를 검사해서 SYN,FIN 플래그가 있으면 탐지)
    • -m state --state [탐지할 상태]
      • NEW, ESTABLISHED, RELATED, INVALID

5. [타켓]

  • -j [정책]
    • -j ACCEPT
    • -j DROP (차단 후 아무런 응답 메시지 보내지 않음)
    • -j REJECT (차단 후 ICMP 에러 메시지 전송)
    • -j LOG (탐지 로그를 /var/log/messages 에 남긴다)

 

 

기타 옵션

 

더보기

1. iptables -L [체인] -n

  • -L (리스트 확인)
  • -n 숫자 형식으로 출
      •  

2. iptables -F [체인]

  • 해당 체인에 등록된 모든 룰 정보 삭제

3. iptables -P [체인] [ ACCEPT | DROP | REJECT ]

  • default policy를 지정한다. 즉, 아무런 룰에 걸리지 않을 경우 적용되는 정책을 지정한다.
  • DROP/REJECT로 설정할 경우, Negative 정책(대부분 여기에 해당)
  • Positive로 설정할 경우, ACCEPT 정책(대부분 여기에 해당)

4. -m connlimit

  • 동일한 IP 또는 IP 대역의 동시 연결 개수에 대한 제한을 할 수 있는 모듈로 디도스 공격에 효과적으로 대응
    • --connlimit-above n: n을 초과하는 동시 연결을 제한
    • --connlimit-mask mask: subnet 마스크에 대한 동시 연결을 제한

5. -m limit 

  • 룰에 매치되는 비율을 제한할 수 있는 기능으로 불필요한 로그를 남기지 않도록 할 때 유용
    • --limit [n/second | n/minutes | n/hour | n/day ]

6. -m recent 

  • 동적으로 Source IP 목록을 생성하여 이를 기반으로 패킷을 제어하는 기능 제공
    • --seconds
    • --hitcount
  •  

 

 

실습1) 상태추적 테이블에는 NEW이지만, SYN 플래그를 설정하지 않은 비정상패킷을 DROP Rule

 

더보기
  • iptable -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

 

 

실습2) FTP Active Mode 상태 추적 허용 Rule

 

더보기
  • iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • iptables -A OUTPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

 

 

실습3) 웹서버에 대한 TCP SYN Flooding 공격을 대응하기 위한 Rule 설정 (동일 IP에서 오는 공격 제한)

 

더보기
  • iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP

 

 

실습4) 웹서버에 대한 TCP SYN Flooding 공격을 대응하기 위한 Rule 설정 (같은 /24 대역에서 오는 공격 제한)

 

더보기
  • iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 --connlimit-mask 24 -j DROP

 

 

 

실습5) 비정상적인 TCP 플래그 조합(SYN_FIN 플래그 조합) 차단 Rule 

 

더보기
  • iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

 

 

실습6) 비정상적인 TCP 플래그 조합(FIN 플래그만 설정) 차단 Rule

더보기
  • iptables -A INPUT -p tcp --tcp-flags ALL FIN -j DROP

 

 

 

실습7) 비정상적인 TCP 플래그 조합(플래그가 설정되지 않음) 차단 Rule

더보기
  • iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

 

 

 

실습8) 비정상적인 TCP 플래그 조합(모든 플래그가 설정) 차단 Rule

 

더보기
    • iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

 

 

실습9) SSH Brute Force / Dictionary Attack 차단 Rule 설정

 

더보기
  • iptables -A INPUT -m state --state NEW -p tcp --dport 22 -m recent --name SSH_DROP --update --seconds 60 --hitcount 5 -j DROP

 

 

 

 

 

 

Comments