找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16433|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
$ o4 P$ q9 O% v8 |( x
' `+ S/ Y- w' X; i- u" L在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
6 h% z) ^1 Y* G3 n  I$ @& k7 S ip6tables -nL --line-numbers
3 Y0 r" k9 M+ j3 u. v! `6 W7 D6 R
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:3 l- Z& m/ Q8 {) j6 ]6 A  `
0 M' l* _' s0 A
# vi /etc/sysconfig/ip6tables$ ?  R2 ^0 @5 d
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
; x8 A# i0 s2 W$ q8 S5 s# q+ D*filter
, ]- A5 f( }& M! H- D& `1 l:INPUT ACCEPT [0:0]( Z" Q' C4 x7 A
:FORWARD ACCEPT [0:0]
& \( Y& Z( z( m  A- |:OUTPUT ACCEPT [0:0]/ }2 v9 [9 V8 n6 f5 W1 I
:RH-Firewall-1-INPUT - [0:0]# U3 {1 H6 i, X; Z
-A INPUT -j RH-Firewall-1-INPUT
% g+ D* K! s' x/ h. e* F4 M% L-A FORWARD -j RH-Firewall-1-INPUT
2 W  B- H3 R5 S3 Y-A RH-Firewall-1-INPUT -i lo -j ACCEPT
" J; t' }9 B; u$ x4 R# m+ E-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT; x8 S  K5 _, l3 A  s% i; J1 g' z
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
' T; A; S9 o% U% u" Y-A RH-Firewall-1-INPUT -p 51 -j ACCEPT% ~! i' R# d* k3 K- @
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
4 J! e2 R; Y% B- i* l3 k9 b-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
. e. @3 }1 V) C  I; a1 k-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
* `9 _; P  U, `7 _/ |, U; k-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
! n* q: U) Z' g9 g( H% j7 l/ \-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
/ o( _  e7 D7 N* Y-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT, y. |/ P. V! i0 E& h
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
. F9 e( _' W7 w2 H: rCOMMIT0 F; J% n5 M$ ?$ k3 B4 y0 D
与 IPv4 的 iptables 规则类似,但又不完全相同。
: \! i- d3 s$ |, {! W, y% G0 u
" Z: E* s: w7 A4 H4 _要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:& t8 Y& u! k. ^# k. K7 r4 d

" w+ t7 k/ I% A$ X-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT. D$ D$ |2 ~5 B# s2 w; U$ t, d( X
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。! t; `% J& ?1 x9 A+ m) w

* X/ I; d1 T5 H2 G! X& m8 t) M要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
' D2 d5 L; r: ?( {2 w  m! @  g6 \/ r+ m4 ]' C5 X$ X
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT6 J3 K# n! B" Z4 M' B" I
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT' K' N6 J" z' G" S
同时针对 tcp 和 udp 协议开启 53 端口。) ]$ p1 o, V" f9 k
' u9 M, [2 g3 g  j4 g
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:- `0 Y' w- K3 \4 l$ J1 V

5 M9 D! C5 l, z1 q! n-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
& O, o! z: n, }8 [% ^要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:5 X! D* s8 s( V  w- C" P
% X5 x: D% s! W/ i/ O5 d- j
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
. B( ^, N& _2 `: V6 \1 H6 Q对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:4 u1 _' `, N% Q9 |; |% @
: D  a. ?/ ]4 O5 L/ Y
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
6 k6 V' T1 x0 o3 Z5 ECOMMIT5 e& H; w7 j. Q! y2 _! v
改为:
" G1 P6 q2 E7 P
6 q% s7 h* u2 p: A. U% y8 z$ C) }-A RH-Firewall-1-INPUT -j LOG9 N; j, `0 h! X* R1 V% J1 N
-A RH-Firewall-1-INPUT -j DROP
3 J/ n4 r8 Q1 D2 hCOMMIT& _2 L2 D2 x% e/ V# \7 o' Z. m5 C
保存并关闭该文件。然后重新启动 ip6tables 防火墙:1 ~. R8 _) i2 i% N
% L$ p0 O$ k' l- ~
# service ip6tables restart
8 E& _/ j# E$ A' @: V然后重新查看 ip6tables 规则,可以看到如下所示的输出:" s. Y8 V( Y+ I: V
  B5 g$ [6 `# q6 K7 l2 O
# ip6tables -vnL --line-numbers7 ~0 y: d: n7 H( r: u2 }  F8 S
输出示例:0 Z, P# b0 G, [* H$ {
! A/ i8 y8 k/ j$ q( @* k# I' w, b9 ^3 B
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
" Z7 ~: `; |5 Z; {) Onum   pkts bytes target     prot opt in     out     source               destination0 ~  X# z1 D* S9 z- V" F$ K
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
; \$ l: Y! H3 G! C; IChain FORWARD (policy ACCEPT 0 packets, 0 bytes)7 Z1 v7 ^6 w! {
num   pkts bytes target     prot opt in     out     source               destination
; o% q' t& |7 v* ~' h1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/07 H' \! i) r( E, Q( `6 c, a2 K
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)$ v& `/ R& n/ x" z/ F  q  i8 x
num   pkts bytes target     prot opt in     out     source               destination- f' B( H4 Y5 z0 q+ j% t
Chain RH-Firewall-1-INPUT (2 references)
) Y( s. b* X' w* U0 n( _9 j/ ~num   pkts bytes target     prot opt in     out     source               destination$ y0 Z* i- [3 J$ j# q6 N$ i. i1 ~
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
4 o$ X. [) c1 l7 o) ]& c; q- }5 C2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
4 R/ `/ `% Q! u# p7 }; D3        0     0 ACCEPT     esp      *      *       ::/0                 ::/06 z- i( F9 D3 E& O. A; G
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/07 ]; q/ p5 Z; I1 v1 n& I4 \
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
1 v, ], j. B5 q6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
3 X1 J7 C8 z, o! d7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
  K$ \8 G1 A/ a/ z5 `* J2 W/ G; M8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000& e5 g; D: H9 i7 j( \
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
; V8 N# z1 s* R/ o! \  R10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22! k. ]% _; J, Z8 D! S& u& |
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:800 U  g2 _5 |: u! @# g# a
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:533 |6 p& d: W0 ~1 Z/ j  W. C5 _
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53+ K$ T  o' x! Y- V  Q( c4 f& B
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
6 v! r  ~& ^6 M, PIPv6 私有 IP¶
- C/ x0 p# v* G! W7 ~" {IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  W2 [! j4 o: \" S0 U& r2 `7 K( v2 x! n# n
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。# f" w3 a( U& M" K
3 s* d6 Y- E- H. a
自动配置 IPv6 防火墙示例脚本¶
: q6 o- K+ a4 }- n. g. L3 ]( a8 s与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
" N9 W/ r2 x6 i4 F9 B* {+ i& C" o5 u' }5 Z: c* z. B2 E! }8 c" i
#!/bin/bash' @4 E0 e; T9 @3 z- x5 A
IPT6="/sbin/ip6tables"& |4 c4 ~9 C5 F
PUBIF="eth1"
0 t4 ~; z. X; K% L$ C: zecho "Starting IPv6 firewall..."4 X% q1 p0 q3 ~& E3 w: D8 n
$IPT6 -F! m; n$ o, o) ^, C4 d5 j8 t
$IPT6 -X7 z0 `) m, U" g
$IPT6 -t mangle -F
& w3 h% y) f8 {9 e4 p& M% |$IPT6 -t mangle -X6 }  V; L1 Y7 I( W  l0 ^9 @0 |: X  o

# z+ w' S  o& t( J- Q$ W#unlimited access to loopback7 [9 |( `9 D. q9 M1 `
$IPT6 -A INPUT -i lo -j ACCEPT
) n' ]' p+ |+ p: N$IPT6 -A OUTPUT -o lo -j ACCEPT
. e0 C4 m5 P( w
: @, U- i( s) C/ G( \  V) Y5 }# DROP all incomming traffic
* `; V! c: N$ j* z$IPT6 -P INPUT DROP
, p* H: F. u1 E$IPT6 -P OUTPUT DROP) r0 q7 T% K; b6 U
$IPT6 -P FORWARD DROP. D9 |. G  R+ e: ]# L
- t( t2 P( q0 _. S
# Allow full outgoing connection but no incomming stuff% ?2 K  N+ }4 r- Z; V  U
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$ x" V; \5 y, |! [2 {. z: |! B$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
' a1 t% J. B4 t  S7 Q5 H- I+ E4 \2 s# d' E! g) @& K
# allow incoming ICMP ping pong stuff% n' v5 v3 P1 J- r$ H/ A
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
+ X5 |9 F4 a, x& q" c! q" z: r+ p$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT7 B* v5 y) y$ A& M; S" [
. n6 S/ E- u( q! c) c) E, S3 M
############# START 在下面添加上自己的特殊规则 ############# D8 g. F6 I# F4 Z& \
### open IPv6  port 80
% t4 `% k: ?* |1 j#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
0 f1 C+ a" Z/ U* l" u) x### open IPv6  port 22
. L, ]1 f6 H" e9 Q#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT9 V7 Z& ]- t+ N( i# x) i6 I
### open IPv6  port 25
: [0 y: L4 |0 _0 }5 \#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
4 n* ?2 ~  K+ k2 u' ]" F% h+ F############ END 自己特殊规则结束 ################
& E( t* d( j/ n/ n, p% t! c8 j+ o. z3 A& E& }, U2 |
#### no need to edit below ###
$ |, ]9 k. {1 _' x% U# log everything else
& v, W9 d- s' b8 G; i# A$IPT6 -A INPUT -i $PUBIF -j LOG
* `2 C$ M: w- S) Q  s$ U& n$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, 2025-11-27 18:20 , Processed in 0.072293 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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