Loading....

HEAD

  • 有一种精神,叫"公诚勤朴"

挣点外快

Simple Iptables Rule
作者: wzhu 时间: 2008-09-24 11:50:12

这些天,因为公司Velocity服务器要挂在公网下面. 需要给服务器设置一个防火墙.

服务器对外提供WWW服务, 对个别IP地址提供SSHD服务, 另外该机器还要使用外部的WWW DNS WHois DNS FTP等服务.

简单设置了一下. 详细如下

#!/bin/sh

#########
# 设置变量
#########
WAN_IP="192.168.1.5"
LAN_IP="192.168.1.5"
WAN_ETH="eth0"
LAN_ETH="eth0"

#########
# ------------ ------------
# | Internet | | Intranet |
# ------------ ------------
# || ||
# || ||
# || ||
# \/ \/
# WAN_ETH WAN_IP LAN_ETH LAN_IP
#
#
#
#
#########


#########
# 关闭 forward 功能
#########
echo "0" > /proc/sys/net/ipv4/ip_forward

#########
# 清除先前的设定
#########
## 清除预设表 filter 中,所有规则链中的规则
iptables -t filter -F

## 清除预设表 filter 中,自订链中的规则
iptables -t filter -X

## 清除mangle表中,所有规则链中的规则
#iptables -t mangle -F

## 清除mangle表中,自订链中的规则
#iptables -t mangle -X

## 清除nat表中,所有规则链中的规则
#iptables -t nat -F

## 清除nat表中,自订链中的规则
#iptables -t nat -X


#########
# 设定 filter table 的预设政策
#########
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP



#########
# Local Server
#########
## Locale Machine & Loopback
iptables -A INPUT -p all -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p all -d $LAN_IP -s $LAN_IP -j ACCEPT
iptables -A INPUT -p all -d $LAN_IP -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p all -d $WAN_IP -s $WAN_IP -j ACCEPT

## HTTPD web server
iptables -A INPUT -p tcp -d $WAN_IP --dport 80 -s 0/0 -j ACCEPT # Any where incomming

## SSHD
iptables -A INPUT -p tcp -d $WAN_IP --dport 22 -s XX.XX.XX.0/24 -j ACCEPT # Accept Company
iptables -A INPUT -p udp -d $WAN_IP --dport 22 -s XX.XX.XX.0/24 -j ACCEPT # Accept Company
iptables -A INPUT -p tcp -d $WAN_IP --dport 22 -s XX.XX.XX.XX-j ACCEPT # Accept Public Ip Itself
iptables -A INPUT -p udp -d $WAN_IP --dport 22 -s XX.XX.XX.XX-j ACCEPT # Accept Public Ip Itself
iptables -A INPUT -p tcp -d $WAN_IP --dport 22 -s XX.XX.XX.XX-j ACCEPT # Accept www.example.com host
iptables -A INPUT -p udp -d $WAN_IP --dport 22 -s XX.XX.XX.XX-j ACCEPT # Accept www.example.com host




#########
# Remote Server Reply Package
#########
## Remote HTTP & HTTPS
iptables -A INPUT -p tcp -d $WAN_IP --sport 80 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -d $WAN_IP --sport 443 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## Remote MySQL
iptables -A INPUT -p tcp -d $WAN_IP --sport 3306 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## Remote SSHD
iptables -A INPUT -p tcp -d $WAN_IP --sport 22 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 22 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## Remote FTP
iptables -A INPUT -p tcp -d $WAN_IP --sport 20 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 20 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -d $WAN_IP --sport 21 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 21 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## FTP PASV
iptables -A INPUT -p tcp -d $WAN_IP --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

## WHOIS WHOIS++
iptables -A INPUT -p tcp -d $WAN_IP --sport 43 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 43 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -d $WAN_IP --sport 63 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 63 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## DNS NameServer
iptables -A INPUT -p tcp -d $WAN_IP --sport 53 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 53 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -d $WAN_IP --sport 42 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 42 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## SMTP
iptables -A INPUT -p tcp -d $WAN_IP --sport 25 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 25 -s 0/0 -m state --state ESTABLISHED -j ACCEPT

## POP3
iptables -A INPUT -p tcp -d $WAN_IP --sport 110 -s 0/0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -d $WAN_IP --sport 110 -s 0/0 -m state --state ESTABLISHED -j ACCEPT


#########
# Other
#########
## ICMP
iptables -A INPUT -p icmp -d $WAN_IP -m state --state ESTABLISHED,RELATED -s 0/0 -j ACCEPT # Ping-Reply
#iptables -A INPUT -p icmp -d $WAN_IP -s 0/0 --icmp-type 0 -j ACCEPT # Ping-Reply

## Warnning allow all include above all
###iptables -A INPUT -p tcp -d $WAN_IP -s 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#########
# 打开 forward 功能
#########
echo "1" > /proc/sys/net/ipv4/ip_forward

相关评论
发表评论
姓名:
图码: