找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16251|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
2 d+ q+ p  A0 g6 ^" p$ z2 Z, X3 k7 v' U' a% g: _% y
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:( w" V  [6 v+ z$ g9 O
ip6tables -nL --line-numbers3 @9 o) U0 j: N: b/ b8 l  e

6 q- q5 G: O/ I1 N$ {使用编辑器编辑 /etc/sysconfig/ip6tables 文件:0 S! r7 n. ?  G/ G; x

& b1 {. O2 Z, F# l) v& j7 n; k: ]# vi /etc/sysconfig/ip6tables& q: G4 }7 ]: o8 s; P
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)( v  j3 a% z1 X$ U1 r* B  r/ U
*filter
) P8 Z  i" r  e* z! S' Y( F; Y:INPUT ACCEPT [0:0]
) q1 t% z3 b/ ^# V9 o+ w3 I:FORWARD ACCEPT [0:0]( ?3 x* X, p9 F8 i
:OUTPUT ACCEPT [0:0]- z" f9 y% m) K2 M, y6 N7 V
:RH-Firewall-1-INPUT - [0:0]; g/ r: r! a1 N8 E/ v- ]/ F. B
-A INPUT -j RH-Firewall-1-INPUT
3 P, q, q6 b* _- m; v2 }( n-A FORWARD -j RH-Firewall-1-INPUT& U! y  F6 U2 E
-A RH-Firewall-1-INPUT -i lo -j ACCEPT, E. S1 P- |% }8 `1 e( G
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT: Y- {  i. A9 I3 |
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
/ e* S) \) t1 Z-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
/ z, R; L2 v& ~, x# ]-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT: z3 f5 v& }+ a3 v; O
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT1 u8 d) K; {' j
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
7 x+ H, K' c5 F' E( m0 U-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
4 g0 F1 o* Q$ c, W8 w. s- ~-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
6 k- c) ]# ^9 f9 I+ r" q+ B-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
$ W+ i$ v9 E; ~; i-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
8 K. s* L+ N% M" ZCOMMIT
+ C# z! ]! A* |% f, |! t& h5 [: L6 I与 IPv4 的 iptables 规则类似,但又不完全相同。
+ H% C" j: Y1 [" v0 W# \
) O, R( ]$ g- U5 ?/ J要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
  W7 Z: Y/ r: y/ _7 \* P% ?7 n. f9 ]0 x
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT0 j6 I4 n. v- h; S
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。! z$ K9 p) a/ [# z, X% o2 c0 d4 P& M
$ i7 H: _5 B& }: v" @
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
' J0 M( C6 G/ m; ]4 C
& a; ?! X9 B1 j1 {. J* }, t+ B# A$ ]-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT  Y) ~$ V1 _4 ]% n+ t, j! W, x2 j
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
$ e3 C% U9 _  P: v+ y( N同时针对 tcp 和 udp 协议开启 53 端口。
. K2 `" R$ k0 e9 z, C/ t. X! Y" c* p/ H* k' k1 v" o
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:; T; e! O' r* P7 O

! e8 B; o7 ^: i& S5 ^-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
5 J, d# a1 n7 D% f& b要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:, _, u' M9 W& ^

! D% z. {# F( T8 R! p( y: R; i-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
( A4 `. K- \1 S对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
3 S5 i0 e( X8 H! g9 |0 B) [4 h6 f( ?
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
% x9 f$ J5 o* @* i* Z1 WCOMMIT0 F% b+ l) m* d. l5 R( Q' d; T
改为:
! P" |6 O2 E0 B
, Y% t" C3 N- |7 j-A RH-Firewall-1-INPUT -j LOG, K- v1 E/ n* J. l4 f* b8 Q
-A RH-Firewall-1-INPUT -j DROP
9 v3 g3 Z( |# ~, SCOMMIT
/ S1 e+ r2 b1 H9 O' s7 x保存并关闭该文件。然后重新启动 ip6tables 防火墙:: P& A; a) Q; T1 X
5 e! S% \) W) Q" m$ E# l
# service ip6tables restart
7 R$ c- o9 \( T/ |然后重新查看 ip6tables 规则,可以看到如下所示的输出:3 |: ~. |1 v& N# h- z! b, x
- D7 F* r* o0 `: ]; L. |
# ip6tables -vnL --line-numbers! @1 F1 M: Q4 A1 k# b
输出示例:
, u& l) c3 ^0 l1 R( J/ _6 p
' N( e$ N) }* _* o* k% H1 HChain INPUT (policy ACCEPT 0 packets, 0 bytes)5 F- H& v1 e  [
num   pkts bytes target     prot opt in     out     source               destination
+ S  G+ t' f$ l9 W: T" i1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
2 Q  I* ]4 _" r" X) Q0 j( l, L. cChain FORWARD (policy ACCEPT 0 packets, 0 bytes)% `9 Z* R* n" m- E! V7 F1 p
num   pkts bytes target     prot opt in     out     source               destination
* M8 r2 \* U% H( S0 z1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/04 V  ~3 o5 T; r2 F( r1 H# ?5 p
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)! o6 P5 B% i; S
num   pkts bytes target     prot opt in     out     source               destination* B7 g: `7 ~& J, T' f, |
Chain RH-Firewall-1-INPUT (2 references)
9 Y8 t% l6 r6 \4 }- m8 ?6 onum   pkts bytes target     prot opt in     out     source               destination" |  F- A) K8 p. S( p: W. M; m
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
9 q6 S) W# p+ U5 B" V4 N& p, U2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
, X2 i/ Q* @; B; y. Z3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
+ S/ e# _! S3 c  g. B4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
, P" C9 a% f. Q8 y. }2 B3 T5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:53536 m7 }; _/ v, r: t8 {( j; N
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
% J! l" N. S' N+ q7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
+ H. b  d# `. o. E' y& ^% E8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610005 e4 I. w) n* ^* R/ O
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
8 ]2 N: {$ V# \2 d# Q5 T10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
/ U2 I1 M  m; g/ ?9 L- e8 q11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80/ s- V" P: c- y" ?
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
7 q, n& N* l* o( D7 Z13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:539 G0 E& Z& |3 N: k. J" ]
14      18  4196 REJECT     all      *      *       ::/0                 ::/0" `, K) f8 \( @( Z
IPv6 私有 IP¶
# I/ y! u; ]$ e. t3 m  x5 bIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?! v/ [4 N; E$ t( U+ {8 `
( r  \5 u- K3 R9 t% Y
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
# @" H( b2 |" X, U, O
& _1 z( l" m  O/ j3 A$ e( H自动配置 IPv6 防火墙示例脚本¶
) P6 Y1 [8 R+ ^0 M$ t与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。6 i/ G0 v2 K6 D, F, E, ]
1 d9 s! H- |$ F+ a3 Z- s$ v' l" ~, U
#!/bin/bash
  Q; p! @2 L% @' cIPT6="/sbin/ip6tables"- p0 f" y9 F5 {" j) W' Z" O
PUBIF="eth1"6 i3 J+ ]! D; _8 S4 E1 ~
echo "Starting IPv6 firewall..."
" L6 [  Y/ j7 U2 ^% Z4 Z4 |0 ?# L2 I$IPT6 -F
4 k- \3 i7 j% |0 o: V$IPT6 -X
2 |' U. P+ T( W1 P) M9 `$IPT6 -t mangle -F
/ F) }) w. x) |+ k- u% R. N) O$IPT6 -t mangle -X
' v+ ^: f/ |# w6 G5 \* Z0 U$ f$ a' G- b  D' Y9 N6 W" ?# E
#unlimited access to loopback  T' l0 |0 j$ l6 @# c- m
$IPT6 -A INPUT -i lo -j ACCEPT
# o2 C2 K0 j7 |$IPT6 -A OUTPUT -o lo -j ACCEPT
4 D$ w, A+ }0 K
* f  ~6 K" ?) ~# DROP all incomming traffic' P9 M2 n6 B( v& I; y9 W9 f
$IPT6 -P INPUT DROP& g3 U% j$ x' F* [- M) Q% I  Z
$IPT6 -P OUTPUT DROP" m- H* m- P" A6 ?/ i- r
$IPT6 -P FORWARD DROP$ Y6 e- z. E9 x' z8 a  N0 w

0 H3 I. O1 x7 A$ i( L# Allow full outgoing connection but no incomming stuff
, }4 S5 x9 }/ u1 ~- I$ w$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT& T9 [: `! j  \2 v% i  V! \
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT- b$ \& M" x+ \- `" i

. n1 Z$ O% C2 Y  P/ I% k& F' b# allow incoming ICMP ping pong stuff
1 V3 A  B( h, h$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
% Z! |' ^- u  D' C" w0 C$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT0 f9 G, J- v  O; k0 c
/ x9 V/ v2 H; {0 z/ Q* w7 `& z
############# START 在下面添加上自己的特殊规则 ############( `6 T2 ^6 A5 e: J
### open IPv6  port 80
( M; r7 W5 g# A4 ^, S1 h#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT, M4 y% a# O) B( k' Z; r0 `
### open IPv6  port 22
! O! w' L# c' \4 Z9 P6 h& x) O/ @! {+ I#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
; a( P) C5 @4 T4 ^0 J* n- F( E### open IPv6  port 259 w2 ?7 _+ n  q( b  t$ x
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT( j' d( R0 p6 |* O
############ END 自己特殊规则结束 ################
* p% Q& @, s' \& p8 o" P2 {4 [' ]* \/ o4 ?+ O: V
#### no need to edit below ###0 d" g& m. F$ p7 e9 [
# log everything else: n6 J0 p) ]) y0 l, V% t
$IPT6 -A INPUT -i $PUBIF -j LOG1 [& \' ]. [$ e4 Z( t& W- C, l
$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, 2025-11-5 00:57 , Processed in 0.066835 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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