找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19118|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
9 K2 ?" E3 }( C6 H
5 ?4 H2 \+ t& o在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:% Y! t* r8 i  w: B" T
ip6tables -nL --line-numbers  B/ Z6 s( O2 Y# n, t: `

- g  K1 ?% m' [0 g- _  w# @8 J; L使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
7 M6 M: j& F" h3 Q( e( h0 N6 Y% o+ k3 }2 p9 b. q  E. U5 T
# vi /etc/sysconfig/ip6tables
& F0 H0 T- i- q. ~$ z0 A' P可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)9 z  ^5 |. {/ c" l" g8 m: x
*filter! [$ `5 g4 r0 @) L9 F; F4 U6 U7 D
:INPUT ACCEPT [0:0]0 A3 l3 y1 c; W" F5 a# s" A' I. U
:FORWARD ACCEPT [0:0]0 q# h: n1 u2 O0 V" e0 f
:OUTPUT ACCEPT [0:0]
, N. \8 H" b3 Z  L$ b9 a1 \2 `% p! Q:RH-Firewall-1-INPUT - [0:0]
! r7 a0 d! k% b1 x: o-A INPUT -j RH-Firewall-1-INPUT
1 l4 N3 G, ^; w8 E( ]-A FORWARD -j RH-Firewall-1-INPUT
5 j9 u2 ]$ v. y7 v; G, X2 I-A RH-Firewall-1-INPUT -i lo -j ACCEPT
( V6 S& B: {1 {1 C- V2 I3 k-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
/ r9 |) B, o5 c2 U, m- s- X-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
+ n8 D, @2 o/ C1 x: ~  v1 M0 H-A RH-Firewall-1-INPUT -p 51 -j ACCEPT0 @4 Q' B9 u" x' X
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT! ?% C( Q! \- K( L
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT5 t' f' J1 W9 @8 R$ e
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT( g3 `: v: ^" [# g0 X
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
: d3 b: t/ D$ _7 j4 S( }0 B-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
/ r8 f6 m1 ]' |-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT7 l4 f% b- m9 Q
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
1 L4 @  L- p6 d8 r6 uCOMMIT
$ p0 q. K7 |& r. a6 h0 Z与 IPv4 的 iptables 规则类似,但又不完全相同。
' T  X* \* k. W. Q! c
" U3 w$ Q9 p: v. @% K要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:5 \$ F2 F  c0 J5 i$ G( w

7 [  g: y* h4 C! G-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT  A  I' z3 K1 S! Z  n4 B- H; m( s
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。" u# X; }6 X6 J5 h2 Z) V, I

" Z$ b4 Y8 A8 {( \要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:1 z& c/ }, ?- M% G# @- F, ]

6 C7 S  S7 _% r9 I  F-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
$ w1 n  \+ U$ T+ L# r6 ~-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT  ^* V/ u. A; i
同时针对 tcp 和 udp 协议开启 53 端口。& `# r5 i3 A$ [4 u
6 Y6 u# v5 c8 c  B% M
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
4 B  ?# @) _, L  Q8 b/ D1 C" |
( h+ h. Y5 `  Y4 d-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT+ T) W8 b/ s6 @6 z
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
: o$ L" l% `4 {/ }7 Y
# J) s5 N) t" P1 f-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
  J, c* e+ H# F4 j. Z对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
; R% p4 e  R+ u
. J* \* f/ g5 |* ]  x-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited  _: l( A: d+ a% g* p# f5 r
COMMIT8 z9 K1 D& f: B- v) q: z' m: a9 s: V% g
改为:
8 U9 A" m3 D. p8 s  {' N) L
3 g, `( k5 h8 d# \5 R  A$ a& \-A RH-Firewall-1-INPUT -j LOG
4 i% X" E6 d  G+ s: ^7 F-A RH-Firewall-1-INPUT -j DROP% Z( H3 J; m( d
COMMIT4 E, ~- q" s- }' Q+ g* r8 S
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
; @3 d6 C$ M$ `4 x* X: g7 j9 P* ^  y* ?; h- x' u
# service ip6tables restart' Z& \/ {* f; Z5 l- u+ i2 s" d2 u& P
然后重新查看 ip6tables 规则,可以看到如下所示的输出:6 h+ ]' ~. `+ ~# w& P

' z" {9 C# X8 v4 a  z: p# ip6tables -vnL --line-numbers
% E( t  U5 C% R8 c9 M% b! S输出示例:
7 |2 `# [2 C& r" E* d6 }% f% Z) e6 L+ D% a" e, d* A
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
. h" q- \" N" R3 fnum   pkts bytes target     prot opt in     out     source               destination! I3 ~! M! z: e  z6 U7 d
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
: t) G2 Y  i) V0 \Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
" c( K6 D1 h8 v  p# ?2 T- Jnum   pkts bytes target     prot opt in     out     source               destination
, G0 p. \$ [9 F. r+ L9 q1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
/ [- y2 C) m% LChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
, J4 C( g' x* E7 G  Gnum   pkts bytes target     prot opt in     out     source               destination0 X" A$ l( d/ [4 b0 j
Chain RH-Firewall-1-INPUT (2 references)
7 a6 Q  y% X. t: ~% T9 W' Pnum   pkts bytes target     prot opt in     out     source               destination
' z; K. M# B( q' N( `1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
) E& d0 y3 Z1 U/ x' W0 {8 m2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/01 [1 I) N# |; q: a$ @( H
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
: a  m9 u0 a2 ], T; k( Q8 ?$ `& E# B4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
8 g2 x8 N7 I6 q- ?5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353% z3 W0 K6 \/ s# {% d2 d! X
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
8 v, `7 M! A3 o" B7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631' ~* o' C; L2 |, b
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
: J: s: p$ P( ]& d" _9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
( Y7 Q# l; T& V" k" _- c10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:229 @" i& y! S& _
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80$ G. \& D  ?7 M9 E. Y) |$ N# `
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53  {5 e+ ]- I4 c$ W7 H
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
8 E1 I2 R, n$ q# h0 u14      18  4196 REJECT     all      *      *       ::/0                 ::/0$ H: J" E1 J! |6 R2 {9 m4 L
IPv6 私有 IP¶  c' D6 j3 U* U3 o5 r* q
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?* J: Q, K; X. t/ J. S+ x% |; E

3 ?9 l5 [1 G2 a; p$ u不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。$ n! R9 b9 Y$ I" Y

) {. c6 \- D1 c. s1 A1 }自动配置 IPv6 防火墙示例脚本¶2 Q+ m1 G% h) B  }8 u4 G$ F
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。4 Z) J# \: ?5 |$ {. @8 [

: l3 ]) `( B8 F& F3 P" O#!/bin/bash
5 k* e9 a$ C; \7 EIPT6="/sbin/ip6tables"4 R) q' l/ \  g, o6 z
PUBIF="eth1") V, B/ _7 w. X6 `3 P/ S1 d
echo "Starting IPv6 firewall..."4 X- r$ `$ q# {2 L, @: d3 Y
$IPT6 -F" E6 D* m% {, ]" P* @# R0 F9 a
$IPT6 -X
6 S3 k3 u1 R8 k0 p$IPT6 -t mangle -F
, J! f$ A5 ]& i' T  k" Q$IPT6 -t mangle -X
5 P/ w& Y( n- l+ W5 b; `9 }; G0 D6 {: Z& T$ g  {1 Q
#unlimited access to loopback  B' H4 C  f7 U
$IPT6 -A INPUT -i lo -j ACCEPT
& N; R/ g5 f8 u7 Q$IPT6 -A OUTPUT -o lo -j ACCEPT
) \0 D& s4 ]* _% K1 F1 v; \. `$ L1 L, x+ f4 i
# DROP all incomming traffic
# N- `( Q- x& K0 V$ l  I$IPT6 -P INPUT DROP1 o4 w$ c! @+ [) M; T% D
$IPT6 -P OUTPUT DROP9 q' D* D$ }7 y" I$ u4 J
$IPT6 -P FORWARD DROP* m' g- u0 _3 X; r8 q% V- ]9 t
# o6 c  ?4 Z0 T0 |% M! w. d. v
# Allow full outgoing connection but no incomming stuff
% z  x  h9 F$ m$ V) E5 S$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
! i, {- b$ [; S" J3 b# Y9 n$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
6 t) e- ]1 r& G0 r2 m
* `0 g- g6 p1 G) k# `3 B6 V& z5 D# allow incoming ICMP ping pong stuff
3 r8 s4 y% O) X' j& {- x9 j' \$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT& ]8 B0 Z0 @4 S" d! i% j
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT" i! }/ q3 W7 L& T+ A% }6 a: u) r

- C6 T+ w8 ~. ^* f############# START 在下面添加上自己的特殊规则 ############
; w4 J0 A4 x$ d. I2 q### open IPv6  port 80
5 D. \5 H/ l- {9 x: w#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT2 f2 [0 P2 u5 y2 b/ q. O# [
### open IPv6  port 22$ Z# M* N6 _) O# _$ V! c
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
% K3 w5 ?4 Q# b3 {3 x( a8 i### open IPv6  port 25+ U' n" b/ p3 _3 K7 q' v# w. b
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT, X6 l2 q4 o0 h& N0 x7 v* }0 Y
############ END 自己特殊规则结束 ################  Y6 o1 L  g) k6 E, K9 |  ^+ `

* l1 E9 j7 G- h5 X+ M#### no need to edit below ###/ v% l6 G! m+ b- H8 Y8 }) Q- n' X
# log everything else
: U$ {  l/ B7 _$IPT6 -A INPUT -i $PUBIF -j LOG
7 h( e) a, D1 E4 [) `: K6 R$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-15 02:03 , Processed in 0.054953 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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