202401to07
  • 2024.06.14.보안 day49
    2024년 06월 14일 10시 24분 20초에 업로드 된 글입니다.
    작성자: 202401to07

     


     

     

     vi /etc/sysconfig/iptables

     

    # Generated by iptables-save v1.4.21 on Thu Jun 13 16:41:18 2024
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]

                                                                                                 DNAT : 네트워크 주소 변환 / pre 라우팅
    -A PREROUTING -d 192.168.10.100/32 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:80                    : HTTP
    -A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.10.10.10:443     : HTTPS
    -A PREROUTING -d 192.168.10.200/32 -p udp -m udp --dport 53  -j DNAT --to-destination 10.10.10.10:53      : DNS
    -A POSTROUTING -o ens34 -j MASQUERADE                    :  SNAT : 인터넷 연결할때 / 사설-> 공인 /post라우팅
    COMMIT
    # Completed on Thu Jun 13 16:41:18 2024
    # Generated by iptables-save v1.4.21 on Thu Jun 13 16:41:18 2024
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [24:2576]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

    ㄴ필수 코드 

         이미 시작된 연결(ESTABLISHED) 및 관련된 연결(RELATED)의 트래픽을 수신하는 것을 허용하는 데 사용됨

         이는 서버가 특정 연결에 대한 응답을 수신하거나 이미 연결된 클라이언트에 대한 응답을 보내는 데 필요
    -A INPUT -i lo -j ACCEPT

    -A INPUT -p icmp -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A FORWARD -i ens34 -j ACCEPT 
    -A FORWARD -o ens34 -p udp -m udp --sport 53 -j ACCEPT
    -A FORWARD -o ens34 -p tcp -m tcp --sport 80 -j ACCEPT
    -A FORWARD -o ens34 -p tcp -m tcp --sport 443 -j ACCEPT

    -A FORWARD -i ens32 -j ACCEPT
    -A FORWARD -o ens32 -p udp -m udp --sport 53 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --sport 80 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --sport 443 -j ACCEPT

    -A FORWARD -o ens32 -p tcp -m tcp --dport 443 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --dport 80 -j ACCEPT
    -A FORWARD -o ens32 -p udp -m udp --dport 53 -j ACCEPT
    COMMIT
    # Completed on Thu Jun 13 16:41:18 2024

      

    restart

    start

    해야 적용됨

    [ save / restart 순서 주의 ****************************** ]

     

    *INPUT 정책  :    도착지가 IPTABLE인 패킷
    *OUTPUT정책 :   출발지가 IPTABLE인 패킷
    *FORWARD정책: 경유지(via)가 IPTABLE인 패킷

    INPUT : 나한테 들어오는 애들을 처리한다 

                    ex)  -A INPUT -p icmp -j ACCEPT    : 나한테 들어오는 icmp포트 허용한다 

    FOPWARD :  나를 거치고 다른곳 가는 애들을 처리한다 

                    ex) -A FORWARD -i ens34 -j ACCEPT  : ens33에서 들어오는 애를 허용한다(다른 ip로 감)

     

    -o 옵션은 Post-routing에 사용되며

    -i 옵션은 Pre-routing에 사용된다 

     


    [root@www named]# vi sevas10.zone
    $TTL 1D
    @       IN SOA  @                       root.sevas10.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            IN      NS      @
            IN      A       10.10.10.10

    ns      IN      A       192.168.10.200
    www     IN      A       192.168.10.100
    fw      IN      A       192.168.10.10


    dos공격을 위해 정책 수정

     

    # Generated by iptables-save v1.4.21 on Fri Jun 14 11:50:52 2024
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    -A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.10:80
    -A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.10.10.10:443
    -A PREROUTING -d 192.168.10.100/32 -p tcp -m multiport --dports 20010,30010:30020 -j DNAT --to-destination 10.10.10.10:22
    -A PREROUTING -d 192.168.10.200/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.10.10.10:53
    -A POSTROUTING -o ens33 -j MASQUERADE
    COMMIT
    # Completed on Fri Jun 14 11:50:52 2024
    # Generated by iptables-save v1.4.21 on Fri Jun 14 11:50:52 2024
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [17:1976]
    -A INPUT -p icmp -m limit --limit 40/m -j ACCEPT
    -A INPUT -p icmp -j DROP

    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

    -A FORWARD -i ens34 -j ACCEPT
    -A FORWARD -o ens34 -p udp -m udp --sport  53 -j ACCEPT
    -A FORWARD -o ens34 -p tcp -m tcp --sport 80 -j ACCEPT
    -A FORWARD -o ens34 -p tcp -m tcp --sport 443 -j ACCEPT

    -A FORWARD -i ens32 -j ACCEPT
    -A FORWARD -o ens32 -p udp -m udp --sport 53 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --sport 80 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --sport 443 -j ACCEPT

    -A FORWARD -o ens32 -p tcp -m tcp --dport 443 -j ACCEPT
    -A FORWARD -o ens32 -p tcp -m tcp --dport 80 -j ACCEPT
    -A FORWARD -o ens32 -p udp -m udp --dport 53 -j ACCEPT
    -A FORWARD -o ens32 -p udp -m udp --dport 22 -j ACCEPT
    -A FORWARD -s 10.10.10.10/32 -p icmp -j ACCEPT

     

    결과 ==> ping -i 0.1 192.168.10.100

    속도가 느려진것을 확인할수있다

     

    최초10개까지 검사하고 나서 1분에 10개의 패킷만 들어오도록 설정

    -A INPUT -p icmp -m limit --limit 10/m --limit-burst 10 -j ACCEPT

     


    [DOS공격 차단정책]   ping 속도제한  ( ping -i 0.1 ) 
    -m limit : 적용검사의 속도 제한  (기본값 5)
    --limit:   /s /m /h /d 등 단위 지정    ex) 3/m    => 분당 세번    
    --limit-burst => 기본값은 5 , 적용검사1회시 한번에 처리하는 최대패킷수


    1)   최초 5개의 패킷을 보고 (-m limit)
          1분당  40개의 패킷이 들어올수 있도록 설정 
    -A INPUT -p icmp -m limit --limit 40/m -j ACCEPT
    -A INPUT -p icmp -j DROP
    ***** 실습을 한뒤에  1분당 10개의 패킷이 들어올수 있도록 설정하세요 ****
    -A INPUT -p icmp -m limit --limit 10/m -j ACCEPT
    -A INPUT -p icmp -j DROP
    =======================================================
    2) 최초 10개까지 검사하고 나서  1분당 10개의 패킷만 들어올수 있도록 설정
    -A INPUT -p icmp -m limit --limit 10/m --limit-burst 10 -j ACCEPT
    -A INPUT -p icmp -j DROP
    3)일반 ping 은  통과    ping 0.1 은 지연을 거는 정책 설정 

    -A INPUT -p icmp -m limit --limit 60/m --limit-burst 20 -j ACCEPT
    -A INPUT -p icmp -j DROP

    -m connlimit (DROP) [연결세션제한  =  세션수 ]
    --connlimit-above [숫자] 
    -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP 
    =============================================================
    [로그남기기] 
    -m recent  [ 제한시간 & 허용카운트 ] 특정 시간동안 특정 갯수 이상의 패킷을 받으면 적용
    --update --seconds 5 --hitcount 10   5초동안 10번 들어오는 패킷들은 차단시킨다. (5초뒤에 다시 접속가능) 

    -A FORWARD -d 10.10.10.10 -p tcp --dport 80 -m recent --set --name flood_list
    -A FORWARD -d 10.10.10.10 -p tcp --dport 80 -m recent --update --seconds 20 --hitcount 10 --name flood_list -j LOG --log-prefix "[http flood attack]"
    -A FORWARD -d 10.10.10.10  -p tcp --dport 80 -m recent --update --seconds 20 --hitcount 10 --name flood_list -j DROP 


    실습 1 ) 


    -A INPUT -p icmp -j ACCEPT
    -A FORWARD -d 10.10.10.10/32 -p tcp -m tcp --dport 80 -m recent --set --name flood_list --mask 255.255.255.255 --rsource
    -A FORWARD -d 10.10.10.10/32 -p tcp -m tcp --dport 80 -m recent --update --seconds 5 --hitcount 20 --name flood_list --mask 255.255.255.255 --rsource -j LOG --log-prefix "[http flood attack]"
    -A FORWARD -d 10.10.10.10/32 -p tcp -m tcp --dport 80 -m recent --update --seconds 5 --hitcount 20 --name flood_list --mask 255.255.255.255 --rsource -j DROP

     

    ==> 192.168.10.100을 새로고침 5번 이상하면 멈춘다 

    [ 관련 로그 보는 법 ]

    => 

     vi /etc/rsyslog.conf  

    kern.*                                                 /var/log/iptableslog

    추가하면

     cat /var/log/messages

    이렇게 플로드 로그 확인 가능


    실습 2 ) 

    칼리 20.20.20.20)

    -m tcp --tcp-flags ALL SYN    : 모든 tcp flags 중에 syn 패킷만 검사하는 코드 를 사용하여

    nmap -sT 192.168.10.100 했을때 port 정보가 나왔다 안나왔다 하게 만들기 

     

    답: 이 규칙들은 SYN 플래그를 가진 패킷을 제한적으로 허용하고, 초과하는 경우 드랍한다

    -A INPUT -p tcp -m tcp --tcp-flags ALL SYN -m limit --limit 10/sec -j ACCEPT

                                                         ALL중에서 SYN을

                                                        1초에 최대 5개 SYN패킷만 허용 / 초과하면 다음규칙으로 넘어감
    -A INPUT -p tcp -m tcp --tcp-flags ALL SYN -j DROP

                                                        SYN 플래그를 가진 TCP 패킷을 드랍

     

    -A INPUT -p tcp -m tcp --tcp-flags SYN SYN -m limit --limit 10/sec --limit-burst 5 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --tcp-flags ALL SYN,ACK -m limit --limit 10/sec --limit-burst 5 -j ACCEPT
    -A FORWARD -p tcp -m tcp --tcp-flags SYN SYN -m limit --limit 10/sec --limit-burst 5 -j ACCEPT
    -A INPUT -p tcp -m tcp --tcp-flags ALL SYN -j DROP
    -A OUTPUT -p tcp -m tcp --tcp-flags ALL SYN,ACK -j DROP

     

    자 이제까지 IPS로 지연 제한을 연습해봤다 

     

    iptable 기능 
    1. 패킷필터링  ( netfilter )
    2. 로그기능     ( logging )
    3. NAT            (  SNAT/DNAT=포트포워딩 )
    4) 확장기능     (다양한 모듈 = mangle ) 

    탐지는 할수는 있으나 거의 x

     

    방화벽 : 3,4계층밖에 못막아 그래서 IPS로 자세하게 막는것이다 . / 7계층이나 dos공격들을 전문적으로 차단하기는 어렵

    anti ddos 장비 

    white list : 허가 목록

    black list : .금지 목록 

     

     

     

     

     

     

     

     

     

     

     

    '보안' 카테고리의 다른 글

    2024.06.17.보안 day50  (0) 2024.06.17
    6/17 시험준비  (0) 2024.06.14
    커널 포워딩 , IPTABLES , FOWARD  (0) 2024.06.14
    2024.06.13.보안 day48  (0) 2024.06.13
    2024.06.12.보안 day47  (0) 2024.06.12
    댓글