找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19209|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。6 @5 P) B: W) J: d# W
7 t7 ^" H; g' |8 ~# g( t  ]0 C
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:0 P2 Z9 H! V* y! o1 o4 \5 n
ip6tables -nL --line-numbers
8 @; I9 g5 Z) _* ~" D: E9 d, J5 ?$ J5 j! R! x4 `$ F
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:1 C- O( J. q. [# U0 j) q0 t
9 x" _+ [/ g) T) E: ~, ^* q; r  s
# vi /etc/sysconfig/ip6tables8 L  X& `- I6 w/ K
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)' o* K) s# R% p. m  U
*filter
/ X4 R, j' w9 w: |3 c:INPUT ACCEPT [0:0]6 r; x+ W9 ]) K: u5 m* @& v
:FORWARD ACCEPT [0:0], e8 H- t2 K2 o) `' v
:OUTPUT ACCEPT [0:0]
0 w3 `  E: P" l9 w7 C0 r9 A:RH-Firewall-1-INPUT - [0:0]* B5 r$ q; O/ [  i1 G
-A INPUT -j RH-Firewall-1-INPUT
. E( W- H( p' E) s-A FORWARD -j RH-Firewall-1-INPUT9 r) B: q9 }$ p  b
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
" ]: a6 V. J( T$ b+ g0 O-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT7 W# L/ `2 v8 b8 P' O  ^2 f
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT; ~6 J9 n* R2 ^. x' ?
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
4 b0 K( H/ ]" I  b3 s/ q) P* I5 o( N-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
+ q! n0 H, n0 h, w-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT7 Y0 F* {! S  L$ x! y6 ~6 u  S
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT* \! \* a; J6 i  |
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
0 c) _4 M. ~6 y  O8 W# g$ ]" g5 Q5 u-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT$ K% l8 {! w% l* Z' \! H. ~' q& x
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT( q5 J$ p* T; y% M/ E" x/ O
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
5 x6 i1 g; V2 i! ZCOMMIT9 ]4 B: i! X& k# z# ~# Z
与 IPv4 的 iptables 规则类似,但又不完全相同。7 G: ]0 T, s  n! Y/ t
; e( u+ j% _9 s( q
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
4 R8 j: P3 o  P  i1 n- z: ]) |& z4 v
- L  S5 j, J6 x' O1 O-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
' X9 t$ Z# M" L4 z1 `. B( _-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。6 w8 W* `9 v% \3 Y3 W

: O+ h/ b! [3 s1 b要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
" D3 A7 E. n& l' c8 V/ @; b" a' b$ R! a- K: o/ [6 _/ X
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT9 y& K6 z0 b& u. h- M/ D
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
: Q5 V9 i1 J# A同时针对 tcp 和 udp 协议开启 53 端口。
% z+ W' S- H& R& N6 h2 B5 M3 D* o
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:  V) n: o& k. \! }2 r/ Q' |7 ]
) [/ j) R6 u, u$ }; k
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
) s1 D' w3 B9 r# u+ {, K; l# G3 E- Q要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
* m  _- ?( ~( L, _! s
3 d% m, A& P9 j8 P' H0 S$ ^-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
% e- P$ y; B  x1 M& l& E4 o4 i对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
1 w: V5 a5 V3 g; |$ q2 m  w6 f' d& B  t! Y; w! f( V
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited5 X% Y1 Q: x( k  [# M% n, ?/ ~
COMMIT# R7 e9 b8 s5 `4 t, c
改为:: @* U0 H: L* B
1 R1 O0 K8 W0 ]: b3 k; a2 a+ r
-A RH-Firewall-1-INPUT -j LOG7 g& C4 b6 l( F2 d- ?  p8 r
-A RH-Firewall-1-INPUT -j DROP5 I4 j. n5 Y, r, ~- |0 v5 \3 K1 ~
COMMIT# [- \. Q- u* Z5 G& X' b8 t% z: v9 r. Z
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
. l8 W) M9 A" f" |4 D; X6 D4 q2 Q: L5 T; ~7 B
# service ip6tables restart
* I' j& q# s% f1 l( ]: }2 v然后重新查看 ip6tables 规则,可以看到如下所示的输出:/ B2 H! d$ W/ T, N- A* [2 S4 T
# L# x# o9 ]/ P2 C+ m
# ip6tables -vnL --line-numbers  V& @/ t0 Q7 `/ u
输出示例:. T( F: @8 v6 r& K. C
- }: w8 O' z, j" n& E2 F9 v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
' I" {  c9 w/ T; M4 Tnum   pkts bytes target     prot opt in     out     source               destination
5 S7 A! }# P. S) {) ]( _: I( K1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
) P" b3 X. g: g4 ~4 r3 B) ]# AChain FORWARD (policy ACCEPT 0 packets, 0 bytes)/ z* e' [7 L& g0 [
num   pkts bytes target     prot opt in     out     source               destination+ ^; u/ _9 U7 z" T  ?
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
  B8 k+ {6 F# EChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)3 f2 e- x+ R  ]
num   pkts bytes target     prot opt in     out     source               destination7 s( J0 ^/ K- d4 \
Chain RH-Firewall-1-INPUT (2 references)4 T( E6 T6 x) s! W8 F: C$ \) w0 T
num   pkts bytes target     prot opt in     out     source               destination4 \# \9 D; U( Z: ^' f
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0! M$ v! k0 r* g
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
: W7 P" Q' n* d. [+ X8 A0 @2 e0 ~3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0% M- \& ~, X* l1 b& ~1 c; G
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
, y& e' q+ P) K9 f& }$ i- E5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353+ i3 T$ I, N% R
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631) p" @# u, ?2 w" a
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631" H& O& ]0 V7 q2 y& l! y" e
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610006 x* ?; x* t8 z$ \: M2 O) ^
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
. o, K* S# Z$ K# Y0 K10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
3 e# F7 E( n; Z5 d11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80' B$ w* A( D" x7 ?" `- ]% u( z+ s
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
& K: E4 C& J0 j4 N9 F" @: C13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53% A' u- a. H1 G$ ]4 x
14      18  4196 REJECT     all      *      *       ::/0                 ::/0" C( \+ d6 `# e* ?; i' D! S4 S
IPv6 私有 IP¶7 [' D7 N; J4 ^8 q$ y6 I
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
7 X  B; p5 [6 w% [+ y
9 `' ^8 ~8 w" Z# Q不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
/ y& {2 y' [) k+ b; Z1 G! Y" s; j* g2 U' Q" A+ w3 ]* J) x
自动配置 IPv6 防火墙示例脚本¶
/ K5 v7 v$ T3 G5 j* u9 R与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
0 q9 L5 i: w  ?2 {8 X# ^
5 ~8 L' a" u9 F9 Z/ S#!/bin/bash
6 S! U" ?) \- b( G, H. H$ l, yIPT6="/sbin/ip6tables"
5 y8 l* b$ F7 c4 c1 {% M8 g2 BPUBIF="eth1"$ S1 H& Q9 _; J% v7 J
echo "Starting IPv6 firewall..."
- H7 Q/ a( t% ^$IPT6 -F
4 y+ V) C5 @$ z8 [+ K* v2 V$IPT6 -X8 F. E( Q3 g3 W; e( a/ g$ K
$IPT6 -t mangle -F
. `2 m7 G6 V9 @* _0 {- H7 \; z$IPT6 -t mangle -X
$ T6 J! J# B; A' L7 r" n, U' b8 D" s6 |# f
#unlimited access to loopback
7 L9 k+ w& v" l$ x3 ]' a: X! f$IPT6 -A INPUT -i lo -j ACCEPT
' C1 y/ t2 n: P, H- R' H- D- k+ @$IPT6 -A OUTPUT -o lo -j ACCEPT- u& A& {+ {% [- L  V# W

1 D7 N: O! u5 h$ E9 l$ [# DROP all incomming traffic, x# N$ D% s% i7 w
$IPT6 -P INPUT DROP& Y8 ^/ \- _/ l. X
$IPT6 -P OUTPUT DROP4 [: h2 Q* U8 i$ z# H. F3 w$ w; K
$IPT6 -P FORWARD DROP
" L+ s) K3 d7 @, `9 t9 S
! X  _  [/ E1 T9 H0 t  k# Allow full outgoing connection but no incomming stuff
5 R2 n, F& C) m  [  z) i8 Q$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT- e7 [$ U9 T6 ?2 ^" b7 U
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT, Q3 N8 a4 i1 _& m6 r

5 j$ y* |& Q4 j6 }& P( d5 a# allow incoming ICMP ping pong stuff
& x% w  `! B% ^; m$ Q" s- K$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT+ g9 I5 K2 a4 k4 d1 K
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT- m0 g$ M3 f( g

; D8 g& n( P( N8 i6 [- A############# START 在下面添加上自己的特殊规则 ############
9 c- ^# T- V& _) f$ U+ J### open IPv6  port 80
' r1 b: K4 R# n% A! D  L# ^( l5 n# `#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
" r8 z7 A8 P" U6 b2 T### open IPv6  port 22) @8 d/ Z* P3 W% V9 j
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
9 l1 f# c2 m8 }/ Q### open IPv6  port 25
8 `2 e0 N4 P3 d9 e' o, u% I% \#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
) E; ?; `' v( |' Y" u# z( j% O( h############ END 自己特殊规则结束 ################0 _& U6 h. r" H6 d6 k. R2 n
! g4 V% E4 }6 e0 J3 a3 j1 d4 ~
#### no need to edit below ###: Q- O: R1 }) e5 v3 p
# log everything else
6 ?8 x0 C; P7 @4 G& E  g$ b$IPT6 -A INPUT -i $PUBIF -j LOG  I5 `: `# q% M) F! v, e
$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 09:23 , Processed in 0.084675 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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