1. 작업 환경 

    - VMware Workstation 17 Player

    - Cent OS 7

    - kali_linux

    - Wireshark

    - 클라이언트 (윈도우) : 10.10.34.20

    - 서버(Cent OS 7) : 10.10.34.218

 

2. 문제 

   1) 모든 출발지 IP에서 목적지 IP가 서버, 목적지 port가 tcp 80인 패킷의 접속을 허용하는 정책 추가 

   2) 출발지 IP가 클라이언트이고, 목적지 IP가 서버, 목적지 port가 tcp 80인 패킷의 접속을 차단하는 정책을

          Append로 추가

   2-1) 2번 정책 적용 후 클라이언트에서  웹서버 차단여부 확인 뒤, 2-2번 정책을 1번 정책 위로 순서 병경 후 다시 접속

            차단 여부 확인 

   3) 클라이언트만 서버의 FTP 접속을 허용하고, 이 외의 다른 host는 접속을 차단하는 정책 추가 

   4) iptables에서 허용 정책을 받은 세션의 상태는 ESTABLISHED 또는RELATED 상태이다. 이러한 세션 상태의 패킷이

         인입될때, iptables ruleset 검사를 받지 않고 허용하는 정책 설정
   5) tcp 세션 최초 연결 시, SYN flag가 설정되지 않은 패킷을 차단 후 ICMP unreachable 패킷을 전송하는 정책추가

         (이러한 유형의 패킷을 왜차단하는지?)  ※ kali hping3 tool 활용

   6) TELNET 서비스를 접속하는 패킷에 대해, “[TELNET_connect]” 접두어를 사용하여 log를 기록하는 정책을 정책 첫번

         째에 추가
   7) icmpecho request 패킷수신시 차단하는 정책 추가 (설정 전/후 비교)
   8) 동일 IP로 3개 이상의 SSH 접속시, “[SSH_Connect_Over]” 접두어를 사용하여 log를 기록하고, 차단 후 ICMP

          Unreachable 패킷송신하는정책추가
   9) 악성코드 유포지로 의심되는 IP 210.95.199.204와 통신을 차단하도록 정책 추가
   9-1). 위 정책 설정 후 차단 여부를 wireshark로 패킷 분석, 분석이 안된다면 왜 안되는지 원인을 파악한 뒤, 어떤 방식으

            로 해당 정책에 의해 차단되는지 확인 가능한 방안 연구
   10) 위 설정한 정책을 /root/iptables_ruleset_yymmdd.rule 이름으로 저장

 

3. 풀이 

   0) service firewalld stop ## firewalld 프로세스 종료
       ㄴ systemctl disable firewalld.service ## cent 재기동 시 firewalld 자동시작 중지
   0) setenforce 0 ## SELinux permissive
       ㄴ /etc/selinux/config 파일에서 SELINUX=enforcing을 SELINUX=disabled로 수정하면 cent 재기동 시

             selinux 자동시작 중지
       ㄴ selinux 기동여부 확인 : sestatus 명령어 입력 후 enforcing 이면 활성화, permissive or disable이면 비활성화
   0) iptables -F ## 모든 정책 삭제 후 시작

 

 

   1)  iptables -A INPUT -d 10.10.34.218 -p tcp --dport 80 –j ACCEPT


   2)  iptables -A INPUT -s 10.10.34.20 -p tcp --dport 80 –j DROP


   
   2-1) 차단 여부 확인 : 미차단



   2-2) 순서 변경 : 
         - iptables –F
         - iptables -A INPUT -s 10.10.34.20 -p tcp --dport 80 –j DROP
         - iptables -A INPUT -d 10.10.34.218 -p tcp --dport 80 -j ACCEPT


   2-3) 차단 여부 확인 : 차단 (응답 ACK가 없음)



   3)  iptables -A INPUT –s 10.10.34.20 -p tcp --dport 21 -j ACCEPT
        iptables -A INPUT -p tcp --dport 21 –j DROP

 

   4)  iptables -A INPUT -m state --state ESTABLISHED,RELATED –j ACCEPT


   5)  iptables -A INPUT -p tcp ! --syn -m state --state NEW -j REJECT —reject-with icmp-port-unreachable

   5-1) 왜 차단하는지? : 비정상적인 접근이기 때문에 
   5-2) kali hping3 tool 활용 : hping3 –A 10.10.34.218 –p 80


   6)  iptables -I INPUT -p tcp --dport 23 -j LOG --log-prefix "TELNET_connect: “

 

   7)  iptables -A INPUT -p icmp --icmp-type echo-request –j DROP

   7-1)  설정 전 


   7-2)  설정 후

 


   8-1)  iptables -A INPUT -p tcp --dport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT

           iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh_limiter --rsource

           iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name

           ssh_limiter --rsource -j LOG --log-prefix "[SSH_Connect_Over]

   8-2)  iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 3 --name ssh_limiter --rsource -j

           REJECT --reject-with icmp-port-unreachable

           * 충돌 방지를 위해 기존 iptables 확인과 설정 후 systemctl restart sshd 조치가 필요했음

1차시
2차시
3차시

   9)  iptables -I OUTPUT -d 210.95.199.204 -j DROP
        210.95.199.204에 핑을 하여도 와이어샤크에서 패킷이 잡히지 않습니다. 
       이유는 OUTPUT은 패킷이 잡기 전에 차단이 되기 때문임. 해당 정책을 확인하기 위해서는 

        iptables -I OUTPUT -d 210.95.199.204 -j LOG --log-prefix “[MALWARE_REJECT]” 정책을 추가하여 로그 기록 

   10) iptables-save >  /root/iptables_ruleset_yymmdd.rule

+ Recent posts