202401to07
  • 2024.06.13.보안 day48
    2024년 06월 13일 11시 24분 19초에 업로드 된 글입니다.
    작성자: 202401to07

    어제한것 firewall 비활성화하고 iptable활성화한것 / 인터넷도 안디ㅗ괴 

     

    터널포워당= 랜라우팅

     

    192.168.10.10)

     

    [ 커널포워딩 설정 ]

    service iptables stop
    sysctl -a |grep ip_forward
    vi /etc/sysctl.conf

    net.ipv4.ip_forward = 1

    sysctl -p       (바뀐것 확인)

     

    iptable은 포워드를 검사할수있다 

     

    [ 기본정책 ]  
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]

     

    *ACCEPT :  허가 
    *REJECT  : 반송
    *DROP   :  폐기 
    LOG      :  로그기록
    RETURN :  룰 연계

     

    [ iptables 룰 ]
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

    내부로 접근하는  tcp 중

                             새로운 연결을 요청하는 (3way)

                                                                    도착포트 22/tcp 를  허가

     

    [룰 정책] first
    -A (--append) : 규칙 추가 ****
    -P (--policy) : 기본정책을 변경한다.(초기설정)*****
    -F (--flush) : chain으로부터 규칙을 모두 삭제한다  (초기화). ******
    -D (--delete) : 규칙을 삭제한다.
    -C (--check) : 패킷을 테스트한다.
    -R (--replace) : 새로운 규칙으로 교체한다.
    -I (--insert) : 새로운 규칙을 삽입한다.
    -L (--list) :  규칙을 출력한다.
    -Z (--zero) : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.
    -N (--new) : 새로운 chain을 만든다.
    -X (--delete-chain) : chain을 삭제한다.

     

    *패킷을 볼때 가장 주요한것 : 출발지 목적지 프로토콜*

     

    [ 장치및 상태옵션 ]
    -s (--source )  : 출발지  IP주소/네트워크***
    -d (--destination)  : 목적지  IP주소/네트워크***
    -p (--protocol) :  프로토콜 ***


    -i  (--in-interface) :  입력장치 (내부장치)
    -o (--out-interface)  :   출력장치 (외부장치)


    -m (--match) 특정 모듈 ****
                         --state : 연결상태
                               ESTABLISHED :  연결이 되어있는 패킷 ****
                                NEW      :  새로운 연결을 요청하는 패킷
                                RELATED      :   기존연결이외 다른 새로운 연결요청
                                (ex:  FTP데이타 전송포트(20/tcp)를 다른 포트로 사용하고자할때 )
                                INVALID      :    어디에도 속하지 않은 패킷
    -m tcp            --dport   : 도착포트 
                          --sport  : 출발포트 
    -j  (--jump) 규칙 적용 ****

                                 *ACCEPT : 허가 
                                 *REJECT  : 반송
                                 *DROP   :  폐기 
                                 LOG      :  로그기록
                                 RETURN :  룰 연계

     

    --reject-with icmp-host-prohibited   
    [거부하고 ICMP를 금지시킨다]
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited

     

    IPTABLES 적용순서    
    *******먼저 적용된것이 무조건 우선된다 ****** 

     

    일단 백업하고 실습하기 

    [백업]
    iptables-save       [ 설정된 내용이 출력 ]
    mkdir /backup
    iptables-save > /backup/ip.bak

     

    [ 포워드 지우는법  ] 

    iptables -L --line  (확인)

    iptables -D FORWARD 1   (지우기)

    iptables -L --line  (확인0

    ptables-save  (저장)

    service iptables restart  (데몬실행)

    iptables -L --line   (안지워짐!!!!!! )

     

     지우는 법은 영구저장 해야됨


       77  iptables -D FORWARD 1  (삭제)
       78  service iptables save  (영구저장)
       79  service iptables restart (데몬실행)
       80  iptables -L --line  (확인)

     

    iptables -F (다 삭제 )    -> 다 삭제해도 포워딩이 되고 있다 

    왜 ? default가 허용되고 있어서!

     

     

    [ 연결유지 ]

    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

    service iptables save
    service iptables restart

     


       92  iptables -P FORWARD DROP
       93  service iptables save
       94  service iptables restart

     

    [ ssh 접속을 위한 옵션 ]
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT    (spot지정안하면 기본값은 all)
    service iptables save
    service iptables restart

     

     

     -m state --state  NEW

    : 새로운 연결만 허용하고 이미 존재하는 연결에 대해서는 별도의 규칙을 적용하지 않는 경우 사용된다 

    : 새로운 연결을 검사하기때문에 보안적으로 좋다 


      100  iptables -D INPUT 2
      103  iptables -A INPUT -m tcp -p tcp -m state --state NEW --dport 22 -j ACCEPT
      104  service iptables save
      105  service iptables restart
      106  iptables -L --line


    실습문제 1)  10.10.10.10 에서  20.20.20.20 으로 
            혹은 20.20.20.20에서 10.10.10.10으로 
            ICMP가 갈수 있도록 정책 설정

    iptables -A INPUT -p icmp -j ACCEPT
    iptables -A FORWARD -p icmp -s 10.10.10.10 -d 20.20.20.20 -j ACCEPT
    iptables -A FORWARD -p icmp -s 20.20.20.20 -d 10.10.10.10 -j ACCEPT

     

    iptables -I FORWARD 1 -p icmp -j DROP  얘를 1에 넣으면 우선순위 바껴서 DROP이 먼저 적용됨

    iptables -A INPUT -i lo -j ACCEPT

     

     

    # iptables -A FORWARD -m icmp --icmp-type 8 -p icmp -s 10.10.10.10 -j ACCEPT      == request만 허용

     

     

     

     

     

     

    =====================================

    1) 도착지 X 출발지 패킷만 허용

    iptables -A FORWARD -s 10.10.10.10 -p icmp -j ACCEPT
    iptables -A FORWARD -s 20.20.20.20 -p icmp -j ACCEPT

    icmp 는 request:8  
    reply:0

    --icmp-type 8
    --icmp-type 0
    칼리에서 서버 ping X 
    서버에서 칼리로 ping O

    2) 
    iptables -A FORWARD -s 10.10.10.10 -p icmp -m icmp --icmp-type 8 -j ACCEPT
    iptables -A FORWARD -s 20.20.20.20 -p icmp  -j ACCEPT
    (iptables -A FORWARD -s 20.20.20.20 -p icmp --icmp-type 0  -j ACCEPT)
    service iptables save
    service iptables restart



    3)  네트워크 대역 허용
    iptables -A FORWARD -s 10.10.10.0/24 -p icmp -j ACCEPT
    iptables -A FORWARD -s 20.20.20.0/24 -p icmp -j ACCEPT

     

     

    4) 인터페이스 허용 (모든 포트 개방)

    iptables -A FORWARD -i ens32 -j ACCEPT
    iptables -A FORWARD -i ens34 -j ACCEPT             

    ==> 20) 됨 10) 됨

    iptables -D FORWARD 2
    iptables -D FORWARD 1
    iptables -A FORWARD -o ens36 -j ACCEPT
    iptables -A FORWARD -o ens37 -j ACCEPT

    iptables -D FORWARD 2
    iptables -D FORWARD 1
    iptables -A FORWARD -i ens32 -j ACCEPT
    iptables -A FORWARD -o ens32 -j ACCEPT

     


    다음조건을 만족하는 IPTABLE를 설정하세요
    기본정책   INPUT= DROP  OUTPUT,FORWARD= ACCEPT
    내부로 icmp 허용
    ssh 접속 가능
    칼리와 서버는  IPTABLE로  PING 금지 (기본값)
    IPTABLES 는 칼리 서버 PING 가능   (기본값)
    서버는 칼리로 PING 가능
    칼리는 서버로 PING 불가

     

    iptables -P INPUT DROP

    iptables -P FORWARD DROP

    iptables -P OUTPUT ACCEPT

    iptables -A -p icmp -i lo -j ACCEPT

    iptables

     


    실습문제

     

     iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

    [root@fw backup]# iptables -t nat -A PREROUTING -d 192.168.10.200 -p tcp --dport 18121 -j DNAT --to 10.10.10.10:22
    [root@fw backup]# iptables -A FORWARD -p udp --dport 53 -i ens32 -j ACCEPT
    [root@fw backup]# iptables -A FORWARD -p udp --sport 53 -o ens32 -j ACCEPT
    [root@fw backup]# iptables -A FORWARD -p tcp --dport 80 -i ens32 -j ACCEPT
    [root@fw backup]# iptables -A FORWARD -p tcp --sport 80 -o ens32 -j ACCEPT
    [root@fw backup]# iptables -A FORWARD -p tcp --dport 443 -i ens32 -j ACCEPT
    [root@fw backup]# iptables -A FORWARD -p tcp --sport 443 -o ens32 -j ACCEPT

     

     

    iptables -t nat -A PREROUTING -d 192.168.10.100 -p tcp --dport 80 -j DNAT --to 10.10.10.10:80
    iptables -t nat -A PREROUTING -d 192.168.10.200 -p tcp --dport 80 -j DNAT --to 20.20.20.20:80

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

    2024.06.14.보안 day49  (0) 2024.06.14
    커널 포워딩 , IPTABLES , FOWARD  (0) 2024.06.14
    2024.06.12.보안 day47  (0) 2024.06.12
    2024.06.11.보안 day46  (0) 2024.06.11
    HTTPS HTTP  (1) 2024.06.10
    댓글