找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18859|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。: v- m, F. h* v5 g* H" b2 A

0 X$ w& k# f2 |' |5 O( O; u- G9 F6 Y在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:* l. I4 u1 Y( d. n" e
ip6tables -nL --line-numbers
5 D% c2 W  J  F# Q' L5 C, C8 y9 w' ?; p: T+ X
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
; a( l- @; c6 i
* I# K: |+ t$ X- m/ E3 K# vi /etc/sysconfig/ip6tables  |6 l+ X1 R' z% t( |7 Z
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
" Z1 X+ R: R+ |*filter  @/ C# u" P7 A2 P7 A- m, S' M3 O
:INPUT ACCEPT [0:0]
5 L/ L2 l* y* R* p8 Q+ ]:FORWARD ACCEPT [0:0]. K2 {6 p/ a1 a9 q7 |* ~
:OUTPUT ACCEPT [0:0]
5 j$ o" G+ W2 R2 g3 Q:RH-Firewall-1-INPUT - [0:0]" h2 ?7 R% X( Z0 n1 n
-A INPUT -j RH-Firewall-1-INPUT
% h* a6 H2 g* l' {8 F-A FORWARD -j RH-Firewall-1-INPUT( h0 H5 G1 w: s
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
8 B: d8 G+ q0 E4 Y2 A, S-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
6 {5 K( K& U* `# i% ?$ u-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
7 B. d. |! ~/ j4 H0 Z2 B& O1 a-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
/ a& }  w/ |  I0 s* X8 `-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
+ y. Q8 |/ V  }-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT* ~- C5 b% W7 I( |
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT4 b5 i) O- D5 y3 b2 t
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
: ~! L; {; J1 D: [* }" o7 [-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT* T# y* i) D& C4 X6 Y: q
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
1 z* f5 a( ?$ ~9 W9 g3 }% c-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited+ i9 G# f) E1 W$ Z5 n0 p% I
COMMIT- b0 ^/ r4 B6 ^& {
与 IPv4 的 iptables 规则类似,但又不完全相同。
/ U: L! c' p8 b( Y/ d& b6 J! `! f2 _, o# q5 d6 [
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
% U( m% Q& c" ^! ^+ ?3 V. ~  G# \5 Q+ A. d  I2 }7 s* R# o! B6 z& R
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
: E9 m+ Q( p7 q-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。0 ~. t% ?, Y  G9 Z6 f3 v

# z1 v9 n5 H! \" Y7 j要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:# w1 @1 g; |  i3 n

, h6 X% }" U8 @0 U" M/ _7 q) e-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT, a. C* B3 @1 p$ M) ^
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
9 `; P' y0 r, K, I5 J6 ~同时针对 tcp 和 udp 协议开启 53 端口。7 w5 S  O. Z2 B5 Z- I
. L3 z& ]3 c/ Y3 V5 @. t3 c
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
% J6 i0 R& |9 V! {4 @
, r! W' u5 z3 o/ [9 ^-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
& z3 F% g' e1 n" O5 N要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
' [& _; l% X; b* b/ ^8 e
: J8 ~" q+ x' [0 h-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
- s1 v. n# i- G# h% i, m对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:; i  X" `# f4 {. E3 b0 R
# F0 q; O) l* z% B5 X) C
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited9 X# B$ ^0 b' L: U
COMMIT7 Z+ d$ K1 r3 n4 R3 p
改为:
% B9 ~: X! [) s& i+ h2 O" X) {) N( i" w& J0 N  L/ {5 h4 G
-A RH-Firewall-1-INPUT -j LOG* ^& |0 A; ?, ?2 _# D
-A RH-Firewall-1-INPUT -j DROP- h! e8 N# I3 i
COMMIT
; {7 C0 E7 \5 F保存并关闭该文件。然后重新启动 ip6tables 防火墙:0 X7 Q6 s) i: _
) C8 E6 R3 y  N% p$ v& D7 }
# service ip6tables restart
$ X& D( t6 O1 {& l0 Y7 I4 k" W然后重新查看 ip6tables 规则,可以看到如下所示的输出:" u; ~7 m8 }! K+ i* H- X
% C7 J, O( h& W" L% m4 n8 }
# ip6tables -vnL --line-numbers
/ y* I; m- j) z7 m8 ~输出示例:8 J# m$ c3 c) U% Y6 z

$ ~: f$ k- M( a8 i, ]Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
8 e8 \: g# l4 _num   pkts bytes target     prot opt in     out     source               destination9 p* X9 |& O) y
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0. F" R/ x2 [# a) k2 v
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)/ E& O- b: V! G+ U& |& i
num   pkts bytes target     prot opt in     out     source               destination
( G3 J8 s; s: \: y2 ]- R, O1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/01 b1 O. X# e) k+ i
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
* s% m! K# m2 O# I; Cnum   pkts bytes target     prot opt in     out     source               destination. a) m2 y4 @5 V% L' q# h
Chain RH-Firewall-1-INPUT (2 references)
; N8 ]) G* G* }2 A1 C) nnum   pkts bytes target     prot opt in     out     source               destination
3 K, Z/ C: y9 c3 k! y1 h7 t; T1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0& y$ |" p; g" ~8 r
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
0 p8 s- q9 W' ^# |' `9 E1 C3        0     0 ACCEPT     esp      *      *       ::/0                 ::/08 G& R. @% U  k' S) @
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0* T/ J! O; B" u9 ]8 ~
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353: L. n, P$ e9 f! h( U: n
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
  D  ?4 w3 T0 }' _  f# C7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
. G8 a( W* L8 M8 A( X8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610006 C$ R% N2 _1 K& P3 M$ J
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x025 M1 [3 p. c4 [! D( `2 T
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
9 b+ V& F, Z) g# B11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
2 y- ^7 w- S) s  I12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
# s( R! g6 G% [; H$ ]4 `' R- f13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53# b8 Q9 R' L/ Y
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
2 W) @. r5 X$ c& O4 `' H* WIPv6 私有 IP¶7 @' X2 o6 L4 w
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  w  D2 i' a3 t& m0 c& J/ y, m
. y" F9 q7 n8 \& V2 }不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。  @( m' M# Z$ U: M( i  {
5 `/ u. g, N) m4 V
自动配置 IPv6 防火墙示例脚本¶, D3 R5 o% s4 m7 P6 T+ X) t- I% x
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
1 O$ b( z+ F3 @) B0 l
6 D# w3 m& o+ M, @6 f6 u#!/bin/bash& N6 `& }4 q2 u
IPT6="/sbin/ip6tables"9 @/ ^9 n6 b0 D' y0 O+ [! w
PUBIF="eth1"
, d, Q. J, r5 {9 m9 Necho "Starting IPv6 firewall..."
* s$ @1 D6 s0 V3 s. n. z4 [$IPT6 -F1 g9 V/ }" z7 V& k; T
$IPT6 -X
, y+ p! f. k/ `3 p3 C+ `, O+ t$IPT6 -t mangle -F/ M. [0 O1 d) S1 \' b5 y" S
$IPT6 -t mangle -X
2 @4 |) ]& J, l4 i: S
5 U% B4 g" R# b, e0 a#unlimited access to loopback! Y) ~, _3 I% n2 J& ]
$IPT6 -A INPUT -i lo -j ACCEPT3 |( F6 `& j5 E' r8 Q' l
$IPT6 -A OUTPUT -o lo -j ACCEPT: s; m) I! n# o" `. v& U; g+ F
5 L1 a0 b6 r+ I
# DROP all incomming traffic
. F5 U- C% z( O) V: G* n$IPT6 -P INPUT DROP
- S& b& o/ Y0 M9 b4 c" A$IPT6 -P OUTPUT DROP
9 q* C, O) \1 c# a& X+ s' Q" j' k: L$IPT6 -P FORWARD DROP$ o! {6 U/ I4 M% V  P2 B
6 g* y8 [! N  b# X
# Allow full outgoing connection but no incomming stuff
+ J8 A9 I. g# h9 k5 \$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT" i3 K* X7 s# P! F, g3 p! t
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT+ j/ E7 g# J! n; J4 q
* ]3 q6 j* T& L' ~! _
# allow incoming ICMP ping pong stuff6 }+ y  Q/ l1 n- B$ S) F8 ^. l2 a
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT! A! F8 j0 Q- e6 m. u- p
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
6 V9 @1 [9 O' J* \: O
+ v( f7 Y' a& v+ C############# START 在下面添加上自己的特殊规则 ############
6 F+ b3 @+ b* M8 N5 o& Q### open IPv6  port 80
6 e# T# H! k- U#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
, M& `, A2 m1 ^( n3 s### open IPv6  port 22( ~. p9 r/ z8 I0 M7 n
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
! U  Q1 e# @$ m9 \  M  W6 o& |. {### open IPv6  port 257 a! c: b3 k; D1 o: k) S
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT# V6 R& m: B$ i0 i; |
############ END 自己特殊规则结束 ################: ?* W8 M8 h0 U* @/ u

9 v. ~2 W& N8 G  f3 [* V#### no need to edit below ###
* P  w8 V3 I7 F" J0 H8 @( n  O# log everything else
  n) b' f$ j! g5 Z: d$IPT6 -A INPUT -i $PUBIF -j LOG6 z8 H- f% `* E8 W
$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-8-15 07:00 , Processed in 0.041689 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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