找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19250|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。2 n# ^. j( v3 G8 f

( N# D! b. k) u- R+ [, d; e1 g7 v在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
4 y3 w, Y* h. ~) j: q: n  y ip6tables -nL --line-numbers
- O6 B! j* l2 {4 L/ {' |4 N) V; a$ Q/ }; ?7 f+ \
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:8 @. g4 T$ }7 F$ C6 L

1 M7 t3 \; T  ]( t6 n# vi /etc/sysconfig/ip6tables9 D- F4 @3 Z- s0 J
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)+ q2 t9 p; l" _  X1 {
*filter7 B; P8 L/ B2 o4 s
:INPUT ACCEPT [0:0]& K( |0 d  n  {8 s
:FORWARD ACCEPT [0:0]
4 Z6 ~$ k  V. v& x. _* Q, {:OUTPUT ACCEPT [0:0]
' c% @0 T4 Y* D$ b4 J:RH-Firewall-1-INPUT - [0:0]/ A" i, C" k0 Q' k) _5 l
-A INPUT -j RH-Firewall-1-INPUT. e: w, C1 }* X# ^6 S
-A FORWARD -j RH-Firewall-1-INPUT
( y5 A; k! f$ K  v% x; l7 _-A RH-Firewall-1-INPUT -i lo -j ACCEPT7 Z6 H- p. |. H: ?
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT6 \4 j( v4 E3 w- D( a4 c/ T& h
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT$ K8 H* a9 v" q* K& C( l) L5 {- _
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT( I) F9 L  N+ E9 S$ N9 o
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
0 M9 H- M! `$ F2 o1 K-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
! g' f% I# z# ^/ A-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
* Y2 g6 d' V' A/ e9 S. k9 Z-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
" C. B4 w0 m: s-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT" u; ~6 q* h7 Q! w% {# d3 n
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT" S3 b+ q1 Z0 ?! ~2 y% ]6 Z
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
0 h* o  T( r6 w' f+ Q, sCOMMIT
/ j1 P* Q) `2 t, s0 t* H与 IPv4 的 iptables 规则类似,但又不完全相同。6 y3 [2 n+ q# s9 ~# s) |0 o5 r

' y4 v' s# Y0 ^5 N$ U要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:3 R4 E) b4 D1 _8 y; u& l7 U
' f% h" B% |6 v( O3 t
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT3 B$ r) U. P+ v1 N0 s
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
6 u* q1 \) V9 t: v8 G! F# w; T  [6 @$ t5 ~; i- z/ Y9 J( i; M
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
/ w* J1 S; B4 I6 |, h
; h: _( u( t: }8 H' [! W% n-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT2 G3 r: T4 ^& M1 F, q& J
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT( C: o8 g# a" S7 Y5 P2 _
同时针对 tcp 和 udp 协议开启 53 端口。
! N2 t+ S0 |$ H; d/ x( e$ m
& K( x8 Y: G; D  t; V  D+ V要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
+ n3 k9 I# F! T" j7 p
( G- |# P) A! r-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT3 p1 o, q- _2 y- ?4 D' v
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
1 Z2 L* ]7 s$ ?7 J) g4 |6 Z' l6 Y$ R" x, M2 N
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
6 ?5 |/ Z0 D7 j. [" |& w2 m8 {# p对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
5 v& W# _  j/ e) b( M' i% K( E" y' ~/ Q- h: d. n% x
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited* q( b: h9 d) f6 a
COMMIT
6 ~8 x- E) U. V- `0 _" a改为:1 x/ b( T* S6 u

& E  H6 x" r" B& {5 x1 _, O1 J-A RH-Firewall-1-INPUT -j LOG
  }0 a5 Q) @' K8 k$ n. ~-A RH-Firewall-1-INPUT -j DROP
$ I9 f% f- B) b5 d1 kCOMMIT
, c( c5 m7 n5 i4 Y$ p" o) ^2 a2 h保存并关闭该文件。然后重新启动 ip6tables 防火墙:
6 v& D( M! X' E8 |2 q% N/ F
6 a( o+ j1 r: f# service ip6tables restart
, d8 v5 g: z8 q* u3 v0 a; z4 Z然后重新查看 ip6tables 规则,可以看到如下所示的输出:/ L" U  h' m2 F. n2 A( t5 b

$ f" _! `) C3 b2 [# ip6tables -vnL --line-numbers: X+ Z6 E/ _7 r2 {4 H. w( K
输出示例:% W' _: O1 h# e( `

3 D. }1 P6 a" P) B. {$ B& ]1 W$ ]# wChain INPUT (policy ACCEPT 0 packets, 0 bytes)  S- G/ N( n2 `$ ]1 s! L! m3 }* H/ P
num   pkts bytes target     prot opt in     out     source               destination3 ]) u& B; I7 T  A# B
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
7 \0 X5 A0 ^( v9 k6 G) O  d8 kChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
* M! [4 J1 I2 f' ?. bnum   pkts bytes target     prot opt in     out     source               destination
1 ]. A  S: E  y: O( l1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
1 w3 y- ~+ L) u9 N) f: X) K0 M/ }Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
3 a$ D" u9 f2 I, d! t# \num   pkts bytes target     prot opt in     out     source               destination
- C) i4 K+ ^3 k0 WChain RH-Firewall-1-INPUT (2 references)7 t* k+ v+ F- J% R# m7 U  H; _7 h
num   pkts bytes target     prot opt in     out     source               destination" p& V: G" p5 E$ R
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
# O4 r" a2 A( @2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/02 x8 h; h- Z/ {9 E; R1 P5 q
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/01 b; n% h. C; b' m7 I
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
% S4 |2 y4 _$ V3 m5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
% Z4 p# C. w) P6 k! y' ]6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
/ k5 u3 S9 @8 j7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631( Q' u  @- ?/ Z% e4 _; D* f
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
% o# ~1 |0 r2 \. Q& ?1 U; Y9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x020 V$ c* d5 o. T$ ?! ]6 o- B
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22  O6 R: k1 V( F5 X1 L4 b
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80* t% _$ _" }9 D& J  l
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:532 E; `4 J9 A+ K+ {
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53! P& H) e) U3 Y) K( V% u0 ?
14      18  4196 REJECT     all      *      *       ::/0                 ::/0& X) w# v- \; r  a+ j* D
IPv6 私有 IP¶  V/ a2 _  H; ]& l+ Z) H
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?  T0 y1 s0 ~: `% q' q! v% i

' [; Q' M. S" Q不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
! [$ x, l  k' X0 l. j& p% Z5 `% Q* l* x. v$ n, |: ]/ U
自动配置 IPv6 防火墙示例脚本¶
) r- a$ v/ i- O0 [9 F与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
7 D/ N  a$ t% @6 e$ u0 q! z$ u9 L
#!/bin/bash+ i1 @5 @- ]4 t( c# R0 \2 @: o
IPT6="/sbin/ip6tables"- v& t+ n, b9 L
PUBIF="eth1"2 h' v, j" ]+ f* D, ~3 V, M/ G
echo "Starting IPv6 firewall..."$ j+ c8 \7 p: B5 \* c) k( p
$IPT6 -F
# ?6 M. Q, r/ D# K$ Q) M$IPT6 -X
: a. o5 _/ A+ G: e2 `$IPT6 -t mangle -F
/ z: S6 o1 J7 T9 V' F$IPT6 -t mangle -X
9 V. a; Z) P; f+ P  s# u. n, q* S0 E3 }! i6 b& Y
#unlimited access to loopback
/ l, t3 \1 ]) J* O$IPT6 -A INPUT -i lo -j ACCEPT( Y# ^- C% d8 U; j& i; c8 c0 A. D
$IPT6 -A OUTPUT -o lo -j ACCEPT
# \) M  ~1 z+ a. _1 Z& l# S
, b) V, d- {" n) X4 `# DROP all incomming traffic- |, W' @& t1 _, D# k5 Y* R: X
$IPT6 -P INPUT DROP, T/ H. j; v9 q, X' b+ c+ H4 q
$IPT6 -P OUTPUT DROP
, m  [% {$ W" h! S+ s  I$IPT6 -P FORWARD DROP
5 @6 {8 K- a: M3 |# t* A$ M9 W, |4 v( @6 G  |+ M7 y
# Allow full outgoing connection but no incomming stuff! Q) D7 X! p/ L
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT" Q  P, {8 I+ Z  N! l) V# s$ V, K
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT' N: F; z# C) w  ~' P

9 X' y) x% R, x# allow incoming ICMP ping pong stuff2 L+ Y3 t( b; y' _8 l
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
8 M  C  B# x6 u% B! z9 o8 N. i6 w' ~$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
; F) k* }+ v9 S: Z" t4 Y+ {
; G6 C/ n8 W2 A: c8 Y############# START 在下面添加上自己的特殊规则 ############
4 u, _+ B4 q0 P. \0 K% m### open IPv6  port 80 5 [& [. {0 G* S
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT. G/ D% S0 `, T1 O
### open IPv6  port 22  y' Y" R7 w- R2 C: D3 K. T
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT' v. R* A1 S9 @- p
### open IPv6  port 25
- m/ n4 t; w/ |#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT7 f* x: s9 }4 I; e
############ END 自己特殊规则结束 ################! |. M0 n' D( s. ]' U8 l

! f( h7 v3 A! H  j/ I5 a% g#### no need to edit below ###0 l, n* {% j) l" c' H3 J$ a
# log everything else4 o5 u! c& N4 D5 m' B, q2 s
$IPT6 -A INPUT -i $PUBIF -j LOG- c: j% G' E( ?! I  a
$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-10-5 08:51 , Processed in 0.057678 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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