보안

2024.06.13.보안 day48

202401to07 2024. 6. 13. 11:24

어제한것 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