找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18697|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。( K, `0 W6 \' V2 a  D" x7 _

  a+ O  k) ~( r2 @% M) d在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
, Z  B3 L3 n' ^/ Z4 H9 h ip6tables -nL --line-numbers! V. H" ]( F6 i# _& b/ G

* K+ |; L- C: W# ]: L4 F使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
8 r6 z3 s8 s8 C$ y2 }$ ~, r- k  C6 L6 V- I2 ~- i
# vi /etc/sysconfig/ip6tables
% }) U& Z  w& I! w3 Y6 d可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)! T  ]( y- |6 l: d) W$ {3 ~$ ]% d
*filter
! A: O0 ]) m5 g  }; E- A& w$ `: K" ?:INPUT ACCEPT [0:0]
$ Y2 _1 S# i: k0 e9 D:FORWARD ACCEPT [0:0]
. E7 ~. h- B9 A( O:OUTPUT ACCEPT [0:0]
. j3 ~% G: X- ^0 X% ]0 A2 [:RH-Firewall-1-INPUT - [0:0]
; u6 B) g. i9 t" E+ ^-A INPUT -j RH-Firewall-1-INPUT2 A% H" t  o5 A) a
-A FORWARD -j RH-Firewall-1-INPUT7 _! m' V& r& J2 {" @
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
# }& T4 O0 a  p; w1 W" r-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT, p& [1 O0 @/ \& C# H% T; Q
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
+ M' ?" C% ^5 i+ ~-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
( m0 W- z) D3 z' r8 l' S-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
+ [2 M- j, Y% h-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
: V& ^$ g% b4 d2 }% B( R! g-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT$ [8 [6 I* e3 f" b8 J/ a
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT* ~+ m) g/ w2 C
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT5 _& e7 X0 Y, Q, G6 N9 }8 k# q
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
# J) C' z  X6 n+ Q3 m-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited3 Z1 V4 d+ J* N5 x9 D9 Z
COMMIT" H9 p+ |. W4 ^4 B* e
与 IPv4 的 iptables 规则类似,但又不完全相同。( I6 g7 h: \: C  h- A- X& }7 I

- V7 F/ ]( |" |2 G) p' I要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:& Y/ U4 D8 e/ \! j& x! L

4 Z' ^( [) b- |$ r% D* h( A-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT" a7 w, T( S: [: o, _/ W
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
% L6 b7 i( y/ W# `, t
& i3 \& @; t6 P: P$ T9 r) }( u要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
8 o) z$ q. U$ _6 Y, A$ J! o
3 u2 X+ t& o" y0 e7 l8 V-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT3 \5 v( Z& c# X! d% C# {% n- w
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT+ a, t. _! J( U& q  W( G: ~8 S* e
同时针对 tcp 和 udp 协议开启 53 端口。2 H2 K! q2 Y% R5 p8 x$ r9 }  g4 t
# ~' y: q8 |; F0 A
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
( F1 p0 e8 e+ k  y- h- s8 b: w1 f" K
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
/ H7 k: U2 {3 K$ v( t要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
' Z" Z, t5 z9 a( T  L- o/ p/ u" Z$ p5 S  V0 R! L
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT; C9 o3 B& k" C# j' B
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
4 e! g; I; W+ {1 P9 L! y* q$ G$ F9 Y& V7 K1 W
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
( M1 z8 S( C# L8 M4 i/ l+ y" ]COMMIT8 S+ G4 T9 s+ ^. O4 t& V- V* q' }
改为:
' n$ a* f. S* o$ r, T( s) D  W" j) n; R) T! T3 E; A1 q
-A RH-Firewall-1-INPUT -j LOG
' T7 f8 T0 x' l; c- `-A RH-Firewall-1-INPUT -j DROP
0 R! J5 n5 u- Q) i5 `COMMIT
# U! Q4 v* h6 t, Z保存并关闭该文件。然后重新启动 ip6tables 防火墙:5 ^: T$ U5 [# h) T* b/ \3 N

5 }% Z$ S; p( H# `* b. ~, Y, X# service ip6tables restart
/ u) C  g5 d. H然后重新查看 ip6tables 规则,可以看到如下所示的输出:
& S5 G( W: {, h# k, N: [( W
3 I+ d: K) R0 A* h4 S) W% \# ip6tables -vnL --line-numbers
* b7 M$ B0 _: E0 r& v6 w! k输出示例:' i5 F0 k* E* a6 D
' Y. _( d9 ]# s( g& f! z
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)9 S. W* i4 |$ K  m* ~' k; a2 P# V
num   pkts bytes target     prot opt in     out     source               destination
7 k; l$ Z; o& w/ B) c, B1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/03 N: T& {# R# \  ?1 G7 E$ e
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)$ ~& p, P; r% v' Y- y4 @- O+ _2 Z5 `
num   pkts bytes target     prot opt in     out     source               destination# V& K# V! W9 r7 ^' n
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
: c! l- e9 Y: b% y; b. b9 u9 nChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
4 Y8 y; X) T5 H- _! a3 Nnum   pkts bytes target     prot opt in     out     source               destination
, d/ x( G1 r/ _1 P  aChain RH-Firewall-1-INPUT (2 references)
) L9 ?) y+ \2 dnum   pkts bytes target     prot opt in     out     source               destination- r3 J) D. z' B9 r
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/05 P5 n1 y5 e, z. }1 ~
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
3 a5 e; T, z. I; }3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0$ j. G8 x$ f5 j3 R6 `4 l: Z
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
# T5 ], a; `9 ^+ |. j5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:53538 x# }6 c8 R0 @4 Y
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
, C  G$ v) L% m3 a, L) w7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
0 r# F) L- F4 Z) p( k6 c8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610009 \  h- L! V! l* d" l; Z$ R
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02- M- |! h# x/ n  M, u% z% L  y# q
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22, z" a4 J, O6 {# W0 D3 E) v
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
7 ~: z' }6 e. X5 [4 l3 w( w12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:539 f4 i. ^& ]  k2 l& J; a
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:539 A" z1 U4 d6 O7 P3 h0 V7 f# e
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
, ]; z: ?4 C9 R) U: j2 }IPv6 私有 IP¶
; {5 a9 B! T& M/ M& L% H; kIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?7 b+ N2 ?& s, P
# j4 i, R$ j* @& F+ K/ r. _' `9 R
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。- M, M) O* n6 \- _4 D: l

4 G% j+ ]; I$ l自动配置 IPv6 防火墙示例脚本¶0 h+ E* h$ P1 V
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
3 r  |$ d5 C6 U+ ^- W9 z* D2 ]- @0 S- j
/ g- w  D$ Y! ^7 ~7 N( e" E$ x#!/bin/bash
9 _2 X. R7 f$ L. y1 i0 b* IIPT6="/sbin/ip6tables"7 k$ i/ C8 u# j0 I  _
PUBIF="eth1"
8 _4 H9 e4 w% G5 L. q  Techo "Starting IPv6 firewall..."/ E2 s' c0 E4 _+ y0 k
$IPT6 -F
" G. ?5 {* V& q7 }2 R) ]( n% ?$IPT6 -X
' [2 Q3 m+ d; X9 v( W$IPT6 -t mangle -F
% |, e5 U2 a' c3 ^3 X- c5 B$IPT6 -t mangle -X
2 l( I& m$ I4 Y4 k1 E# _
0 n7 y- D! J6 I' |#unlimited access to loopback7 v/ p( Z  a* }& t# Z
$IPT6 -A INPUT -i lo -j ACCEPT8 n6 Z9 V1 z* [; j+ L9 X
$IPT6 -A OUTPUT -o lo -j ACCEPT
4 c( ~# X, |' }$ b8 ~' Z  v0 o1 i' O( L( \
# DROP all incomming traffic1 S1 _4 J  ^5 ?0 H
$IPT6 -P INPUT DROP
: l- t3 [% j/ q2 @$IPT6 -P OUTPUT DROP5 c. ]( u0 D4 }( j% j
$IPT6 -P FORWARD DROP
6 O- T; P- v, P$ k, B$ U  ~, O: w% n0 o; U8 j7 g
# Allow full outgoing connection but no incomming stuff
% Y% j+ [& C: Q8 a5 b/ K4 I$ O$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT  p9 ]1 C; @7 P3 r8 C
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
5 r2 b; r- `% e2 O+ Y* U2 Z' T+ R' w. E; `) F
# allow incoming ICMP ping pong stuff! w2 M0 P& l! _! B" V5 D' r
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT6 Y" ?4 C  I7 M5 Q1 L& A
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT: u) f: I" Z; n0 ~. b

1 P3 G' t! [  T5 `, w9 T/ j$ B############# START 在下面添加上自己的特殊规则 ############. L: j% v/ j4 y* A. v5 g3 ^
### open IPv6  port 80
( T8 v! H- X5 c#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
$ Z" W- z6 I* ?& N, f$ }### open IPv6  port 220 N& h- z: e$ v0 x" T. Z5 a
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT* d' `4 }. U/ K/ L' Z/ D
### open IPv6  port 25
( j6 p; C2 G: N0 j* o( C#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT: G9 _( G7 t2 A/ `) I
############ END 自己特殊规则结束 ################; X# ^. t- E# r$ ^: R

; Q0 j1 I. k- ^! W* ]/ |" @5 E#### no need to edit below ###
6 D; L. ^- h( z1 D4 s# log everything else
, t5 P2 z' Q9 U7 U8 Z3 Q0 c% d1 e$IPT6 -A INPUT -i $PUBIF -j LOG
1 b. ?, \- T) w( y& }* D$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-7-28 20:00 , Processed in 0.087231 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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