리눅스 서버 보안 관리 실무라는 책을 보면 관련 내용이 있습니다.
넥스트웨이라는 업체 방화벽 설정을 보니 책에 나오는 내용과 동일하게 사용을 하더군요
검증은 된셈이죠.
편하게 설정할수 있어서.. 괜찮은것 같습니다.
[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
를 실행한다.
영삼넷
Categories
Recent Posts
Recent Comments
Statistics
- Total Visitors:
- 387047
- Today:
- 6841237
- Yesterday:
- 97511516
IT강국 김영삼 블로그에 오신걸 진심으로 환영합니다.
©2002 영삼넷 // openkr
©2002 영삼넷 // openkr