找回密码
 立即注册
查看: 13087|回复: 1

简明centos IPv6 ip6tables 防火墙配置简介

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
3 g# A% L& J- U3 W! f* Q  I3 \4 E, D0 V/ S' z+ L" Z
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:5 c' {) }  k# M3 G9 H. c
ip6tables -nL --line-numbers2 A6 Q: J9 [5 j
7 M: K9 }5 i. d5 x/ q- J  S7 n
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:6 y4 y2 p! |6 |/ a0 i2 k) S# U

8 o: O3 R+ Y1 G* g# vi /etc/sysconfig/ip6tables  [2 L2 d3 W" W" {, L
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)/ v" O+ R7 J& V' y
*filter' l& }3 x- n* O5 W  }2 e
:INPUT ACCEPT [0:0]
/ W$ H$ V3 T1 B* p# e:FORWARD ACCEPT [0:0]
3 ]" p" V6 @  \:OUTPUT ACCEPT [0:0]0 ?2 r) O% ^) B
:RH-Firewall-1-INPUT - [0:0]0 W, B9 S5 p/ h9 ]% g, @. Q
-A INPUT -j RH-Firewall-1-INPUT2 n) g% i9 I  P* V/ ?# j+ i) c) X$ Z
-A FORWARD -j RH-Firewall-1-INPUT% w" o) H6 W5 A, v8 `1 V
-A RH-Firewall-1-INPUT -i lo -j ACCEPT. ^4 n( g# W0 M2 R2 l
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
7 P" C8 v; ^8 ^. I9 a-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
- ?6 C8 q) `- ^) _-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
) p* \; L" s/ I- f- Q-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
2 O9 K0 S7 T( e/ J-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
) ]. `' R3 l0 S8 R-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT# d. W4 f; F# G5 |1 k( E0 F* l
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
8 x7 W3 _+ f' p-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT2 H; j* \3 V& R; g' Y% V
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
( i2 c, [" v; F! `9 M' c-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
/ O8 n2 Y3 Y7 Y( K- j/ j3 ACOMMIT; [3 l2 P. ?0 \: ?
与 IPv4 的 iptables 规则类似,但又不完全相同。
1 H3 J/ q+ ^2 N/ U0 l7 |3 _! A2 s+ \8 [) t
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
$ v* O2 p& P+ m  l" ^6 l" W/ J
# ~0 J  [% S6 @% M0 V3 @; F$ ]& M; L-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
  t7 d5 ~) V) v% p) a6 I7 @-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
3 R4 R) Q+ i, e' d* p& B1 @1 f4 n$ ^* A( A9 o& o; f' Y
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
3 D0 o& z3 Y- {5 d
4 ]: c  {( `  \-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
. t5 H. X; F0 W2 f, v! e, R6 T-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
) _( [' G  M! G8 e同时针对 tcp 和 udp 协议开启 53 端口。0 u. l* p: [% x
% G9 N2 G; A: e2 c) Y, y
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
  Q" U7 C( a/ o% W0 G0 }% h8 ?' x+ n2 N' H& g- q; @  ~6 r
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT& w0 A) l8 G  H  p8 r% f4 M
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:. t$ G& W% m3 s9 l- L/ }. s

5 Z' f# ]) G! u-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
: l( I4 ]' v; R6 Z$ {2 _+ Q/ D对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:1 J- g0 a7 c2 `4 ~4 u* D8 f
3 I5 n5 }& e  e8 o
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited# A7 E5 j/ a- P& U4 ], Q2 Z) u
COMMIT, r: d3 t/ l, X
改为:3 w/ }# u7 C8 V

( `  r. u7 C& j; W  R7 D-A RH-Firewall-1-INPUT -j LOG2 ~% t, Q% `" p. i# Y. g
-A RH-Firewall-1-INPUT -j DROP
4 \) [( }' T+ ACOMMIT( n; O% {$ n$ z( ?' V
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
# C1 @0 @6 _) w! p0 h& _1 O  z: V6 ?7 X
# service ip6tables restart: l  k, K, v' @' E2 B$ N
然后重新查看 ip6tables 规则,可以看到如下所示的输出:2 o6 B4 s; v  {- X3 G, z, z

8 V0 m6 L. |! }% @" x# ip6tables -vnL --line-numbers
& U; t, Q( C! n0 u5 g9 a输出示例:
8 b5 V+ ^# R. S* }' N9 x# l& S' n% [1 x' Q. z% j4 h, u) j( B
Chain INPUT (policy ACCEPT 0 packets, 0 bytes). L" r% w: ]1 n3 `, O6 r
num   pkts bytes target     prot opt in     out     source               destination
6 q$ C; y3 O$ R9 o1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0( @0 ^! q* s; H7 K: t
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
6 p4 }) Z# M2 K- V! rnum   pkts bytes target     prot opt in     out     source               destination4 u: \  V1 I* j; h
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0; U- F9 O( e5 u7 X+ u' U, }+ j
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
8 `0 y: c' i' b1 H/ d. ynum   pkts bytes target     prot opt in     out     source               destination% N6 s  U: M8 U5 Q" s
Chain RH-Firewall-1-INPUT (2 references)
/ E4 @/ u5 b6 E& ^8 hnum   pkts bytes target     prot opt in     out     source               destination' g" z; a. l) t. u$ \: \
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
/ `" L5 o" l& S* v2 X( M2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
; i9 ?! M0 x# F3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
2 j# Z% S. r3 }) z% u8 |) i4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
3 L$ E6 [& ^8 h* D/ Y5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
. b+ @7 O( H+ C3 s) c7 y+ @6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6310 F  M( d' R* M, n
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631  z# [' K  }# a* k6 f, x
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000# b$ j+ \$ f' P0 S
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02" a6 J8 @' J" V& e; d, G2 ~+ e
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
9 j; t% X+ g; J# h5 z11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80" z4 p6 X4 k. V
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
- N0 Y. _+ M5 A+ A5 H# s- M13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
2 ~, H6 k2 u3 F) a' b$ t8 b- J0 w5 `# c14      18  4196 REJECT     all      *      *       ::/0                 ::/0- g, m  K1 X9 h/ b; p( ]
IPv6 私有 IP¶6 V% `" W2 B/ }2 |& P
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
8 S( _$ l' U) c8 ?8 [: K) \5 k+ f' l
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。) Q" h' E0 S9 L/ j6 _" d
% \1 Y4 |, x& v! d
自动配置 IPv6 防火墙示例脚本¶+ _2 r  u; X6 `1 Q' T3 t
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
, ]4 t$ s8 ~8 `+ P$ m1 Q3 s# h7 C
+ k- t+ \) ?; I  ?' o#!/bin/bash* @+ r% G" @0 C: E, N
IPT6="/sbin/ip6tables"2 G+ Q+ Z- ]. f: W4 s" N
PUBIF="eth1"
$ B0 }2 t2 P& N  S! {  Hecho "Starting IPv6 firewall..."
2 j+ K* Z) z9 |" s7 |( R: R) b$IPT6 -F9 c/ H' c8 q5 |  M0 Q; e. A. X. g
$IPT6 -X, Y% E5 E$ V- I6 F$ r
$IPT6 -t mangle -F- U' G' O. J8 }$ k- P2 e5 C; k
$IPT6 -t mangle -X
9 U/ c* Y* p! F' f6 j2 m$ a0 W' a  r8 q! k  j+ Q$ b+ @% ]
#unlimited access to loopback
$ v# @  I7 n$ e6 o$IPT6 -A INPUT -i lo -j ACCEPT
2 C0 L0 w6 r; n- S$ }4 @$IPT6 -A OUTPUT -o lo -j ACCEPT
: r. w: `; H" K9 i! M
$ Y1 ^  P) e3 H3 R* a' l# DROP all incomming traffic
8 u+ ^  S5 Q& q# _" R$IPT6 -P INPUT DROP: Q1 m7 }8 G, ^& w" n
$IPT6 -P OUTPUT DROP
2 f# E8 Q! ~' p* Q$IPT6 -P FORWARD DROP, T; ]+ A; y4 ^" a5 H2 |! u  h
0 J- x% g% n$ }7 J
# Allow full outgoing connection but no incomming stuff! T& C, m  E, l0 F# y5 e# D& O
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT: h* n- r' V3 _7 M0 a
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT7 J2 ~0 w$ o' n  O6 n& }" w( a

, t% w8 W7 ]5 \3 ^; I# allow incoming ICMP ping pong stuff5 b" \7 |! `, b
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
, Y6 c/ b! U. Q8 r) c$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT5 |) j9 k+ o# Q) H  V" U: w- t* r
) C. a% W" y  g
############# START 在下面添加上自己的特殊规则 ############7 A% ^/ s: c3 P% h
### open IPv6  port 80
- L: F( ~* N) b$ B. |4 b6 l0 J#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
4 e. l0 @0 N7 I8 x9 X### open IPv6  port 22
& X+ |) ~% n! u1 p#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
+ F* T& C, B# t& ]) u### open IPv6  port 25: q, n' m. _! ^
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT$ M: v; w6 ^( O7 y& o
############ END 自己特殊规则结束 ################/ ^+ M' ?* l4 ~# V( H( d' h
4 q4 O3 n& Q0 D0 |( r/ L; Y3 w
#### no need to edit below ###
. J2 `  G, O; Z/ r* i1 m8 A# log everything else. l3 G1 F; B# d  W, f8 t0 K' O
$IPT6 -A INPUT -i $PUBIF -j LOG
* V+ |( V' s3 o/ E: }2 G7 x$ g$IPT6 -A INPUT -i $PUBIF -j DROP
 楼主| 发表于 2013-3-25 22:35:23 | 显示全部楼层
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited 将会导致外网访问需要icmp6数据的应用失效,最好删除!意思是阻止一切外部发起的icmp6数据访问,如果保留注意其执行顺序!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2024-5-5 02:00 , Processed in 0.091398 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表