Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270853
  • 博文数量: 38
  • 博客积分: 2539
  • 博客等级: 少校
  • 技术积分: 443
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-01 11:19
文章分类

全部博文(38)

文章存档

2011年(4)

2010年(4)

2009年(30)

我的朋友

分类: LINUX

2009-07-06 16:47:20

防火牆的分類

防火牆大概可以分為以下三種:

  • 封包過濾式 (Packet Filtering Firewall):作用在IP層及傳輸層的過濾方式

  • 閘道式:如 NAT

  • 代理式:僅針對特定的服務做交換,如 DMZ


網路拓樸



基礎網路協定認識

常見的協定:
  • TCP:三向交握
  • UDP
  • ICMP

iptabels manpages

man iptables

架構圖


指令結構圖



iptables  新增(刪除)鏈    比對的條件    -j  接受(丟棄)



iptables的比對流程圖




規則的建立(刪除)

  • -A: Append, 新增
  • -D: Delete, 刪除
  • -I: Insert, 新增至最前面
  • -L: List, 列出
  • -F: Flush, 清空
  • -Z: Zero, 計數歸零

比對成功,對它做...

  • -j TARGET
  • TARGET:
    • ACCEPT: 接受
    • DROP: 丟棄
    • REJECT: 回傳帶錯誤訊息,然後丟棄此封包
    • DNAT: 修改目的位址或連接埠,僅適用在 nat table 中的 PREROUTING, OUTPUT
    • MASQUERADE: IP偽裝,僅適用在 nat table 中的 POSTROUTING
    • REDIRECT: 修改目的位址為本機,且修改連接埠,僅適用在 nat table 中的 PREROUTING, OUTPUT
    • MARK: 設定 mark 值,僅適用在 mangle table;通常搭配 iproute2 使用(QoS、路由導向等)

一般範例

# flush the iptable rules
iptables -F
iptables -Z

iptables -A INPUT -i lo -j ACCEPT

### IP Rule ##
iptables -A INPUT -s 210.240.172.81  -j ACCEPT

## UDP Rule ##
iptables -A INPUT -p udp --sport 53 -j ACCEPT

## TCP Rule ##
iptables -A INPUT -p tcp -m multiport --destination-ports 22,21,80,110 --syn -j ACCEPT
iptables -A INPUT -p tcp -s 210.240.172.0/24 --dport 25 --syn                    -j ACCEPT

# other
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -p udp         -j DROP
iptables -A INPUT -p icmp        -j DROP

NAT範例

depmod -a
modprobe -a iptable_nat
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_filter

## 啟用 IP_FORWARD 功能
echo 1     > /proc/sys/net/ipv4/ip_forward

## 下面三行是針對內部主機連線的調整
echo 81920 > /proc/sys/net/ipv4/ip_conntrack_max
echo 600    > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 1       > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# flush the iptables rules
iptables -F
iptables -t nat -F

## 針對連線至此主機
iptables -A INPUT -i eth0 -s 192.168.172.0/24 -p tcp --dport 22 --syn -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 --syn                             -j ACCEPT
# 其餘丟棄
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -p udp         -j DROP

## 底下是針對內部的 IP
# 針對 FORWARD chain
iptables -A FORWARD -i eth1 -d ! 210.240.172.137 -p tcp --dport 25  -j DROP
iptables -A FORWARD -i eth1 -s 192.168.0.0/16 -d 192.168.0.0/16     -j DROP

# 導向其他主機
iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! 192.168.111.254 -j DNAT --to-destination 192.168.111.253
iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! 192.168.111.254 -j REDIRECT --to-ports 80

# IP 偽裝
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.111.0/24 -j MASQUERADE

其他有趣的範例

1. 封包數限制:
iptables -A INPUT -p icmp -m limit --limit 1/s  --limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp -j DROP

2. QoS、路由導向
iptables -A PREROUTING -i eth2 -t mangle -p tcp --dport 25  -j MARK --set-mark 20

## QoS
tc qdisc  del dev eth2 root 2> /dev/null
tc qdisc  add dev eth2 root handle 10: htb default 10
tc class  add dev eth2 parent 10:   classid 10:1  htb rate 100kbps ceil 100kbps
tc class  add dev eth2 parent 10:1  classid 10:10 htb rate 10kbps  ceil 100kbps prio 2
tc class  add dev eth2 parent 10:1  classid 10:20 htb rate 10kbps  ceil  80kbps prio 3
tc qdisc  add dev eth2 parent 10:10 handle  101:  pfifo
tc qdisc  add dev eth2 parent 10:20 handle  102:  pfifo
tc filter add dev eth2 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth2 parent 10: protocol ip prio 100 handle 20 fw classid 10:20

## 路由導向
echo 202 anti.virus.forti >> /etc/iproute2/rt_tables
ip rule add fwmark 20 table anti.virus.forti
#ip route add default via 192.168.99.201 dev eth1 table anti.virus.forti

3. L7-filter
## 來源:
## 需重新編譯核心
iptables -A FORWARD -s 210.240.0.0/255.255.0.0 -i eth1 -m layer7 --l7proto bittorrent -j DROP
iptables -A FORWARD -s 210.240.0.0/255.255.0.0 -i eth1 -m layer7 --l7proto edonkey -j DROP


參考來源

  • iptables manpages: man iptables
  • OLS3: Linux 防火牆入門。
阅读(2160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~