找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16835|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
+ O6 l2 c, W; [/ H/ v0 \& e8 ~! v7 T/ u% p9 M( U! X, O
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:0 X+ e2 e. `+ W5 f+ z3 {( X& A- K
ip6tables -nL --line-numbers
4 X& V' H: S; h2 \
2 k" t5 i  m; H) p使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
* N. q! s9 Q, ~# _$ H# E6 c5 ~' N# n% ~7 T* o3 S2 `
# vi /etc/sysconfig/ip6tables
' C8 B$ u& R3 E3 l可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
7 |( f$ ]8 N2 w& H: S*filter
) U& S  N! W% e/ g) G. Z+ p:INPUT ACCEPT [0:0]3 H6 {" R. C4 j
:FORWARD ACCEPT [0:0]
& G! s: t5 _: }; B9 ?+ C0 B:OUTPUT ACCEPT [0:0]& t7 A/ X$ k4 N, _8 O
:RH-Firewall-1-INPUT - [0:0]
1 p3 W/ Z* V7 G- e" Q. Z. X-A INPUT -j RH-Firewall-1-INPUT
  V  N; c; V. x- P-A FORWARD -j RH-Firewall-1-INPUT
  b* P4 u: h& [-A RH-Firewall-1-INPUT -i lo -j ACCEPT  G$ _. R9 W8 C* [
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT+ L. k' g0 {$ I6 d
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
" c4 j, Y7 S4 @3 h, q-A RH-Firewall-1-INPUT -p 51 -j ACCEPT& e: U( _4 I9 G: X' l6 D9 e
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT2 Y, x$ ?6 _) {4 ?# `! i! Z5 G
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT. s$ f& G9 i1 M* k& o% G% Y
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT9 b) d* y( v$ ?, l0 q) M/ Z9 f% Y" K
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT& J3 Z) k+ S1 G+ [: B, P
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT5 A# [0 d: ]2 n& V8 [7 U: i8 k
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
/ n9 g% p. u$ D# r-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited" Q" O1 s5 H$ F2 S, r, w0 {
COMMIT
! x6 M' F  {/ V0 }- _; [# D与 IPv4 的 iptables 规则类似,但又不完全相同。) X9 V" s! b/ j8 f

! q9 e: ^6 \, k* \9 n要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
6 d2 ^( {: D  m9 {# u4 Z) Z3 m+ E( W
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT5 k) \: ?. Z9 y' ~/ D2 U
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。# Y3 k+ t- \/ s
2 [# B0 s( Z- A5 g
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
' S4 K4 O8 i2 ?- K( I; ]8 e$ e5 W+ R' G
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
( e* d6 X) x& R9 ]" E-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
( }  u6 r. i1 M  t同时针对 tcp 和 udp 协议开启 53 端口。
$ e/ _$ D, c% j# l. ^& ]
/ |% n/ l1 q' y: j. v% Q% _; Z要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:5 z: l* c, j& X. [& G2 h% G

1 L! r" m5 H) b* c/ D; j2 |-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT" E! d; v, ?! P. q% Z2 z7 B4 c
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
, b3 q  ]1 k  W' Q0 R7 }/ h
4 V' l8 v7 Y" \" y3 g6 d* b7 e-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT; W6 L$ |! I: N* C1 Q. |8 W
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
. J' v$ M# e* J" H2 O* M! W1 |, d1 @* v) U4 P- F
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited! A6 N9 g* \/ T
COMMIT4 S; ~* J5 s7 s) m' s2 I) F
改为:$ R8 U. k* Q9 z8 ?- y; i6 e
. T# ~+ u9 q+ r- _7 a
-A RH-Firewall-1-INPUT -j LOG* v# O( P. z) t
-A RH-Firewall-1-INPUT -j DROP
/ N& z5 b1 ?0 D& ZCOMMIT( [0 f7 u' ]* P- T- v% f
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
1 f% g. X4 L8 S/ r, p4 W
. x" O3 m) r& E0 E6 P# service ip6tables restart
! i  ^. Y1 A/ m然后重新查看 ip6tables 规则,可以看到如下所示的输出:
+ @' t& T+ q; u: n! d
; k% t4 @3 R/ A% T8 i$ o5 ~% q# ip6tables -vnL --line-numbers  Q7 y5 M) ^* h* t, G
输出示例:- }. w: _) m  J  f; G& G% b; g

) x2 y# S( J- P+ |2 H( k( vChain INPUT (policy ACCEPT 0 packets, 0 bytes)4 i* ?# L5 p$ `0 }+ u' _  _; ^' e8 |0 q
num   pkts bytes target     prot opt in     out     source               destination
/ c0 D8 d# }) Z7 ~4 \( Y/ r1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
7 \: |# ]& u( Q$ a5 ?4 @" bChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  e+ V$ D7 _# H: T5 V( ?num   pkts bytes target     prot opt in     out     source               destination. F- J1 P  \. W
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0$ b: @8 `5 H! a/ f$ @
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)& S2 g8 A0 C) L: ?- M4 \
num   pkts bytes target     prot opt in     out     source               destination
$ w7 o( K) x+ O9 k' eChain RH-Firewall-1-INPUT (2 references)6 B' [+ I5 C; Q0 `. g
num   pkts bytes target     prot opt in     out     source               destination
6 @4 x7 K2 N& {( Y% Z( U% \1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
3 e1 a: V2 O9 u/ a( z2 v2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
9 s" g' z  E% c3 G8 Y% a5 O/ ~3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
. ?; `$ V4 ^6 f" k0 C4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
6 A) h# K3 a% \5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
% J1 r5 j' E  ~6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6318 o" E' O5 V2 r
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
% |; J; K1 |; G$ R& [! q. b8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000/ B. k' ^2 ^5 _/ Y
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02) I' h& ^# d; {. C1 \
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
" I, e# u, G, }11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80% x: p$ }* h0 f5 p
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:537 V  h7 a4 J  m
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
. c+ |* v+ |# }$ l) v14      18  4196 REJECT     all      *      *       ::/0                 ::/0! b( |- b) U, O/ Z1 A
IPv6 私有 IP¶2 b) O5 T% [( U' c  T1 K/ t
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?7 r, G" @7 v+ F) P0 c0 Q9 L

% h; N; d3 J% i8 n2 v7 H" r不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
9 A" {3 a+ P8 J+ P
1 @- y" O" W3 a3 X/ Z& ]自动配置 IPv6 防火墙示例脚本¶
, X! ^) L! A# O- l与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
! j8 Y- b$ @7 b# I7 k7 k+ ^. h. @! L2 a
3 o/ I+ ~, h* z2 e0 D/ n#!/bin/bash; c- t: q9 i7 h' J
IPT6="/sbin/ip6tables"
8 }" E* S9 F, x# A6 D3 Y8 `9 S2 @: x2 qPUBIF="eth1"
( B4 \, Q! i* @7 i& `4 v+ becho "Starting IPv6 firewall..."$ f9 r. m- q7 D( s
$IPT6 -F
" v; s, w$ |7 M8 p) b/ D7 L$IPT6 -X' {6 S1 q) v! e$ N
$IPT6 -t mangle -F
6 I4 p+ n, |3 V1 K$IPT6 -t mangle -X% _$ X; w0 R* o' g2 o
) b9 H3 T* L( i. }, D$ f& s
#unlimited access to loopback
6 o6 c: [3 Y4 s% d/ U. ~$IPT6 -A INPUT -i lo -j ACCEPT  `5 V$ Z2 X1 h( j
$IPT6 -A OUTPUT -o lo -j ACCEPT
: a" H$ i! \+ j( {' D
+ s* E7 e% w. A; Q# DROP all incomming traffic
% m( Q* _9 ^0 h, G$IPT6 -P INPUT DROP; K0 A; W3 f8 t3 d$ I* k
$IPT6 -P OUTPUT DROP0 }$ i5 t; o" S7 E: v' f
$IPT6 -P FORWARD DROP$ W2 }& D/ O, |4 H/ \2 I+ F% r

- s5 m0 U; K5 E/ ?; |+ ^# Allow full outgoing connection but no incomming stuff
/ }5 U  E) W) G/ S% b& ?$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT/ d2 }+ J& @" E% |$ S5 ^' i
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
: O( b2 R7 y2 _/ S# }9 _2 H& F+ U/ O7 t. }  e
# allow incoming ICMP ping pong stuff' {4 G: r0 G7 `( m) p7 l
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT3 S6 N" i4 D( ]( P) J$ _5 }4 i1 K
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
, L3 y* ]) x3 j0 o6 P+ p' [
! K  g' R7 @9 _/ M' E############# START 在下面添加上自己的特殊规则 ############
; e# L, O- n2 l' e### open IPv6  port 80
: c. t, ]' t: s9 A" G3 D1 Z9 Z' D5 G#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT- D. [; `/ S- x, w, S9 k
### open IPv6  port 22  H2 @; l/ ]2 h8 A2 ^
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
4 C) s1 F5 x6 i7 Q" r6 L### open IPv6  port 250 B7 K5 p" A2 V, w" o/ {
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT8 k8 {* s1 t1 p- ]; J% c! ~, k
############ END 自己特殊规则结束 ################7 X( ~7 C- F; W' {8 l
- H9 d! I1 T% p0 C
#### no need to edit below ###
  \; t# T9 N! ?1 g. m8 _4 @4 `# log everything else' r* e% P3 x9 @) I
$IPT6 -A INPUT -i $PUBIF -j LOG; c9 w7 i( M2 Q% \
$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-1-22 07:18 , Processed in 0.135998 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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