找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15844|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。, `+ y/ l+ M7 r* S. O

8 S5 H' a6 _* R在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:* d  Y" n$ V. D' X$ ^
ip6tables -nL --line-numbers
* H+ Y/ ~' x- t9 [6 |" {- {5 g8 t2 t( F  M8 U, W
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
+ I! e; W$ b2 _6 n7 W8 R
, Y* c' W1 ]/ E1 x4 k# vi /etc/sysconfig/ip6tables1 Q  R- z7 b5 m5 r/ P) K6 R: M5 o
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
' h; x: \1 c9 ?( p*filter6 G. ?. U5 M8 Z! }0 ]
:INPUT ACCEPT [0:0]! r% \$ f# c3 @$ @. o
:FORWARD ACCEPT [0:0]
( @: ]! ~' Z% U:OUTPUT ACCEPT [0:0]
# b. @7 s! y4 A# _$ a+ K:RH-Firewall-1-INPUT - [0:0]
6 M) J: G: t4 T: y-A INPUT -j RH-Firewall-1-INPUT: `4 T9 |4 x+ t- J
-A FORWARD -j RH-Firewall-1-INPUT
1 \8 U0 U  L6 m4 {" H-A RH-Firewall-1-INPUT -i lo -j ACCEPT! n5 v6 h5 U, R
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT/ _6 v3 D, c/ H7 [( n# X6 a+ q
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
' p6 A% K1 O# }/ P( M-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
% o" l! }0 l: M" W2 X/ y7 V-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT" o8 L6 v. k# X& B- a7 f' B
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT$ P  h) l) L. a; o6 S  B
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
9 q* D8 `0 V7 p9 T1 {4 P7 {/ v4 y' t-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
+ \4 J3 A$ q! M7 T* F- y! |6 B-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT" }% K5 k. ]: |+ p. v' a, }
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
7 ?' |9 k& y: z; E-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
, x; ]( P! I3 p9 d. YCOMMIT
6 u) i6 o) n8 I与 IPv4 的 iptables 规则类似,但又不完全相同。7 {( A& b9 ]) x3 v7 ^
/ {0 B3 G6 e$ N5 e7 f. d
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:+ [3 y' d9 O3 T& `7 j4 D% p

) q+ N/ v' O; E" i; Q-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
; q% n+ l* h. y5 B6 V% d; H0 B-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
) ]1 T- ?$ T# V
6 v8 @1 s) d9 q1 |8 `+ N9 R要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
( T. M' L+ ~8 H2 _4 j
- H+ z1 i! J0 j-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT5 c9 B) K7 ~% [
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT+ M3 K5 I4 ~$ u  g
同时针对 tcp 和 udp 协议开启 53 端口。+ }' D5 M# g2 |& c/ ^# A- x% T* y
$ p9 m- g3 y' R5 g" T9 O+ y% k
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
" p8 J  C! x+ c. u. t6 `& ?: W. Y9 i" F5 G6 X$ A1 h& J
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT; t$ L% x2 _' p: t4 ]" O
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
! D3 n, O2 u6 M2 H1 R1 d( ~: ]& O
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
1 d( L5 m0 _( B1 r对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:; m( k# Q% \% x0 H0 D
4 s- A3 A: g- v
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited' S- j7 F& t9 ?/ A- O, e$ Z: S  r5 z
COMMIT
  u/ @0 p* c- V2 [- ~- F改为:
  {# B5 e* P: Q! F, i& A
6 S. V0 K9 w" r* @+ B  @  o-A RH-Firewall-1-INPUT -j LOG
4 T# |) c8 C7 \* K& D) }-A RH-Firewall-1-INPUT -j DROP
( f/ b1 C  n& {! a! ~/ A0 ~COMMIT
, S8 Y  J4 }/ v5 L8 x8 |& S保存并关闭该文件。然后重新启动 ip6tables 防火墙:3 s9 x( x5 D$ O: q2 m0 h

/ b0 f* a* K- p, `# service ip6tables restart% S; S3 p1 @/ J
然后重新查看 ip6tables 规则,可以看到如下所示的输出:4 H% D; y- V9 |! y. C
2 X/ Y2 J6 m( q7 X1 w1 x& z
# ip6tables -vnL --line-numbers
+ l8 n  v& d# D: ]5 j+ T输出示例:
; x0 f; \" K* }$ V4 {
3 F2 k2 a% _( vChain INPUT (policy ACCEPT 0 packets, 0 bytes)* @; u, P; |5 {6 B
num   pkts bytes target     prot opt in     out     source               destination
* u3 G, ?6 `* O( S1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
7 u* Y" g& N( b2 n2 Y+ i+ `Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
+ I& {) c3 t5 f$ _num   pkts bytes target     prot opt in     out     source               destination
, I; [! Q' l0 C8 F: p+ i+ E1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
6 Z/ k/ t- }& P4 a4 D2 U$ d) ^Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
+ M4 Q- K4 b* xnum   pkts bytes target     prot opt in     out     source               destination+ @, u  ?" S3 C" v/ _4 M; ^
Chain RH-Firewall-1-INPUT (2 references)
' e) K3 j8 `' ?# ]! a: ]0 Bnum   pkts bytes target     prot opt in     out     source               destination
- x! Z) P6 p' A3 W, r5 O! T4 b1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0- X/ l) `: Y& ?* y, c
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
2 a% p0 u8 @. |( S% W3        0     0 ACCEPT     esp      *      *       ::/0                 ::/05 P% \" Q5 j. i* f7 n
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0* F0 W, l7 M* b
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
, q+ p: g- O1 ^7 I- Y+ c2 C6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
1 E$ Q4 x( F+ `5 s5 o7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
, O0 Y+ }; G5 P" N8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
" f0 X2 d/ \. k, O" q; E/ K9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02  m4 l5 g2 \7 @; x! R+ j* d
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:224 d3 U, a- R9 }: C1 J$ M
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
) d. ^; L0 z! i12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
9 O8 f- \- x& w3 D4 D6 C' B( y13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53  P0 l- U) g; ~6 {2 k5 V3 o
14      18  4196 REJECT     all      *      *       ::/0                 ::/0. a1 R0 A) s# b* e
IPv6 私有 IP¶( s2 j1 c$ |3 K) _  |
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?2 e  F* e/ I2 q( Q2 [3 X

1 P* t2 r, L* b* N2 L; e- i: ^3 H不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
4 Q, o4 I8 g0 A7 {
# \. _5 z- b3 J  A2 A" U" \; i自动配置 IPv6 防火墙示例脚本¶' h0 [, Q" [; ?8 ~2 f2 ]
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。; K4 P5 R+ q& Q, r" w/ h
' F9 C( S. M3 W8 L2 {
#!/bin/bash
5 u' |/ K7 K$ j5 |IPT6="/sbin/ip6tables"
3 g$ {2 r7 s) c$ ^9 MPUBIF="eth1"+ p6 L# k( ^' t7 N) ^6 ^
echo "Starting IPv6 firewall..."
; S: o& ^, y0 g. P! {% v& a$IPT6 -F
  K( o7 L6 Q6 S( V$IPT6 -X
: |0 z$ Y" A, N* ?& m$IPT6 -t mangle -F
. ?3 `% z, l3 f4 }# T$IPT6 -t mangle -X
/ B( @( F9 d4 B1 n9 m
* b5 b' O; u4 F" h#unlimited access to loopback$ c. A' W. P6 x! W3 A
$IPT6 -A INPUT -i lo -j ACCEPT
3 O3 y5 |& t" U% ^2 M0 F9 T+ ]( c: j$IPT6 -A OUTPUT -o lo -j ACCEPT
$ H" Y2 {/ n, m* Y; t* l* a; T( z& F) l
# DROP all incomming traffic
/ Q' r! Y- U% `5 ]9 \" L$IPT6 -P INPUT DROP
/ e/ I) C5 m3 `' u7 ~5 m' r$IPT6 -P OUTPUT DROP
7 Q4 F% }4 Q- W- y$IPT6 -P FORWARD DROP( A# I: c, P+ o& U% E, @
- q  ]0 v2 I4 O3 U* v) ~
# Allow full outgoing connection but no incomming stuff8 p8 [3 [" v4 h5 S( Z# I# m
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT# @" C& F2 X. j' K. g" f. a
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT& e* y& H! [3 l$ F/ @

- Q/ b& M5 h3 f5 S4 s+ `+ d# allow incoming ICMP ping pong stuff
3 s! k/ D; B+ L" j4 m1 p$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT9 r) Z6 u' y! ^; K# ]1 [7 |: r
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
1 J9 l6 F- M/ a0 h  v, H1 ?4 X7 x5 V2 m. E3 M% @+ @! {
############# START 在下面添加上自己的特殊规则 ############3 J' Q+ A4 `  c* D/ r9 b) C
### open IPv6  port 80 ) ]$ O, Y) Q4 W9 L2 ]6 Q
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
' E2 C, V3 H7 Y### open IPv6  port 22: ?" l+ Y) k* ^5 z- B$ {2 d/ q6 ?
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
" K) M3 h/ R; h& z### open IPv6  port 25& o8 @+ J8 ?1 |8 u1 ~/ }
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
3 M: z' t; u$ f1 t############ END 自己特殊规则结束 ################
0 j, _# c8 u! I1 j: m* ?
$ D7 a% P- T/ S: W( j! M#### no need to edit below ###/ }4 V* A% U5 B( E& o* S
# log everything else! N0 N$ ]" Q0 [/ V  J8 G6 S
$IPT6 -A INPUT -i $PUBIF -j LOG0 C  a! ~/ K. L
$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-9-10 10:39 , Processed in 0.031100 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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