- 2024.06.14.보안 day492024년 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 2024restart
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 DROPSYN 플래그를 가진 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 다음글이 없습니다.이전글이 없습니다.댓글