找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18909|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。; O9 `! @$ S1 O/ |# ]9 f

2 q0 Z$ l7 P5 p: G7 ?" f) r$ }在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
5 s" X* Q9 }/ ]) @ ip6tables -nL --line-numbers& E5 x* B3 Y! d( T0 h

) P6 p# C! @: W使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
8 ]. E0 \7 {; |. x' y9 t9 k9 q
0 p; e0 F( [7 T# vi /etc/sysconfig/ip6tables% ~8 ?, P( Q$ }: `
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)7 f. x. S4 \* w7 _4 b
*filter8 a7 G% `. E* R6 _* Y9 Z
:INPUT ACCEPT [0:0]- F/ T' N2 {1 [4 d$ E& p
:FORWARD ACCEPT [0:0]
  X- M7 n& @8 ^7 N  W+ u# A:OUTPUT ACCEPT [0:0]
  E2 e* h$ B6 U( Q, T6 Z" C:RH-Firewall-1-INPUT - [0:0]
- [1 ?# r# i& U% R2 ^-A INPUT -j RH-Firewall-1-INPUT
8 H6 z4 ~$ j( I% l1 m3 x( c6 K-A FORWARD -j RH-Firewall-1-INPUT
- G$ D* I8 _5 R* L-A RH-Firewall-1-INPUT -i lo -j ACCEPT
( l7 C4 A9 }& L: I$ j! m' p-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT6 \; D1 z7 y! c
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
& m; _& e7 D) r-A RH-Firewall-1-INPUT -p 51 -j ACCEPT6 F0 x- I) D+ M
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
2 L. [/ T2 I' `: v# m0 m-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
7 y1 e0 D8 C. y" \-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT" A& [, i4 ~* H- b
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT% B6 O2 L) G3 c3 V/ C
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT: I1 [3 X' D. V! `" c
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
' A1 n$ |& h4 A( K9 R7 ]7 ]& ~-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
9 A+ M3 ?9 U2 {COMMIT, D7 a1 d7 @( T) Q
与 IPv4 的 iptables 规则类似,但又不完全相同。1 B7 H/ M0 O' v% N; f) j+ m  m2 }

* k3 N+ x, \( G+ w7 m$ U2 y要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
" K+ m( Q0 M6 l6 g. a4 ?: W: }  b
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT4 U2 B. Y8 ?+ S' Z, q
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。6 X6 p8 q; J# s0 j

- q) T2 ~* F0 }: W% J  V% U要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
4 M1 w! T6 t: K8 R$ f( \+ c: ~( g9 ~  v- j+ B
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT, K0 v5 I' [9 N7 c7 x. Z
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
2 R! G. |7 _+ |8 L: `. y$ e同时针对 tcp 和 udp 协议开启 53 端口。/ [" n# |6 q/ q# _
, \" M: M/ @( c" J+ M
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
1 S* S3 I3 {5 ]& E' O! ]: ~2 x) Q6 N
- {" P* w4 o$ f- ?- P-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT  ~; W- o* t0 v2 d8 K5 k
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
3 F4 V# r. D4 e) `( |9 P
: W# g% L7 ^" T* i0 C-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT9 T6 P9 j$ \. Q) \0 Q
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:' q0 P( t3 L3 f  n% C

1 G, M2 d1 l1 Z6 I6 B9 p-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited# m+ n3 E1 e! S% R
COMMIT8 z1 Z$ p4 x! _; ^& _
改为:9 }$ Z7 v; H6 l1 L- q
' A- }: j+ `' ^1 F! g: j
-A RH-Firewall-1-INPUT -j LOG
9 T/ y, X$ Y" s6 G9 R) B-A RH-Firewall-1-INPUT -j DROP' b7 q/ q4 p8 G
COMMIT
# d. {/ H/ E; N( k1 |保存并关闭该文件。然后重新启动 ip6tables 防火墙:6 d0 S( y7 T/ i: q8 l& e$ l- ]
, M6 m! b! z& U) W: M* x
# service ip6tables restart& X4 c. z+ @: B5 A; _: X) R$ D
然后重新查看 ip6tables 规则,可以看到如下所示的输出:( X% i4 J' I2 v" Q; Y* s

# O" Z3 h- c4 y5 {# ip6tables -vnL --line-numbers
. F3 g4 q& H' L输出示例:
& _- G1 Q) c! V# @: s" p* N
: \* v9 z7 h; j/ z4 IChain INPUT (policy ACCEPT 0 packets, 0 bytes)0 N6 `8 i$ W" g2 V+ [
num   pkts bytes target     prot opt in     out     source               destination
& a( Z4 @( t+ x. ~1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
0 h& x& p2 e1 D* L$ C! d% |Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)8 m; {( h/ Z! z; F7 ^
num   pkts bytes target     prot opt in     out     source               destination
+ M4 F  D1 e/ J: p# P# i" a1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0. `3 G: d  J7 j4 e, Z
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)( |1 @4 v9 n1 T$ A+ R7 r' t
num   pkts bytes target     prot opt in     out     source               destination
4 G" g  ^' e" q- w& k5 u# z5 X. CChain RH-Firewall-1-INPUT (2 references)
8 z1 ~) O, G* Y5 e) i3 Y$ a7 d; jnum   pkts bytes target     prot opt in     out     source               destination3 F; F* p* e# f3 s9 `* S* v1 }5 }- s
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
# \! k' A5 c2 u& s9 L2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
3 Q# G& t0 |0 H# U/ u' V& J8 f3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
/ O. D3 z6 l3 B: l# d: S4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0, J! N1 y' Z8 L
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:53530 V" o8 d! |5 C
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
# O4 r& c4 z2 X) C7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
$ U4 B" ]) n( ~* F8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000+ f8 ]; \* \; Y! v
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
8 r2 i  V( p8 l0 v10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:227 q' N+ K$ y- o$ A) Q, A
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:802 u1 k: U( Y+ M8 Y. d& g
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:531 e4 D- n7 q+ ^! {& C1 v; B
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
( U8 j/ [" ]% i8 d) v  K' o1 m14      18  4196 REJECT     all      *      *       ::/0                 ::/0
1 Z4 K3 u' H/ p0 z1 |; B8 TIPv6 私有 IP¶3 ~" ?8 s" T0 T" w' J
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
; i( [: S- \; M& D7 @3 h7 u  k/ V5 g' e& r! P1 S
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。% S% Z* Y7 _) a  Y! ^3 Z

" r1 E' K/ }* `5 q7 j. T0 n% @% Z自动配置 IPv6 防火墙示例脚本¶
4 S3 _0 q/ g! N" ^' A, I与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。- @" u- v% l6 k2 O  E, V  k/ J
2 X) |6 ^3 f" t% @, x, N
#!/bin/bash
7 v' k/ r" J- S# e5 P. I7 YIPT6="/sbin/ip6tables"
, H+ B& E" T' G; NPUBIF="eth1"9 x! \" Q1 w6 s; h8 L" D
echo "Starting IPv6 firewall...", }% }& s% b7 A6 f7 _
$IPT6 -F' X% d1 i9 A+ ]& e
$IPT6 -X) D+ d  C" J" S' f- u
$IPT6 -t mangle -F, Z. ~; h. ^% J0 E) ?+ m
$IPT6 -t mangle -X
( O% f9 p  K9 `1 c1 n: j
# o- B6 ]) |# ]#unlimited access to loopback: x/ c  W) G& M/ ^! O: L3 O
$IPT6 -A INPUT -i lo -j ACCEPT
1 k2 b& b9 G$ @0 z. b  D7 ~; c$IPT6 -A OUTPUT -o lo -j ACCEPT
( Q9 T) p- x5 U0 d! |  Z, u# I+ G# I1 v
# DROP all incomming traffic. v/ c% v# _( H' g2 h
$IPT6 -P INPUT DROP, ~# v, m$ y  |4 n3 g
$IPT6 -P OUTPUT DROP
0 f! x: @. N- s$IPT6 -P FORWARD DROP  ~3 A/ D, v5 b& Z) v
( h; j, _" h9 f2 v; t6 ^
# Allow full outgoing connection but no incomming stuff( A' i) E9 H! g1 Q* C7 c2 M/ B0 v
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT' ~. e  J. a5 y8 S; _4 w5 R, |
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT9 H; j0 E1 V1 s- Q3 q6 Y$ [

, i1 H/ P7 _' R% R# allow incoming ICMP ping pong stuff
- N0 d, T1 `# x# {) J6 f5 F9 F$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT% R0 k) A, D8 m9 i, j2 A; U
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
7 H2 v. s" N3 C5 R% ]0 a/ y
7 A$ i5 X4 h% M# e############# START 在下面添加上自己的特殊规则 ############
, p+ c0 a, d0 k5 I( x4 g' m### open IPv6  port 80 ' B8 ^: E, n. A# t8 |
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
! j& B* P( [' d4 ?" E" R### open IPv6  port 22$ M2 J$ K: d" ]% E3 {+ J
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT+ O; P' d8 A- N  E, u" f
### open IPv6  port 25: ?9 ]: _7 A9 o
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT: C4 ~' D5 O4 m( A. ^
############ END 自己特殊规则结束 ################9 q6 p) {( z. r/ u

" R4 s% s- @, y" l& x8 R#### no need to edit below ###5 z9 c& U- ^9 g2 g) Q
# log everything else
) ?4 F/ q% @; X! [' k2 m! k$IPT6 -A INPUT -i $PUBIF -j LOG* F/ }) ?0 B% q8 u! t
$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-18 18:55 , Processed in 0.070322 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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