找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14899|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
3 x9 j! a6 Z1 V7 s6 `) @
# T0 N' W7 \/ ?( L) }在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
2 S; M4 T; G" E  k ip6tables -nL --line-numbers
: g( {: T0 S, i$ [5 Z9 S* M* B& d. J% l8 M5 d2 P/ _! D2 S
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:- M0 }! i& l) H2 ?- y' ?) ~; L

. C/ m# r5 B6 y, O3 c# vi /etc/sysconfig/ip6tables
: w9 y3 F2 A6 R4 {可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)9 t/ W8 v! R! J: L7 m
*filter
; [% ^1 m0 N2 }2 V7 y. J:INPUT ACCEPT [0:0]0 G/ S9 I7 R) U/ S
:FORWARD ACCEPT [0:0]. z: r/ Z& I. o* K
:OUTPUT ACCEPT [0:0]
8 t4 G! X4 }* _) ~7 |$ w4 d$ @:RH-Firewall-1-INPUT - [0:0]* o$ K% B2 }9 M9 _" C/ j/ |
-A INPUT -j RH-Firewall-1-INPUT
' U2 l8 z; o  `# h, h-A FORWARD -j RH-Firewall-1-INPUT
4 h. O" U2 `# r9 S  Y' V3 o-A RH-Firewall-1-INPUT -i lo -j ACCEPT$ C7 [( U1 i  h- P; m, J
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT: z- z, B3 d+ P& c& i; j" e. `
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT/ k& z/ x( B+ s* X3 c
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT6 L) p7 E" }1 f1 U2 t
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
+ N6 G# [( w7 n& ~7 @-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
( n( Q" L% o' p( t3 }% {-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT& O  k% T! j! k" E5 W( D
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT/ d9 x3 u/ l) \% `. A! x
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
+ C+ t$ `1 C  ]$ A# O-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
6 g0 s! _; E  ?1 E-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited" ~1 \3 X7 Z5 ?& O! T1 F: {/ {  y
COMMIT/ V! Z) v" I3 u8 p0 ?: r# v2 Q. o
与 IPv4 的 iptables 规则类似,但又不完全相同。
3 s- O$ U/ |3 ~5 y& \. t8 ?6 z% u& k4 E
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
( ?- O4 _! }6 x
1 o9 W" E9 b4 `3 U% r-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT& P+ B$ `) |, A
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。4 y/ n2 Y0 E7 s# C7 ]2 e3 w
" c; }# u- I+ z, b5 w
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:& k- h/ ^& |' F8 ]7 u$ n: `
3 v$ k; K& ]% s' _2 s
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
) K1 \( u! Z* F0 M-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
" c+ E2 v! T# W+ @) o7 A8 t3 p同时针对 tcp 和 udp 协议开启 53 端口。6 t( P# O; u6 A9 E
7 D; T& b4 `6 |; i
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:2 M$ ~8 U# |! P* p
8 o. E# T, z$ u% i6 B3 A& d
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
* g" b4 j1 G( S9 q  D要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:3 i% v& l: D6 y' |7 X" w# p
  _6 L  m# _8 {) n$ s# ]
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT' l' o; x, C$ {9 C! J
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:5 W0 i1 M9 p+ y% X7 H

1 K  S4 t$ T) B2 e( {3 O-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
9 N2 f! ]0 ]  [4 dCOMMIT/ ?  I& i: `7 H: c
改为:( [2 H8 P: r  j& C0 O$ p5 p
: O+ S- T0 G4 u: m7 M& h% \
-A RH-Firewall-1-INPUT -j LOG$ B2 }& |0 q+ }0 Y. Y9 f
-A RH-Firewall-1-INPUT -j DROP: R, `+ m3 O1 E# P# [
COMMIT0 X1 H* X1 H2 `' G8 F) w
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
3 W$ _! L  T$ {/ [% r, S) h7 {/ u3 R- L, A4 [4 U+ e
# service ip6tables restart# A: [2 F& ~4 b. h& Q5 [. x
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
. |: J' Z; ]* c3 U* m/ X. }
) i/ Q, U  C5 r. v* V: h( S# ip6tables -vnL --line-numbers
( X( g+ L0 n  V+ ?9 O; J输出示例:
) _0 b: j8 c# P
6 W, W3 A0 Y, \7 I7 K: I* Y9 HChain INPUT (policy ACCEPT 0 packets, 0 bytes)9 p3 E9 a4 N) N: r! K
num   pkts bytes target     prot opt in     out     source               destination, A) }  h5 u3 F
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0! D9 A7 ], x( F" j
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)1 C, e  A$ F4 a" v: p
num   pkts bytes target     prot opt in     out     source               destination  u# y) p7 ?. b  e
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
' {8 B8 j, w# yChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)5 k+ Y; i* B+ R4 N& q. c
num   pkts bytes target     prot opt in     out     source               destination
% q7 j! T, a# ~9 e" H8 d: b- Y- OChain RH-Firewall-1-INPUT (2 references)* v4 D: p' K. H% q  E. ?- D
num   pkts bytes target     prot opt in     out     source               destination
# q1 U  u# |; |) l( Y3 m. U1        6   656 ACCEPT     all      lo     *       ::/0                 ::/04 s: a$ f* F& x3 V: K) J
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0" I/ L  ^( ~- ~6 G
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/04 S7 z4 a3 q- _$ U3 O3 l
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0  _/ g9 U4 c4 W# ^, S4 P  |% L, D
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
* w- m1 i6 O$ ^. _  Q# G1 ?* B6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
" a+ c4 z  ?  `6 d0 D* A7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
1 H6 S# U4 h7 f5 F8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
2 ]! M3 _- i6 \. X# H, V7 j9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
- N6 a7 r- J% O# C* Y5 N! S10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
5 B. L0 X0 e4 @" Q, A11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
. P: C3 u+ h1 j: \9 ]; Y& y12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
- A6 P9 v, O- s$ F# W8 C5 G. L13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
7 O3 K' L3 V9 ~# [# k: n/ H14      18  4196 REJECT     all      *      *       ::/0                 ::/0& C% V# d( V5 Q
IPv6 私有 IP¶
9 O% n3 l; a! i4 u0 ]IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
8 F, G) {: {/ k; t, s5 `( I# J3 O  @
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
" K- X4 q$ n. e
4 o( `1 N1 w/ m0 T自动配置 IPv6 防火墙示例脚本¶
$ P9 M8 K1 \5 D" y  Z5 f与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。; Z1 D+ o, P  ?  e
9 o0 f2 D" g5 j" E6 Z  U
#!/bin/bash
" p% u4 k, g% |IPT6="/sbin/ip6tables"
9 N- h) V/ y  x* x8 j, pPUBIF="eth1"2 B; \$ y8 [0 Q5 O
echo "Starting IPv6 firewall..."
( d; [6 C8 T& Z# |$IPT6 -F
# }" k& u& @5 H- I7 ^$IPT6 -X
! G- ]7 S# P0 C$IPT6 -t mangle -F
0 `, t: b4 \3 ?) u$ @. {, a$IPT6 -t mangle -X- K( U+ ^! R9 y  {. z0 s

; [1 [* E; y9 d4 a#unlimited access to loopback+ k" o: q1 `& {% Z. v9 h
$IPT6 -A INPUT -i lo -j ACCEPT
+ L) S' y! I0 r+ s* }9 v9 x, Y$IPT6 -A OUTPUT -o lo -j ACCEPT6 H& V0 i+ n( Q/ P6 r
1 m  A) f& c5 e) Q. ?( ?1 [
# DROP all incomming traffic
( _5 q9 C7 E1 V9 @$IPT6 -P INPUT DROP# n: H1 T% G/ }) s# T9 k/ t3 o
$IPT6 -P OUTPUT DROP  x7 }2 ^% T2 U+ R1 A1 z
$IPT6 -P FORWARD DROP. Z7 U( [0 K' [- ~2 U2 S
4 c5 W: C9 f. Y$ u5 b4 D+ P
# Allow full outgoing connection but no incomming stuff
: F& N: Z0 h3 z9 m" Z$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
3 ~& L7 `  J. c( F$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT5 l+ y& q6 H' K: w# _  k; ^* R, K

7 {* c2 Q" O/ J+ J8 J# allow incoming ICMP ping pong stuff
" L& W4 w1 {: F2 w( W4 U8 _$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT, u3 T5 ^8 H2 H8 b0 G3 X
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT  U  v+ t7 G+ E2 _  |* H; j1 |

. g4 O9 S+ Q, y6 U! K############# START 在下面添加上自己的特殊规则 ############' {7 D9 n( i4 {- W. C4 C# W1 k2 W
### open IPv6  port 80 9 q0 R5 f' Y7 `. m! {' e- o
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT( o" g. j$ C3 Z/ D' Y
### open IPv6  port 22! Q& p0 x$ \7 G6 l( J
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
2 i% z! B) q  E: i8 s### open IPv6  port 25
8 `2 Z# p4 s$ }& M5 ^#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT0 O0 e. h: |) `; y5 x' b& n* S+ z
############ END 自己特殊规则结束 ################
. J0 L  V/ x5 E3 K& ]; m' C& G- C2 n8 v, g# G9 Y. B  O: L
#### no need to edit below ###
8 @- I. X8 o' b. n; j# log everything else3 _( D; G; \/ b$ [  v
$IPT6 -A INPUT -i $PUBIF -j LOG- ^7 x' R! p8 u7 E, T5 S
$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-4-12 10:50 , Processed in 0.076334 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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