找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15520|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。, y: J8 B! ~& }% A4 ]  H* w4 l

% P+ V" @/ I5 B  v" [# B! V5 K在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:  f0 [7 u, f; v2 H3 y( U
ip6tables -nL --line-numbers7 e8 k3 u* o1 S. j4 S

8 C, e5 I4 H" T* s5 u! y. z- n使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
/ w, l( V3 x' y3 F  l. P. v, O8 c& E; M& N# s
# vi /etc/sysconfig/ip6tables7 }$ O1 L# s# N
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
4 r* R& u  P; J( [; w, a  r*filter- l6 ^* B! Q3 L* A
:INPUT ACCEPT [0:0]  e# T( A1 U* ?8 T/ r4 _
:FORWARD ACCEPT [0:0]
' g7 B# v" K! Z' a4 \:OUTPUT ACCEPT [0:0]6 s9 Z" A+ V1 v' I$ `0 c* w
:RH-Firewall-1-INPUT - [0:0]
( i! O4 b$ e0 `4 O! v' {) i-A INPUT -j RH-Firewall-1-INPUT
/ ^7 o/ f. W$ S! c-A FORWARD -j RH-Firewall-1-INPUT2 k1 `6 B, U, V. h7 h
-A RH-Firewall-1-INPUT -i lo -j ACCEPT# ?7 ^2 x' N0 [: S9 D
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
  v- Z* X& S# I, o9 j-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
) X* Y7 b9 r6 v: a8 |& s-A RH-Firewall-1-INPUT -p 51 -j ACCEPT* `# C& a9 n9 ^
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT7 @- ^" ^+ e, `5 D6 O
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT3 q, C8 U  @. C6 S! B' {
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT9 @9 ~' q3 ^. j) L; j
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
: a- u# c' O6 i-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
2 B0 J# E% N. x-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT5 `, k# C* O: P  F* W
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited9 ]! h/ e! T, Y& Y( Z4 ^
COMMIT0 Z6 K! g' ?- u1 V, l! G8 Y
与 IPv4 的 iptables 规则类似,但又不完全相同。
- b0 a# e, B* V* b  n4 H' g) l* C+ R9 n! d: c5 n- ?
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
5 [6 c5 T$ z4 e7 N  `7 b1 Z$ y5 G6 y: p5 T, K- u
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT' P5 d$ p9 k* q6 y+ j# C, e
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。4 y1 n& H  P: t) z3 d
$ f1 I3 B. p; z! _3 `# \
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
) Q* x( A# w/ B8 A) Z! Y/ \% r& j8 x0 @
3 W/ ?  i. W8 @4 g9 k" ?! a% v9 f-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT  \: I+ W: a$ w
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
3 q1 b3 o  K; @同时针对 tcp 和 udp 协议开启 53 端口。- _) [; r8 q" W$ v

  x5 y; u5 V) a% `要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
5 b, ~* F8 x0 c7 a4 ~, [! F. l& I7 l6 D4 m
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
3 y) R  E6 n" t0 [  N9 [6 _, ~9 ]要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
- N6 n" n1 t. S" P( Z& L' ]  V& h7 \  H) ?! u( |- [0 g
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT! T2 O$ M( f/ H9 u
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:& v: S! |! @' C
( ?, {+ C6 K8 H
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
" d% ^4 A( P; o5 P1 T1 \COMMIT. I' C6 P6 \3 Z! _
改为:" l- b2 B. ?" |: e
! w- \0 J5 I! R6 C; k( v% B
-A RH-Firewall-1-INPUT -j LOG
9 h! s: ~6 D2 g  Z2 g; Q% Z-A RH-Firewall-1-INPUT -j DROP; x4 H/ n. c/ z+ M
COMMIT
- F9 R1 V6 Z+ _3 R6 B保存并关闭该文件。然后重新启动 ip6tables 防火墙:* a: {" T8 X7 u) U& f2 J

0 D8 R2 }/ g. h6 M) r# service ip6tables restart0 L6 W, |( [+ D5 e& |3 v, i
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
2 E$ t" h9 u  R: E8 F% d7 y) a8 }! }  d5 a# o
# ip6tables -vnL --line-numbers( w. w( |/ Z8 l8 t# ^1 e% b
输出示例:# ~) k" ^* F; W8 ]- v

* |- k/ _% m" I3 H9 m5 kChain INPUT (policy ACCEPT 0 packets, 0 bytes)
8 ~+ X; O% `% e# v( ]num   pkts bytes target     prot opt in     out     source               destination3 C& d& ^/ O: D  I' V( I* Y
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0- @& C% L* M7 {* `* z( J
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
8 G  G7 v$ L# lnum   pkts bytes target     prot opt in     out     source               destination
3 r! ~3 t, S5 s* u8 }. h" A1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
3 O/ W, i7 F: P$ m0 JChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)5 h% U9 M6 F- I0 |
num   pkts bytes target     prot opt in     out     source               destination
, Y# Q* @" |& W* CChain RH-Firewall-1-INPUT (2 references)
6 a+ X" b4 o8 Xnum   pkts bytes target     prot opt in     out     source               destination% g+ r- V& G6 g2 ~" [( x# I
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
# ]7 o# X' h: u: B1 R2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/01 a+ r1 o6 t" i% @5 l% y4 F7 _
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/04 a* }+ D4 S/ C" a! A: t4 x5 P
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/06 ]( W" y. a8 f9 d* @
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
; h+ A, @( e$ \6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631. Z- O- {4 n! R& q' _" @
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631. X8 F5 J1 a* W+ ]3 O6 s
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
0 e* ?8 K2 Q" _+ g3 Z9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
  ^! v( I, }$ U1 A10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22" B, e% `) w0 Y+ N+ Z7 k
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
6 J$ `# G, z  b4 S  [12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
, Q, e& z, D* q" D13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:533 s3 s* q2 x! ^4 x& @
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
1 ~# C7 [9 T/ P& S( HIPv6 私有 IP¶; m* M* W" ~0 I0 Q6 x
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?4 ^5 r8 ?8 a0 C5 k" i' T
  }0 I' ^/ e8 v) M
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
9 B4 B( j) A) z$ R: ^; K) k
. D# F  K  w: c* S& y- J自动配置 IPv6 防火墙示例脚本¶  }0 w) j$ Z7 H9 f# I
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。) P( p8 }3 x7 s+ Z

9 W6 i  a# r2 c) Q2 R5 r  E#!/bin/bash: r2 ?% T) Y! ?) g9 n
IPT6="/sbin/ip6tables"8 s' T! J/ |8 t
PUBIF="eth1"
  h. B2 t+ l5 u% [, d- x4 ^echo "Starting IPv6 firewall..."
# T4 k6 u: ^4 w$IPT6 -F: K4 e' |# U* P9 f' p! |* `
$IPT6 -X
' e& H: ?* j& G$ P1 \5 A4 h% m3 u$IPT6 -t mangle -F
5 l( _/ Q2 [( T, `$IPT6 -t mangle -X
  G) a) u' L" v+ V! [: Y) X2 R/ j- L% p0 M; q0 E- u
#unlimited access to loopback
2 f9 R5 S* O* Q$IPT6 -A INPUT -i lo -j ACCEPT8 H& U: Y, C" I8 e
$IPT6 -A OUTPUT -o lo -j ACCEPT
) w1 c6 c0 u: l' ^5 E( P4 r
7 m7 a! T' c: s$ w5 ?# DROP all incomming traffic; F& a3 d/ D' E; c8 O
$IPT6 -P INPUT DROP
8 O. G8 Q9 w& K$ L6 {; t9 @$IPT6 -P OUTPUT DROP; p; l4 w4 e2 O* z4 K3 ]# A3 E
$IPT6 -P FORWARD DROP
1 x8 y3 c/ ?  p5 p* p( u1 u4 g- ^- f! G
# Allow full outgoing connection but no incomming stuff
0 T( B  T6 |( j! @1 `3 K8 V5 ]$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT, l0 \- |) p4 m! ?! y; Q
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT; K' ?* ^; q/ Z

# h( Z* L$ g' q9 o! x# allow incoming ICMP ping pong stuff
$ E0 z2 t% I8 L( X& y1 S/ @$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT& B# P% B! ^0 A& d
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT5 ?9 B; J6 R( |* O( Z& `, F* `7 m
/ a6 d# z( t- t7 E2 a6 x4 N& N: }
############# START 在下面添加上自己的特殊规则 ############
& i: C; {. ?7 O### open IPv6  port 80 . x) O, P! l9 }9 N* L+ N# m$ r
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
4 e* ~3 h  B5 u### open IPv6  port 22
0 U6 x) v' q9 i' h: d& v, f" [#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT. f2 e, z. n5 w+ i
### open IPv6  port 25% c7 G* z8 o3 [7 }  @1 O
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
# j, K! z# ?3 U& V+ V. t############ END 自己特殊规则结束 ################
* A9 }: P& J8 ?) @2 P
% H. _. a$ c: m) G$ ^3 \/ v#### no need to edit below ###
: Y$ k4 [6 A! R) a2 w1 n# log everything else
. \& T  [; T2 B- J4 y; w2 L$IPT6 -A INPUT -i $PUBIF -j LOG- t9 O3 f6 _! a# a5 K$ c( u4 a8 y
$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-7-11 16:01 , Processed in 0.119203 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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