리눅스 서버 보안 관리 실무라는 책을 보면 관련 내용이 있습니다.
넥스트웨이라는 업체 방화벽 설정을 보니 책에 나오는 내용과 동일하게 사용을 하더군요
검증은 된셈이죠.


편하게 설정할수 있어서.. 괜찮은것 같습니다.


[root@localhost bin]# cat  My_Firewall
#!/bin/sh

IPTABLES="/sbin/iptables"
IP_ADDR=`grep "IPADDR=" /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'=' '{ print $2 }'`

. /etc/init.d/functions

case "$1" in
start|restart)
            echo "$1ing My_Firewall :"
            ;;
        stop)
            echo "$1ping My_Firewall :"
            $IPTABLES -F
            $IPTABLES -X
            $IPTABLES -P INPUT ACCEPT
            $IPTABLES -P FORWARD ACCEPT
            $IPTABLES -P OUTPUT ACCEPT
            exit
            ;;
            *)
            echo $"Usage: $0 {start|restart|stop}"
            exit
            ;;
esac

### 룰셋 초기화
$IPTABLES -F

### 기본정책 설정
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

### Loopback 트래픽 허용
$IPTABLES -A INPUT -i lo -j ACCEPT

### 자기자신을 소스로 하는 트래픽 차단
$IPTABLES -A INPUT -i eth0 -s $IP_ADDR -j DROP
$IPTABLES -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

### 상태추적 설정
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -p all -m state --state INVALID -j DROP

### 비정상적 tcp-flags 차단
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL PSH,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,ACK,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN,RST,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP


### 서비스포트 추가/제거를 위해서는, 반드시 아래의 설정만 수정하시기 바랍니다!!!
### $IPTABLES 구문앞의 주석 제거후, My_Firewall 를 재가동하시면 해당포트는 활성화 됩니다.

 
##  관리자 PC가 고정이라면 마스터 IP 로 등록하자.
$IPTABLES -A INPUT  -s 211.47.132.123 -m state --state NEW -j ACCEPT


### ftp servive  20은 데이타 포트이므로 반드시 오픈  21은 FTP 포트를 바꾸어 사용가능
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT

 

# 또는 FTP의  IP 대역을 지정도 가능하다.

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 21  -s 211.xx.xxx.0/255.255.255.0  -j ACCEPT

 


### ssh servive  22외에 다른 포트로 변경해서 사용하는게좋다.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT

 

### smtp servive  멜 서버 돌리지 않으면 막자
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 25 -m state --state NEW -j ACCEPT

 

### dns servive  DNS 돌리지 않으면 막자
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#$IPTABLES -A INPUT -p udp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT

 

### http servive  기본적으로 웹은 돌릴텐데... 열어놓자.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT

 

### pop3 servive  메일 서버 안쓰면 막죠...
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 110 -m state --state NEW -j ACCEPT

 

### identd servive
$IPTABLES -A INPUT -p tcp --syn --dport 113 -j REJECT --reject-with tcp-reset

 

### imap servive
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 143 -m state --state NEW -j ACCEPT

 

### snmp servive
#$IPTABLES -A INPUT -p udp --sport 1024: --dport 161 -m state --state NEW -j ACCEPT

 

### https servive  보안서버 사용한다면 오픈해야 된다.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 443 -m state --state NEW -j ACCEPT

 

### rsync servive  RSYNC 사용한다면 오픈
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 873 -m state --state NEW -j ACCEPT

 

### mysql servive    Mysql 은 돌릴테니 오픈
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT

 

### ping servive  핑을 열어 접근 테스트가 가능하도록...
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

 
./My_Firewall start  하면 시작된다..
죽일때는 ./My_Firewall stop 하면 된다.

주의해야 될것은 기본 정책을 DROP 으로 했기 때문에
죽일때  iptables -F  로 죽이면 절대 안된다.....


서버 부팅시 자동 적용하게 할려면..
#serivce iptables save 
를 해준다.


이전까지
iptables-save 와 iptables-restore 를 사용해서 관리했는데
그거도 괜찮은듯 하다...


기본 정책을 허용으로 바꾸고 싶을땐..
#iptables -P INPUT ACCEPT
#iptables -P FORWARD ACCEPT
#iptables -P OUTPUT ACCEPT

를 실행한다.
2010/03/12 16:29 2010/03/12 16:29

Trackback Address :: https://youngsam.net/trackback/1038