找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17720|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
1 |$ j5 {* A0 q* \( Q; x8 F2 L$ D  a1 v, r2 _
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
7 u( w/ l: W; z/ K. b/ D$ Y ip6tables -nL --line-numbers
8 m5 n2 f6 u2 r& _$ i4 v" S6 c0 k( g* R
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
3 N/ Q3 o8 {4 C* h1 F
( O& l, H$ v& ?2 @4 x. L# vi /etc/sysconfig/ip6tables
. A# F* C; {" U5 J可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
; [7 U' L3 {( G9 k7 g* v. {$ P  g' |4 g7 Q*filter. W6 T6 p4 s8 o0 g/ t
:INPUT ACCEPT [0:0]5 O4 c3 b/ {: _. L$ y# s( t& s
:FORWARD ACCEPT [0:0]
0 _& w9 |) E( E:OUTPUT ACCEPT [0:0]; c  e" h/ _; h$ |5 r# s
:RH-Firewall-1-INPUT - [0:0]
# G. d/ O7 \9 O, C3 L# `-A INPUT -j RH-Firewall-1-INPUT
- x% O8 b1 Y! ?7 Z6 `( D- M' K7 ^-A FORWARD -j RH-Firewall-1-INPUT1 a) h0 D& w0 U( C% k6 U
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
: F% P- z/ J9 H) Y( Y. }-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
( U# |+ l0 s$ i-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
3 U2 g! B0 V9 Q: v' s- B1 a-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
& u( k$ x9 v  h: l: w-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT, Q, ], C& k/ B; e3 A  O! X
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT. @" W% L6 ?; I: Z) y
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
' {: ?5 W3 T  g! U-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
+ R3 Y  x' g* Q. g; f5 b, D* D2 W1 Q-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT  q2 i, n7 r( b# `2 V- _
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT; D9 ~: w" a4 t3 }. a; H9 g
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
$ d9 O  A7 q/ t; y( j0 A( FCOMMIT
# ^  [* i" p5 G2 V! c. d与 IPv4 的 iptables 规则类似,但又不完全相同。
$ h1 i& J4 r( \3 Y4 s" L* F) v2 i$ t. V/ x" |9 z
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
* h& N% n+ w. H  h9 s$ l& {; N$ c8 W* Y$ R4 Y8 {0 L3 [8 p
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
% b& \% l$ p. J-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
. K# e1 l; f, U! D- z8 d0 s
* |" |3 h& k: q要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
4 y* h# j3 f# h: X( e7 K: y& P; j* D% Y9 Z6 T+ O
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT- o2 V1 U1 ?2 b& ]& z6 [# q
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
4 _% G( r4 |* @6 s# g3 h# }同时针对 tcp 和 udp 协议开启 53 端口。
7 Z2 A6 t& W' a% ?, a- y/ G; g5 n- t3 m7 T* x
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
9 x: H& O* {- F# w: H
9 l# K, a! U: _# j8 S; d-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
; [" k; B4 Z; M要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:# {+ \7 U$ M. W  b' q

5 F3 ^3 _/ j$ c% C% p0 D. b-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT+ I6 {" b! Q6 W; L. X
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:( c  o5 r. f: E( q

' F8 d' [* G! S2 t4 V, z-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
: s* C  F6 o: V+ g4 v& p* nCOMMIT% G+ {# p* G8 {4 Z) n' }2 }
改为:) P+ A9 p$ T8 Y1 s( k9 h1 U

: ^: N2 |8 y+ L2 F7 Q7 G9 w: U-A RH-Firewall-1-INPUT -j LOG* n/ x- d) g) i$ ]: B$ t% H" S
-A RH-Firewall-1-INPUT -j DROP
3 F: f$ H# z5 Y7 q7 @/ ]COMMIT
  b& Z8 w* }" h# `6 E% _保存并关闭该文件。然后重新启动 ip6tables 防火墙:
& A( M* n1 D5 h  ]& ?3 B! G% z. V; a; x( k: o4 Q
# service ip6tables restart7 ?7 s9 I; A1 q5 z4 H
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
/ s& M3 d9 o' [! k7 h/ p' \" d6 b- _5 C) R- q6 A
# ip6tables -vnL --line-numbers
2 f$ U4 F9 P2 d$ q0 |4 Z5 X输出示例:# I1 c, y% T% `. M! v

) ?5 q9 \' v  U% V; s; X! u: q1 nChain INPUT (policy ACCEPT 0 packets, 0 bytes)) i# K6 i! i1 q- {, Y/ ?) `
num   pkts bytes target     prot opt in     out     source               destination5 K! E! h. v- z$ M, Q5 m
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0! u! Y% H  p9 b' {' J
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
. [$ w) Y" a. W6 a7 Mnum   pkts bytes target     prot opt in     out     source               destination) U$ t( z0 N9 m  o: h
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0* ?# e4 n8 {, G8 u
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)# U- o% V, i* i& V6 h6 i) `& ^# a' A
num   pkts bytes target     prot opt in     out     source               destination
# \& F1 z* }7 a$ O  X. R/ ]Chain RH-Firewall-1-INPUT (2 references)8 A0 ?. x( D/ A# F) T7 o7 k$ y
num   pkts bytes target     prot opt in     out     source               destination3 {( H" U1 h) p4 ~2 P) G/ |
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/02 T( v% t( j( C; y3 k9 ]/ c* F
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/07 C. _) P, E- h
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
  [) ^! u! |: l4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
, W) ~8 K# h. k& Z, `8 ?5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:53535 a. t( n, S. b% ^2 B
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
4 }% J; m$ z% U" t, Q7 U7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
0 h1 z2 S* w# v* r4 k: J8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000/ S6 H$ W4 i/ z! \4 j5 p
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02+ s' n+ W; a) }. k: V
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:220 s& e' s7 n% U2 Y- @  I9 V
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80( D' Y9 k: b2 _8 B" c# R
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
* i9 M* s$ ?+ F7 _! h8 Z13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
$ r0 x  m- j9 l2 D4 C$ j" b14      18  4196 REJECT     all      *      *       ::/0                 ::/0. h( t: `8 Q; j' j$ @% g) ~
IPv6 私有 IP¶. @" \# u$ |! q4 K. ~! w
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
+ B# L- `7 k+ H
8 ^1 y4 u4 F2 h" @" C# N$ U4 J不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。- V; D+ x3 w% e5 V1 a
/ x' R) l  g1 f/ S0 l7 e
自动配置 IPv6 防火墙示例脚本¶: C2 r- p1 K7 }* N6 [2 f3 ~
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
% q5 Y) |7 `& z  M( M  u( \- Y4 _" D1 B* D0 k# `' G. s$ O
#!/bin/bash/ [3 J1 o! a+ g9 y( g& C% @
IPT6="/sbin/ip6tables"
* W6 W+ B* ?6 O: E! m; ]& s" XPUBIF="eth1". j1 {1 R$ x3 _( p0 Z0 K+ ?4 v4 \) B
echo "Starting IPv6 firewall..."
6 G& ]! A3 }# r+ ~9 v, p0 o$IPT6 -F
% {; q! Q; r/ E- u, S/ u, t$IPT6 -X$ Z; r/ v! ]5 Q4 X0 \
$IPT6 -t mangle -F
% |' o1 W/ ?, i$IPT6 -t mangle -X
4 Q) ]/ ]/ F/ e0 s6 |9 P2 j
# S$ h6 [1 F! l1 R4 A) S* g: N#unlimited access to loopback8 `/ l1 ?$ L8 K
$IPT6 -A INPUT -i lo -j ACCEPT
0 v5 I* s) S5 L  A; l  L0 b$IPT6 -A OUTPUT -o lo -j ACCEPT# c. w, r4 ]; g' G3 M, y/ Q, D
8 Z4 H" N8 T6 g' _+ S$ O
# DROP all incomming traffic; B  s" c( f/ b- `5 L) L$ r5 @
$IPT6 -P INPUT DROP6 N' h6 A3 X! {' R" y, ]* }3 L
$IPT6 -P OUTPUT DROP/ }( u: }4 S, A/ N  a
$IPT6 -P FORWARD DROP/ n8 ]: Z7 O1 L8 C& V% Z

* z7 A  R' d9 ]: C3 g- ]5 A# Allow full outgoing connection but no incomming stuff6 e0 l* U: O4 w9 j4 B
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT- q6 l& Y. F, ?0 j( B( H3 W: Z
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT6 p1 S% x6 z$ S0 Q
: ]9 v! c$ P! E0 i
# allow incoming ICMP ping pong stuff  [8 Z4 P; g' v9 z! c* A+ B% H: ^
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT6 a3 x8 p# d$ ?, U( |8 j
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
2 V0 [( f8 O& N
; `4 k2 ~; Q8 ^/ b############# START 在下面添加上自己的特殊规则 ############
( j. E3 _; ]% E  d7 r3 o: U### open IPv6  port 80 ' X) n4 V/ D( `6 `3 w/ c
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT" a' o% l8 ~8 }+ L+ h* h1 o9 j
### open IPv6  port 22
+ J# ]4 x& y) f# u: {#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
7 o0 x7 y  S+ Q. c2 x0 b### open IPv6  port 25
3 W. t" P+ {: |; k#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
- E6 A- k7 V: W/ ^% {9 l% T; l############ END 自己特殊规则结束 ################
1 h4 S" H7 g6 m0 E2 y1 E1 X9 E$ H4 A. P
#### no need to edit below ###
9 u2 Y$ S8 o. ?3 z6 h# log everything else& H0 u3 n6 M7 n; A; ~9 o: t
$IPT6 -A INPUT -i $PUBIF -j LOG, M& S( M" t# x" z
$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-4-22 16:34 , Processed in 0.073912 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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