找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19208|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
+ z8 y( B9 O+ }& e/ f* B8 w3 b) R! y2 Z
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
  C& n$ Y9 E, y- v* c2 D ip6tables -nL --line-numbers+ I6 j) _1 s( @

9 Y8 }/ [# D; i0 z" V8 v& Z4 D6 l使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
% J% D8 K" [) l: G9 J7 M1 i) `5 ?$ {' K" T, Y: L
# vi /etc/sysconfig/ip6tables3 @( D5 H5 l0 ^$ {6 L5 J  S
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)8 I' u% o% A$ `+ T' g; W8 y
*filter
: a& c* I  S( \' J: ]:INPUT ACCEPT [0:0]8 o3 s. e( q3 V  u/ p5 v4 J
:FORWARD ACCEPT [0:0]: |! N- H$ \+ d9 o$ c
:OUTPUT ACCEPT [0:0]8 r. o6 u1 c4 g8 A2 r
:RH-Firewall-1-INPUT - [0:0]
' q) H1 W1 W5 _$ H) T* \-A INPUT -j RH-Firewall-1-INPUT( ~* m  H5 e2 H1 b! L, S' B
-A FORWARD -j RH-Firewall-1-INPUT' ]9 O# O2 y/ k  u* A; o- E4 }" M
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
: C6 j1 ~) o+ c-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
1 [0 m5 B9 B9 M  X-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
  i3 W7 e& q, V" K% ]-A RH-Firewall-1-INPUT -p 51 -j ACCEPT0 P4 V: \" e* M
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
7 r# v9 e" }, u5 L8 C* ^-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT8 }! n$ I  @8 v! \% X8 t
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT2 b, {9 }5 }! ?: r# [
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT* N0 N, E+ J# |2 ^/ }
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
9 x0 u% ~% v# b$ i2 s9 P# r) X, p- [-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT- U, |+ b( @6 a8 j3 b
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
+ t6 U) `# H+ X, X# o% b. cCOMMIT- J0 x7 m6 u; j
与 IPv4 的 iptables 规则类似,但又不完全相同。, i* F  I/ ^9 [# x5 l

9 f1 Q6 G. B6 q要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:# j  W2 B4 x& w: B0 s
+ S) M- R8 D9 N: h3 g$ T
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT$ F& z. Q; R! X9 a  B
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
# m" c) g2 q3 \' X& y6 W
9 R7 T# v! H9 L+ T3 Z* J2 L7 u) ]1 K要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:7 v% Q. m" m; L9 N* V9 ~

) R1 t& [- U, ?5 a-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
, Z$ `0 R0 c+ ]6 A& d1 H/ p: U-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
. x, B* a3 X+ t5 \; ~同时针对 tcp 和 udp 协议开启 53 端口。7 I8 U; e9 x* p# S
+ l7 T% D0 v6 L: q
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
0 F5 j* E( }! n  g- ?* B4 y$ e+ m1 z: K' I# z) P  X& Q. D
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT8 T3 J, x2 o. \; e* m; h
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:7 Q# W1 A: C/ o: z2 z* l
1 d, E: P- P9 G
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
7 A7 _2 Q, |* V! U4 r1 |对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:* e- E% J( x3 E1 u% v3 s5 \. T
! I+ G) K" n' ^% @' @$ X% C
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited9 [, c! P; m) Y9 X
COMMIT$ o7 e3 L8 Z+ W! @' B
改为:' ^! c+ i6 z3 z2 }' F

  h1 }0 M% C3 ^+ e) b-A RH-Firewall-1-INPUT -j LOG
; ~2 m7 n2 g( q-A RH-Firewall-1-INPUT -j DROP7 J/ h( |5 y+ k" f1 ^  q
COMMIT  a1 O7 J" X! K) S6 _
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
5 `) k& J6 u. y, {3 q
+ ?# J& p4 t2 J9 w8 H# service ip6tables restart
" R' j/ v9 c7 y5 Q然后重新查看 ip6tables 规则,可以看到如下所示的输出:" ]9 o7 {$ z/ n# W9 a% [) Q# T
, E" [6 g: }! _* l  z( p" j, m
# ip6tables -vnL --line-numbers
6 S' V# U% s3 H6 v3 e; j8 f输出示例:
5 j# E% ^+ X" e9 w8 w* j% g) F1 w9 E- @0 p6 A8 Q5 u2 p$ c
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)3 L. @( k. S1 B1 \/ s# @
num   pkts bytes target     prot opt in     out     source               destination
8 d7 j) O: j" E2 t2 A. o: ~1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
* T+ F" {0 J$ u% t# M8 u. S( e& hChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
; s) E0 @8 q6 c0 N0 Unum   pkts bytes target     prot opt in     out     source               destination
3 K0 _, M* O8 H, c! N9 l1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
& X8 b6 t8 B" K" @3 a6 m+ F( pChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes). d3 S& V3 s& Q1 q
num   pkts bytes target     prot opt in     out     source               destination
# c$ }9 ^- @+ Q: x9 {' y. X6 N, |Chain RH-Firewall-1-INPUT (2 references)
' }( z1 z+ O  h6 a; P) j( T- P1 Snum   pkts bytes target     prot opt in     out     source               destination  X4 G# U! o3 j+ Q
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
9 |2 Y7 V9 ?5 z) L2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/07 s2 k, I" R* R9 k8 Y4 F' x- M& T
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/07 \5 f* b1 P! u, K
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
' t% _; R/ m& {% A$ Z5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
8 |. V8 P* Q" L5 U6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
5 }6 j1 C" P. b6 D; s( o2 B3 e- @7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
% j0 p6 \: [/ y+ k  c8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
6 l' F' V$ s. H; S( t( g4 m9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x026 W" G! N0 _6 k  Q% p) _' I
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
! n6 Y- Y" }& N0 _; |11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80/ C; q5 g" z" o% m) s( ]0 ~& l, @
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
, d2 D( P. {8 J& O0 Y* E- G. k9 F13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
- w' L1 n/ f/ X( u14      18  4196 REJECT     all      *      *       ::/0                 ::/0) j! X# k7 [/ w1 C9 v
IPv6 私有 IP¶6 r, A2 J2 v# O4 f2 Q
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?7 O" `3 a3 M7 ]+ @7 P* }
! ?' k: q  Q. N* L5 X! J9 l
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
$ u! j# ?" |% n3 H. }
4 E$ ^( H( s8 x- l) r# q0 X& n自动配置 IPv6 防火墙示例脚本¶
' \3 u" |3 I* G. V6 Q# ~* c与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。! H' Y( y, ?9 \$ t
- I0 Q+ Q* Y8 b( x
#!/bin/bash' e. V7 K/ {" K4 E& g
IPT6="/sbin/ip6tables"5 i' J6 W) X3 a! N+ b
PUBIF="eth1"
4 d' ?4 T7 W8 I: \1 P) [# `4 Becho "Starting IPv6 firewall..."
$ i1 n8 ~% @* O& C: b$IPT6 -F2 l# s, H# G5 @5 @9 A7 W
$IPT6 -X$ {3 w8 F1 w4 s4 Y0 A( N9 |
$IPT6 -t mangle -F& A! ~, g5 \7 E' o, r8 T
$IPT6 -t mangle -X
5 ^9 D" j* z. @$ t8 q+ C
8 w1 Y# X" q$ ^* }" Y' R. b# g: A3 [7 |#unlimited access to loopback- z) n' v' ~, K, I9 T- N, s: _
$IPT6 -A INPUT -i lo -j ACCEPT
2 T$ \0 Y) F; e  F$IPT6 -A OUTPUT -o lo -j ACCEPT
; F9 G8 d7 }0 B% Z8 E9 J7 W8 Q7 e' y( S- ^
# DROP all incomming traffic  ?& T  e; u9 L% M
$IPT6 -P INPUT DROP) h% h' ^9 {4 V# b
$IPT6 -P OUTPUT DROP
+ m6 s' z( i: x3 v# I/ i% ^: }7 f3 s$IPT6 -P FORWARD DROP  f" [# Y4 r! s/ [+ `

6 b$ G9 V  e, l+ [6 W7 l4 I# Allow full outgoing connection but no incomming stuff  t% ]4 K7 e# u" h  A' n
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT4 S! v/ v: ~$ b+ K5 ?8 [5 S& \$ u/ |
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
* B. U' \9 x* z
9 ?. N% y; k! D# allow incoming ICMP ping pong stuff
7 z0 p- y9 b! i  c$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT8 O  a* U9 r" C7 D
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT3 \: u* k0 C4 x& {
1 ^" {* U- D, L/ T! g+ ]+ ]
############# START 在下面添加上自己的特殊规则 ############" k* i( d' c6 P- k8 l3 S
### open IPv6  port 80 $ ^& \9 Q- R9 n! ]0 D% Y
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
6 w/ e  f* V( z4 }+ S6 Z### open IPv6  port 22
: I7 _4 l$ u8 M+ Q& ]2 d#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT' Q: k& Y4 L9 R- y
### open IPv6  port 25
2 b' s& m$ u! t4 c; S. A#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT" A7 T# n0 _+ t" D. Z0 G
############ END 自己特殊规则结束 ################
# V2 q" z! w6 o8 w) _6 T2 ^& G
  R) ?4 f! Y, E% Y$ u#### no need to edit below ###( ~) `; Z4 j# G9 k! g$ G, {( n
# log everything else
0 u  }& |" O, T' T( _  F$IPT6 -A INPUT -i $PUBIF -j LOG6 Y* O+ q, w6 g- g( X, V
$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-9-29 08:32 , Processed in 0.056170 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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