找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18858|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
& _( G& _' y0 Q, m: y6 o( j; b9 B, h/ e
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
2 r% i2 e! r/ u5 V) H3 e) n ip6tables -nL --line-numbers
3 H) h9 Z$ o+ o: B9 X8 L4 z' @+ L% e- o2 s+ U
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:4 T. c8 g. `6 R4 T2 l- r

8 }1 G) J& O; W9 t2 N: P# vi /etc/sysconfig/ip6tables
, L: V4 m  e6 ^; ~可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)3 |9 Z) l7 K: `! \9 g1 s
*filter
+ h8 X: V8 ?6 b:INPUT ACCEPT [0:0]
5 W% s3 b0 \- W) u0 j:FORWARD ACCEPT [0:0]
* A& D" {, O, K# J:OUTPUT ACCEPT [0:0]0 _- n% Y3 v0 @" a
:RH-Firewall-1-INPUT - [0:0]9 K% V8 C4 z: [
-A INPUT -j RH-Firewall-1-INPUT
4 f$ Q* `( b$ @/ _) i-A FORWARD -j RH-Firewall-1-INPUT
( Z+ e. X7 w2 {; K3 F, m-A RH-Firewall-1-INPUT -i lo -j ACCEPT* ?" t  j! d3 y+ Q0 ?& Z) x
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT% w, |$ \0 `5 D9 h
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT! B" r0 Y  X; D
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
% S" n* G/ H1 R0 X5 F! J-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT; W$ D0 c5 D$ e+ V" g
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
$ S# X' b6 N* V, B) C-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
7 `2 H, t0 e6 H5 [0 |-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
$ U  k3 s. x- V8 I: {. `- o- N0 ]-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
. ~$ w2 v+ ~. w" \9 l-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
2 I3 N2 r6 s: @-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
5 R4 M: \1 e5 v5 {COMMIT
# c- }! h: V8 C# L+ ?: m/ ]6 O与 IPv4 的 iptables 规则类似,但又不完全相同。
4 ?9 [6 ~( x2 T/ g5 `7 D" ^2 z' C
1 w+ |5 H2 u) d# o要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
0 i* e8 t& E  N. s
8 M9 ]) n9 G: F-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT. f6 z) W; D3 r, R1 _' |
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
; l, |$ s1 z' u% o! f* F& P( L
% p; o: Y/ S" _6 C3 J/ N要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:+ Z$ G, Y! k& [
( U# g0 c- M& W1 _* C$ J
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT7 F; b, z: Y+ G% p; R: X
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT: z) q1 ]) y# b3 S
同时针对 tcp 和 udp 协议开启 53 端口。( R+ b& K1 S; m9 L" \, L

! V5 J% P2 U4 J0 k要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:8 t( k- v3 c# e3 t5 j
8 H( ^0 }. p8 L8 l0 i
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
3 [1 D; H9 W) e' X: ^0 o, ^+ j要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:& u- R! z" _+ F

+ O$ e) ]+ Q  \-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT" u: C+ ^) U/ [& i
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:4 p, ]3 V" A9 }

4 M4 |9 g9 e) l! k-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited- ?; @- E# m) G' P8 R
COMMIT
" M" A; e2 e: Q# s. o$ K1 W1 e7 V; T改为:
: V! t, Q! X; [1 u2 x0 \3 k' i: c2 _9 _; }, A  I7 W
-A RH-Firewall-1-INPUT -j LOG
7 ^6 a% |- g  v5 k% f$ j-A RH-Firewall-1-INPUT -j DROP
; b% L+ R+ X* a  b5 T$ L$ NCOMMIT7 e: r6 V: e4 @2 z7 k# B
保存并关闭该文件。然后重新启动 ip6tables 防火墙:+ v4 T" }# q+ ^2 h
+ S# V) S$ T6 {: ~
# service ip6tables restart
, t' K# d6 {. t* m. Q然后重新查看 ip6tables 规则,可以看到如下所示的输出:; }; c$ B- v0 O* ~' b# m" g
1 \  m# b1 y6 m$ V3 }* w% y# F& S- f* ^; d
# ip6tables -vnL --line-numbers0 M- K2 o$ Q% Q% j# t. ]
输出示例:  T$ H! N  L( c7 E9 M/ c+ Y, |

" D6 a6 S/ o  G4 nChain INPUT (policy ACCEPT 0 packets, 0 bytes)) V7 }( G* y5 G5 S  Q# ?7 I2 O
num   pkts bytes target     prot opt in     out     source               destination
0 O- y$ j5 \1 G1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0* A+ I& a5 ]5 i+ A1 O
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
' g5 V- i5 a5 a% ^4 Cnum   pkts bytes target     prot opt in     out     source               destination  ]8 V3 [5 ~8 K* c  E
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0% u! I; J; q3 U$ a
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)' Q/ Q2 p3 ^3 r" `* \' J- c/ R
num   pkts bytes target     prot opt in     out     source               destination
  t( i8 E" w" o( r0 a; B# DChain RH-Firewall-1-INPUT (2 references)- f' X8 ~  a% O& O
num   pkts bytes target     prot opt in     out     source               destination+ o9 A+ M% s" p8 C. A
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
( g. ?' Y6 D5 a) p1 j, I" a. r* n, W2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
* p7 e# j- N- Z' o% s  h3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0' v! k3 p6 V/ \6 n9 E3 h8 y
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
% A8 _. [, Q! s9 |# |0 R" g+ r5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
" A& [$ t3 _5 T$ M1 c6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6318 s& I: g9 A& M8 K  n, e' A4 ~9 Q
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
. K* R7 N) z, z. x0 L4 o8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000' X) ^& `2 O1 O2 D# S  c
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
0 ]/ S0 w( i# h0 e5 \$ ~( R  G1 ^10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
5 T" N- ~. _( P9 n% |11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
1 i- ~8 ?. I- I3 g) l12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
3 U* u- S% U0 s13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:536 W3 a2 y6 g& i& ^
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
% b- U7 v& U& X2 FIPv6 私有 IP¶
, h* N& Y! W: U, {8 |IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?! ^' _  ^4 h  x1 A

5 [7 p7 d: L" _1 i不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。. T4 x$ u7 K% H) e" E, r

" v1 n; ?) H9 m- z6 {# r自动配置 IPv6 防火墙示例脚本¶: r3 O7 q0 y3 H. L+ M3 C/ q
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
' x9 G$ v- b' ~6 Q
; i0 O8 v, K2 |8 F+ I#!/bin/bash
' Z& r# }+ ^, K# @; q6 \1 ^IPT6="/sbin/ip6tables", c# i! ]+ U3 h" z
PUBIF="eth1"
  q8 s4 ]0 U7 O& ~; ^. Kecho "Starting IPv6 firewall..."
: M* V( p- p5 O/ M$IPT6 -F  M9 L0 T' R1 V7 d. X# E
$IPT6 -X! g. ~/ D0 c7 U; D( M  ?
$IPT6 -t mangle -F
# C" B3 I" F4 T) c# Q0 r/ z$IPT6 -t mangle -X
& L3 c% O4 Q  l3 Y4 h4 F1 Q0 f: U) X4 b7 D! v0 c) n2 ~. k$ [
#unlimited access to loopback/ N+ n9 L+ |# X" w, B' k
$IPT6 -A INPUT -i lo -j ACCEPT( N2 X  y+ U! C  s; {# F% I5 }
$IPT6 -A OUTPUT -o lo -j ACCEPT
, [5 q" {) e$ ^$ r7 O) [: Z
/ W! j) A4 ^- [0 i# DROP all incomming traffic) ]7 u8 R" z* r$ n  C
$IPT6 -P INPUT DROP2 W. _! t; c( d% \3 ?2 w5 z% B
$IPT6 -P OUTPUT DROP0 {- ^; M7 k6 y2 n, H2 o9 e
$IPT6 -P FORWARD DROP
8 w0 s; ]! ?4 C" C! E. Q7 Z2 f; q* W0 Y5 I7 k
# Allow full outgoing connection but no incomming stuff
1 [3 s2 P9 P. f0 H. x# f$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
9 R, A8 y3 {; n% W3 F! u( u3 J; `- o& K$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
: Q% d2 G1 r' ]  W5 v
/ V& ?2 D# G5 H' @: [# allow incoming ICMP ping pong stuff
; k, M. `5 G) P) ?6 R1 {$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
& v: K0 y* G: o& @4 P# c/ \$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT! f0 l: l: b" m5 i7 P5 L
2 B& ?+ H5 M8 o1 X6 H
############# START 在下面添加上自己的特殊规则 ############
2 v# Y* i5 Y6 ?' M$ d# r### open IPv6  port 80
( j7 C: _# I2 Z3 j#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
$ }' ]1 y2 n9 W$ Q! o' k4 m; |6 a, b### open IPv6  port 226 c' f& C& u$ n' ?
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
( b0 ^4 |/ m" G" ?4 }% D### open IPv6  port 250 b; ?, S. g5 v  U
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
: N* S7 H6 z* w  q- y5 d" u############ END 自己特殊规则结束 ################& I( M0 @+ C: ^7 R9 N) ]* k

; n: O# i! e* ~. h' H3 u( d#### no need to edit below ###: n" t! h/ A& t. k, e& l- U  W
# log everything else
1 V& Y% L/ \0 W  X4 C: s5 L4 w$IPT6 -A INPUT -i $PUBIF -j LOG
# {$ ~' q9 `# F7 T0 W! L8 Z$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-8-15 05:49 , Processed in 0.057491 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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