질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

iptables 설정 해석 부탁드립니다 ^^

작성자 정보

  • 김명석 작성
  • 작성일

컨텐츠 정보

본문

안녕하세요. iptables를 책을 보고 작성했는데 해석부탁드립니다.

그리고 ssh접속이 내부ip대역폭에서는 접속 되는데 외부에서는 안됩니다.

1. 외부와 내부에서 ssh 접속 하게 하는 방법 부탁드립니다.

2. 현재 설정에서  log들은 어디에 쌓이는건가요.

3. forward설정의 가장 상단에 -P FORWARD ACCEPT 하면 포트 막히는게 전혀 없어 지는 건가요

4. 푸르나와 같은 싸이트를 막는곳은 어디에서 적용되는건가요. FORWARD? OUTPUT?

#!/bin/sh
IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
INT_NET=192.168.0.0/16

## DORP SETTING ###
echo "[+] Flushing existing iptables rules... "
$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

###load connection-tracking modules
$MODPROBE ip_conntrack
$MODPROBE iptable_nat
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_nat_ftp

### INPUT chain start ###
echo "[+] Setting up INPUT chain..."

### state INVALID ###
$IPTABLES -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### SPOOFED rule
$IPTABLES -A INPUT -i eth1 -s ! $INT_NET -j LOG --log-prefix "SPOOFED PKT"
$IPTABLES -A INPUT -i eth1 -s ! $INT_NET -j DROP

### ACCEPT rule

$IPTABLES -A INPUT -i eth1 -p tcp -s $INT_NET --dport 22 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

### standard INPUT LOG rule
$IPTABLES -A INPUT -i ! lo -j LOG --log-prefix "DROP" --log-ip-options --log-tcp-options

### OUTPUT chain start ###
echo "[+] Setting up OUTPUT chain..."

### sate INVALID rule
$IPTABLES -A OUTPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### OUTPUT port ACCEPT rule
$IPTABLES -A OUTPUT -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 25 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 43 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 4321 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

### standard OUTPUT LOG rule
$IPTABLES -A OUTPUT -o ! lo -j LOG --log-prefix "DROP" --log-ip-options --log-tcp-options

### FORWARD chain ###
echo "[+] Setting FORWARD chain..."

### state INVALID rule
$IPTABLES -A FORWARD -m state --state INVALID -j LOG --log-prefix "DROP INVALID" --log-ip-options --log-tcp-options
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

### ANTI SPOOFED rule
$IPTABLES -A FORWARD -i eth1 -s ! $INT_NET -j LOG --log-prefix "SPOOFED PKT"
$IPTABLES -A FORWARD -i eth1 -s ! $INT_NET -j DROP

### ACCEPT rule
$IPTABLES -A FORWARD -p tcp -i eth1 -s $INT_NET --dport 21 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i eth1 -s $INT_NET --dport 22 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i eth1 -s $INT_NET --dport 25 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i eth1 -s $INT_NET --dport 43 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 443 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i eth1 -s $INT_NET --dport 4321 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p udp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT

### standard LOG rule
$IPTABLES -A FORWARD -i ! lo -j LOG --log-prefix "DROP" --log-ip-options --log-tcp-options

### NAT rule ###
echo "[+] Setting up NAT rules..."
$IPTABLES -t nat -A POSTROUTING -s $INT_NET -o eth0 -j MASQUERADE

### FORWARDING ####
echo "[+] Enabling IP forwarding..."
echo 1 > /proc/sys/net/ipv4/ip_forward

 

관련자료

댓글 1

장규승님의 댓글

  • 장규승
  • 작성일
이렇게나 작성하신것두 대단하시네요 ㅎㅎ 저는 못하는데 ㅠ

맨 바닥 부턱 iptables 작성하기 힘들죠 ㅎㅎ;;
저는 설치시 기본적으로 작성된 내용을 활용하는 편입니다..

우째든 ...

1.외부와 내부에서 ssh 접속 하게 하는 방법 부탁드립니다.

=> IPTABLES -A INPUT -i eth1 -s ! $INT_NET -j DROP
  이녀석 이상합니다.. ip대역이 내부인데.. 요청지가 내부가 아니면 드랍해라..
  이부분에서 외부 ssh접속이 걸릴거 같습니다..


2. 현재 설정에서  log들은 어디에 쌓이는건가요.
=> 확실하진 않지만.. /var/log/messages 아닐까요?? man page 보면 나옵니다.

3. forward설정의 가장 상단에 -P FORWARD ACCEPT 하면 포트 막히는게 전혀 없어 지는 건가요
=> -P 옵션은 디폴트 속성입니다.. 즉 위와같이 설정하면 FORWARD는 기본적으로 허락하는것입니다.

4. 푸르나와 같은 싸이트를 막는곳은 어디에서 적용되는건가요. FORWARD? OUTPUT?
=> 그냥 포트 막으시면 됩니다!!

공지사항


뉴스광장


  • 현재 회원수 :  60,287 명
  • 현재 강좌수 :  36,942 개
  • 현재 접속자 :  352 명