找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18458|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
5 p1 v4 q1 ]$ @1 i# U( U9 S$ Y+ h5 x  }% ~' D* w. B/ C; |
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:5 a. `( h  L5 h% t9 X+ U8 C+ I
ip6tables -nL --line-numbers
. E8 Q$ ?1 B& s6 E' R1 ~
6 ~5 h0 X: O7 t1 W% b$ ]  w9 a6 o使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
( s# c9 ]9 K$ B* ]" U
# Q, g5 e- ^6 m; a" H# vi /etc/sysconfig/ip6tables1 ~! ]( A: f9 P2 x
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换): X% H. ]. O( c# I7 k7 `( \. a
*filter
. Q( c5 x2 W7 ?5 n0 v2 E. ]:INPUT ACCEPT [0:0]
8 }/ T! A* Q' S* W2 B7 I- e:FORWARD ACCEPT [0:0]7 g4 U- m/ b1 f8 a9 L, s
:OUTPUT ACCEPT [0:0]  o0 D4 u' ?2 a( W7 D
:RH-Firewall-1-INPUT - [0:0]0 t7 r" ~* m# U  C! A
-A INPUT -j RH-Firewall-1-INPUT
7 @( i/ m: R: L" ~-A FORWARD -j RH-Firewall-1-INPUT+ p- i( Y, ?- {$ R8 R" U
-A RH-Firewall-1-INPUT -i lo -j ACCEPT% ~' v( O: E7 B( S2 J; p
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT- c! `# l' X1 E) l' o
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT2 ?2 n% s6 ]: V% b8 l$ O6 n1 I
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT$ C* S0 }9 _: q% N. b! X
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
) `# `$ z1 ]3 t3 u9 b-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT2 }# I* @1 m8 Q, W
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT1 v. l+ ?0 ]& N. w
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
5 V% R( \# P7 r. _) v, V-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
8 J+ Z) n) O8 J0 `) q-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT$ y& y' k/ U: ?0 ]' w
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited! ~( V3 u) O' e1 X4 N# i9 v& _
COMMIT4 W! C5 \9 K! o4 a9 y0 O. T
与 IPv4 的 iptables 规则类似,但又不完全相同。
$ Z$ A' J9 _, P2 O) ]& z2 v9 n# x( j
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
4 w( p1 W, e) g0 |; g: ~! @$ j" u' |) A: y
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT+ d7 P1 u" L9 w4 U+ ]
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
- U( {. L& \+ Q* @5 g( O1 o8 s) @/ F: ?; A, `# x
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
' A3 t; ?3 A0 P' S% N! ]  ^! i& L) y8 _- T# g
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
. @' y# D5 r5 L9 k-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT8 S" [9 X& r  ~3 h' m
同时针对 tcp 和 udp 协议开启 53 端口。2 _; X6 l9 a* x( k' E

( C# `+ d1 U, }9 q) \+ s: \7 R要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
; |" D; P/ g" s! ?4 A+ J" L1 w; {
2 U7 ^% A8 p9 d- d2 s" U-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
8 K5 ~" g, M3 T" K: _% Y- H; l要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:. Q6 t- V5 S2 Y/ e( u( V0 X. Y
# P8 k7 W" A2 y* Y( \
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT9 E# G3 Z: y/ G
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
. N! |+ ^5 ~/ r2 t" c* B
9 M9 j, [' l8 G# U5 M. h-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited7 @  C5 R+ I& m9 N
COMMIT
- i1 Q  `8 b% e, r  V改为:: F5 s5 S; G4 E$ t4 ?! i

4 D7 s3 W. K- E. B* u' h) c; Y) O3 [; J-A RH-Firewall-1-INPUT -j LOG
+ i! O; e4 X1 k5 h: I-A RH-Firewall-1-INPUT -j DROP
4 y* y3 l0 X$ a1 N  w* e/ e# UCOMMIT% D! g* c  I  H0 D5 `3 R
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
: ]" V1 b  V! L" Y' x
, K$ A, N2 b) R9 `5 U' R* K# service ip6tables restart3 L( ?1 Y& V" T* X# D0 x
然后重新查看 ip6tables 规则,可以看到如下所示的输出:1 S% f; o6 f8 e* @5 r2 k0 [
; g1 A4 V  U2 f9 t* c) e
# ip6tables -vnL --line-numbers$ X3 Q2 ^7 g( m" W
输出示例:
& w' g9 T( \" G# R; n
# U4 G5 z) X3 T5 jChain INPUT (policy ACCEPT 0 packets, 0 bytes)
# l; c, d4 s9 znum   pkts bytes target     prot opt in     out     source               destination% \6 d6 ?  I& {+ t- q, Z
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0" y( d. }( D) M
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
" @9 k0 w! N6 E9 J2 i3 Inum   pkts bytes target     prot opt in     out     source               destination
2 R* J, \1 M3 X. {# J, g1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
: g- d/ g# R8 p( V: r0 d8 ~, G8 aChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
# D2 p* G5 M, enum   pkts bytes target     prot opt in     out     source               destination* ~4 n+ s7 y& n  Y/ o
Chain RH-Firewall-1-INPUT (2 references)
, k. E: ~* o3 I3 B- z7 d. inum   pkts bytes target     prot opt in     out     source               destination
0 g6 N  p0 k) T3 a7 z! o* s1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
* U9 ?; g& G( A9 {" Z* C0 d/ n$ ?! {2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
( D: N# K* w; L7 H  b; R3 w3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
: x, S3 D& H9 E) h  v4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
. D& P3 ]1 w) O5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
- B4 a, }+ x+ @' D7 Z6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6315 S- f; x1 @  j* E9 u& @( o
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631  P) x% f+ c# y: N
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
: C1 s' _2 w& E2 u* O7 b8 D9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
1 g2 v8 B& D% V10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
4 J6 ]. N3 e  g6 n0 j5 }11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
6 @2 D8 ]8 H8 I12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
1 J9 N/ K/ f; ^" U4 q# y13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53; \9 m9 f9 e5 b
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
" k0 l: S, Z( U7 B3 i2 YIPv6 私有 IP¶
) b( K8 f+ D; j, q+ u  {) ]IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
* I) v# R4 `0 }5 a; h
2 ~9 {, B( q/ o7 W5 H% a不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。7 t4 [1 y2 D- V# y

# y7 [/ r' B! J自动配置 IPv6 防火墙示例脚本¶
9 B) m$ ~; d; ^- a与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。' _+ P7 [9 H" p
, d: {2 C$ H  w+ r: z/ o) B
#!/bin/bash. x* _+ M5 i0 u6 o. O2 N
IPT6="/sbin/ip6tables". {! M. E" b- b: s  m6 O$ ~
PUBIF="eth1"5 B4 E" W  o# ]" K" x+ [
echo "Starting IPv6 firewall..."
. ]2 r# [9 l$ [; O0 r$IPT6 -F/ z3 U4 H. W( s
$IPT6 -X
( B4 x% `* {( g$ x! N% Z) Y0 g$IPT6 -t mangle -F# ^+ P/ y$ A: g  y" m7 Z
$IPT6 -t mangle -X
6 g3 w8 K, [0 V7 j' K/ n9 z' ~2 [5 R2 b/ [/ f9 u# H
#unlimited access to loopback
& V  x2 y% v% J. C* z% d/ G0 t/ T$IPT6 -A INPUT -i lo -j ACCEPT+ x( Z$ i/ R5 v" ?
$IPT6 -A OUTPUT -o lo -j ACCEPT
# I7 `- _0 l9 r- _: A, ~; c# s  g7 R
# DROP all incomming traffic
3 Z; |8 R6 Q, o- L# S. R8 |) W$IPT6 -P INPUT DROP9 Z$ q5 G5 A! g( H
$IPT6 -P OUTPUT DROP  X' A4 Z% H; U$ Z, C- ^
$IPT6 -P FORWARD DROP6 |( `$ h! H9 p1 y% E/ ^( P* T
0 p. F( p2 ^" j+ T) @
# Allow full outgoing connection but no incomming stuff* ?3 @  ]4 k) ]: d
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
1 t2 O1 I% V4 F3 e$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT; U, u) w. M2 n* s
% k& b1 N- |- V" `! V
# allow incoming ICMP ping pong stuff
8 e! u. h& X) }7 e$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT9 d: p6 P) S7 f9 K' p
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT8 O$ H9 i+ j5 X9 u! l: Z5 n( H8 Y

2 o8 [  Z$ L  c) O2 y. C############# START 在下面添加上自己的特殊规则 ############
2 |5 M$ P5 X" x  K### open IPv6  port 80
" H6 x. V9 _& h$ l8 B#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT; N+ c' I% l7 L
### open IPv6  port 22
, ]2 ?8 d9 h5 W5 F( T) }#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
/ `$ @, r. V0 @" D. i### open IPv6  port 250 l  I3 @' x& l/ T3 h
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
/ r- |% n$ Z' |' X* D. Z############ END 自己特殊规则结束 ################
6 k$ `. G7 R  w* S
+ a& H7 e; x" r3 z9 g#### no need to edit below ###
9 j+ `+ I- V! |  W! g# log everything else3 [8 Y# D2 g, S# D
$IPT6 -A INPUT -i $PUBIF -j LOG
& r4 Z  s; ?# r4 o0 e3 K3 P1 Y$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, 2026-7-1 04:10 , Processed in 0.046007 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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