找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18396|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。8 j8 M7 b- M$ l1 `; Z

! \! k; U2 x% ^在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:+ `% I( K3 J- ~2 i$ z" k
ip6tables -nL --line-numbers0 r. r1 r9 D. ^# x4 C4 U( c
6 {; C1 v3 Z3 x/ p5 Q& Y% D
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
  E& p' W5 A. Y; t
7 D4 X  s* ?4 R- D; r1 H# Y5 V# vi /etc/sysconfig/ip6tables7 C. ?& ^0 O, _- m
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)7 z6 h( {3 r; Y( p* `9 e) h: n
*filter
1 s& J: Z/ ^- |+ h:INPUT ACCEPT [0:0]" f: \3 g5 `" M5 c9 A" E+ l
:FORWARD ACCEPT [0:0]
7 E2 m3 @6 q7 b* N8 _/ S:OUTPUT ACCEPT [0:0]
# {+ c6 F2 g7 W% I:RH-Firewall-1-INPUT - [0:0]
- t7 Q% s$ l* \+ V/ W-A INPUT -j RH-Firewall-1-INPUT
1 W; r+ |/ t, j2 k$ L-A FORWARD -j RH-Firewall-1-INPUT
) C1 N* m  i& U2 ?% B5 @6 g-A RH-Firewall-1-INPUT -i lo -j ACCEPT. W) U- z( u' A1 W* t. z) O
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT& t7 q# j! [) O( K2 b
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
9 _  ~, q6 Y% T$ r: n' r5 E( t-A RH-Firewall-1-INPUT -p 51 -j ACCEPT7 G5 {( v" k3 T0 C- D- E
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT5 M  K  M4 p- K3 Z
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
- E4 \: F/ z) t6 G8 k* N7 {  ]-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
; q* ^# t) @3 v-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT* c8 X% V! d0 V. h! ~
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT( }: o6 [3 A' U9 U6 l4 r
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
4 s- Q" G. r4 H, \-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited; s- T, @! z- E$ |! P9 T  h0 d
COMMIT( @% m! u7 J. ]5 n! n! _
与 IPv4 的 iptables 规则类似,但又不完全相同。
; ]! n( u7 h3 j0 ]' Q5 Z1 X- l1 R1 K& }+ T
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:- ^+ C+ \' k$ Y1 `2 Y1 g8 O0 g1 K

! D0 s2 s9 r* }-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT$ I. |7 [/ g, `2 T
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
2 T( T5 Y# _4 J+ M' @3 H2 ?  u7 N# f% E: D: W* I5 c; \
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:. j1 N: P, e, P* ~5 ]3 i
* V/ E0 j# ~: n% z& j
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
+ R- F- F$ a3 I; ~! A-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
+ j' X( E+ |% _- @4 l同时针对 tcp 和 udp 协议开启 53 端口。. Z  B9 W+ z' x; E% x

  x/ B+ |# b" L要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
* v3 e; z# }% _0 d
/ ]" R9 h% J, g# U5 {-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT% r4 J% p- T2 y  [, |; Q
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
. a4 R9 V1 {9 \( z: S; X; L: d$ }4 L. U$ t2 p- F# k
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT' ?* V/ ?  J2 p$ f6 s/ B
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
/ L9 l2 ~0 a& `: {" y0 u7 _5 |1 {2 h' |
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
5 ~& i0 j9 O6 O  t# V& m0 Y% P( {8 [COMMIT8 C: F1 W$ o5 V2 ?" O$ B
改为:
0 x' w! ~2 t, V; O& @* t2 C; R
6 K% n9 ~- u0 v% t-A RH-Firewall-1-INPUT -j LOG
) p  G3 G" c8 @3 u-A RH-Firewall-1-INPUT -j DROP
% L& `8 ?; S( r( ZCOMMIT
+ l$ k$ W/ @' B' B$ V4 `  b5 Y保存并关闭该文件。然后重新启动 ip6tables 防火墙:
8 _7 ^, Y, U- l3 T% N5 O" I" w, B% }) L" F8 w2 T  \+ u
# service ip6tables restart5 f# ^6 O5 `9 q5 b6 f
然后重新查看 ip6tables 规则,可以看到如下所示的输出:3 w; G* s( |, K  r& q- Z
$ r: D# M' v2 n# P& ]& R* C
# ip6tables -vnL --line-numbers8 T2 W1 g  s& Y$ t# ]
输出示例:( N0 w& F; |6 W- l! @

8 n# p  ^% E  y, j' f' lChain INPUT (policy ACCEPT 0 packets, 0 bytes)
0 A% m- t* W3 p" pnum   pkts bytes target     prot opt in     out     source               destination& G1 H9 q( m+ m) `
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
3 q% i! i9 q* w0 i9 _Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
, f/ l7 a' ~8 a# V& dnum   pkts bytes target     prot opt in     out     source               destination
! A6 I9 Y- W6 ]& W! R$ M& Z( @7 q1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/00 Y+ ~3 ~$ u/ S# C8 i: C+ W% [
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
3 h* z/ k4 |2 }7 Lnum   pkts bytes target     prot opt in     out     source               destination
, ^, f/ x2 P3 \9 |Chain RH-Firewall-1-INPUT (2 references)
4 J8 ?2 E; e) v* n0 unum   pkts bytes target     prot opt in     out     source               destination
, L5 H  ?3 N. {1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
, I2 V& q3 h4 ?- J& S2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0" L% C; W- b. h- P8 O; ^, R
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
+ |% V5 E' |$ Z* }9 G4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
- ?' S6 T' h2 y* s( j5 X6 H  c5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
# z8 D6 F4 k  Q, s6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6311 A  k4 a5 `2 J  d9 C4 V2 a
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
  U, c  D* j% N  L' t* D6 ~; ?8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
1 j- z8 ]2 e7 ^1 F8 S$ C9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02& f2 q% k( F! `
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22' I: v( e+ J8 S* }* e! s! I, i
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80& ?0 @# v  b0 n4 A5 A* W- L
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53& e( j' N9 ?9 ^- k
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
5 H" h$ _4 e: m+ d) r# m# S% q6 i: S14      18  4196 REJECT     all      *      *       ::/0                 ::/0" y' R* G$ t0 C1 K. u- M7 g
IPv6 私有 IP¶
( l# Y! K- a( v( h9 |- WIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
5 h* [- g: v: K6 H& ]; Y% N" |  }, l* d( i
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。- j; U7 `4 t* ^! y

1 N- U! ^! K4 i自动配置 IPv6 防火墙示例脚本¶
% |1 _' Z! @$ n8 S0 s2 ~. R与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。' _& J& ?6 R! q8 {
+ L% k+ T4 q3 S0 G
#!/bin/bash, n2 P: u7 p0 ^5 V/ I; T1 Q7 b
IPT6="/sbin/ip6tables": C  d# x0 n& t: [: _$ _+ O$ I
PUBIF="eth1"1 K2 U, T7 }  _% C3 X& [/ a
echo "Starting IPv6 firewall..."
; @# r9 [7 q7 w) F0 q1 h$IPT6 -F
9 f0 ^& t2 p0 ]( C, ~$IPT6 -X6 R0 d. C6 e$ Q% s4 i6 c! q
$IPT6 -t mangle -F
1 ?" \/ V+ l8 J5 L3 {( r$IPT6 -t mangle -X
7 Y1 X( W9 C  g/ d5 _% ]$ L( N! M2 \% F9 y' R# c$ C6 ]' v
#unlimited access to loopback& n7 V, e; A' u# W/ K6 t
$IPT6 -A INPUT -i lo -j ACCEPT, f+ _2 \/ Z; k
$IPT6 -A OUTPUT -o lo -j ACCEPT6 J" [/ p/ @! C3 e7 w
5 Y7 _' _7 J7 l$ I. ]  `9 n- k4 E' `
# DROP all incomming traffic
- W# D% x. ?) _: n$ r$IPT6 -P INPUT DROP0 _! |! {, ~' |
$IPT6 -P OUTPUT DROP/ L  y+ l3 @3 ?8 j
$IPT6 -P FORWARD DROP
$ W/ s7 N. Y6 w& e0 O0 x: G3 i! f0 p$ j( f
# Allow full outgoing connection but no incomming stuff  g6 _- r' P6 ?' p. g/ c: e; ~
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
. O9 Z# |5 \9 g2 h/ g% F( L% g) K$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT7 e1 j5 |8 ^  V; |
% v2 ^$ N3 m' l
# allow incoming ICMP ping pong stuff
2 l& B) x$ [/ ]$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT. b; o1 I" v/ N# K
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
: ]+ [9 i! F( E( B0 y# @* V- q$ t# |: C0 U* ?9 A
############# START 在下面添加上自己的特殊规则 ############
' A& V6 p3 o: _* |$ G1 W# z" [" V### open IPv6  port 80 2 I6 B+ i8 t, O' J* o% u
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
  h+ U8 @( N" s; k8 [8 d### open IPv6  port 221 k; S! M3 M) n3 U. T) N7 `
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT  W& d% b9 H9 d- p) |
### open IPv6  port 257 @# x8 a  `# F: m" W
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT8 f- U) e' C) q' M, q
############ END 自己特殊规则结束 ################
; \0 R" e( A# e$ ?: Y4 W1 x- Z3 Q% ?% @$ k* s* m1 b( n. i. D
#### no need to edit below ###
! I+ X/ p. {5 j, s9 ^% n# log everything else
* V8 n' f1 A* b' N  |$IPT6 -A INPUT -i $PUBIF -j LOG: @) N  `- X# ?' C
$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-6-25 11:28 , Processed in 0.045736 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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