找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16415|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。+ ~- Z: n) `. t8 D+ S* p
) J" ^3 r2 o: O& E2 ]' }
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:; f; }: p1 v, @8 t
ip6tables -nL --line-numbers6 I' _8 K, J' {- E' P' {0 d
' Q0 ?& U3 E9 Y
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
5 M( d2 {+ g; k# ?- A4 i0 E+ o0 Q$ f
# vi /etc/sysconfig/ip6tables
& m  E7 R( N- t可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
) H/ F& o2 E& ?3 g+ ?*filter
9 K# c. e1 i3 Y; k% A:INPUT ACCEPT [0:0]
- S, _# O  D& F4 L% A:FORWARD ACCEPT [0:0]9 X( R( p& j# l  f! P3 u
:OUTPUT ACCEPT [0:0]$ o4 V# A: y3 S/ t0 B
:RH-Firewall-1-INPUT - [0:0]
/ R7 ?! m8 l" [; e/ w5 T4 E-A INPUT -j RH-Firewall-1-INPUT8 Z$ b8 `) X  \2 g6 F! O8 ^
-A FORWARD -j RH-Firewall-1-INPUT1 O' V, m1 A$ r6 a6 ^4 J
-A RH-Firewall-1-INPUT -i lo -j ACCEPT, z1 P4 R& O2 f
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT+ s: Q3 Z/ u$ p& _  ~, l( Q+ G
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT; {& W: S" Z. C# M- R% e
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
8 B% p: s9 K* `3 ]% H6 O* I-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT. k5 h( S) @" m
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT- G+ l4 e# @5 L! I. d3 N- r
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT6 w% e0 N2 Y& X: [9 E- n$ J
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT7 S& V# z% B" A* L
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
- F0 {' ?' n3 f8 ~- Z-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT0 s. m1 F- b, Y3 j& `5 N9 s. x. H4 t
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
) B! [/ e( J# JCOMMIT+ _/ G4 ~& u7 j. Q; E
与 IPv4 的 iptables 规则类似,但又不完全相同。- ?* z0 `& K4 `
+ Q5 w# @3 B, q1 V' f6 l
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:# O1 j5 i4 E% C- D

8 p8 I/ l6 Z" c) x" {: S5 e: R-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
; ]$ C& ]5 g2 V! H! w3 D-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
$ q& ~: D0 {# o0 q. a! r
9 Y8 f, C1 K( _5 l2 X要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
' W$ r! |% W0 a
+ |2 q9 ~- f* H; Q% s3 I  ?-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
( G/ Y4 m! d  o* W( B-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
9 L6 U' a' L5 A- ]同时针对 tcp 和 udp 协议开启 53 端口。
: I, x9 T: d9 O! o8 h7 H
9 V: Y) c+ L% Q% W  y. B* _$ s要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
4 b' }7 M9 R# w$ `5 V, b. B
, D# {- V' ^8 D( u2 o-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
; `2 V" h' S' X6 `要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
7 {4 [. j" l$ _! k; x% A5 Z2 @7 w2 e) F( P8 y; B
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT- D: a  i. e1 j& S, ^" ]
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:* I! o" B2 ~% r6 G  ]$ g

3 R! Y' ]  r) T2 n+ g7 Z- l-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
* a4 t' f, B! w) S5 PCOMMIT
/ B4 {, x7 C5 y: z% ~改为:
% V+ c& [$ m8 V: e+ Z
3 O" W: b( v4 P# v* ^-A RH-Firewall-1-INPUT -j LOG: x" F" `; m  ]$ S9 k- F  {6 a
-A RH-Firewall-1-INPUT -j DROP( [$ ]$ s4 \: W1 f" ]
COMMIT
( _# j4 r" p1 T9 g; |' c保存并关闭该文件。然后重新启动 ip6tables 防火墙:* `4 v* w* u6 e, C; D

7 X4 a5 t0 e8 m) s# service ip6tables restart' `# K8 u; W$ \, \/ l( p! W' K! n
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
2 }1 h4 F; \" _: n4 n' U& M1 q" i& Y. t. j; [2 q
# ip6tables -vnL --line-numbers
  K% B7 I. }3 g. p输出示例:/ y2 y; j( H; _. V5 i

  ~' s5 H* E, j5 K/ [) t8 GChain INPUT (policy ACCEPT 0 packets, 0 bytes)
+ d- B8 l9 `4 ]; T9 y# I. L8 qnum   pkts bytes target     prot opt in     out     source               destination1 ]9 ]/ K8 b( G& T( H
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/06 v7 C/ C) r0 o- @3 K
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
7 ]! n( a$ V* Z- Vnum   pkts bytes target     prot opt in     out     source               destination; u/ y: e1 S; n; o4 \: y) b3 u( [
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0% v4 d  }% G2 a; g5 d3 H2 p
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes), g& r+ e( D0 x& i, N( F6 p1 v
num   pkts bytes target     prot opt in     out     source               destination- }5 E! y) h5 Z6 n
Chain RH-Firewall-1-INPUT (2 references)
0 t( U9 U0 j$ \( d/ wnum   pkts bytes target     prot opt in     out     source               destination$ q1 L! _) _; S8 B" n2 S& {
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
7 M3 z3 P& c, X6 k5 v2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0" p  T8 m9 E+ w; B! e. g2 u
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0) e/ P5 f& U/ a5 c& Y% |. P
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0" M7 q5 ]! K( F2 F7 g& n/ d/ B4 U
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353: ?$ f8 S, `" C& a7 |- K8 ~
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631- P& C' W/ q0 @( v, E9 O4 ?
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631, z! Y& `; j* Q; s% c6 g* D3 H" E$ Z
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
' x8 k$ {  G* \- Q+ P+ m9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02/ Z: `& h# y, j$ J1 l( i7 q% \
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22! M: b& a, ]! p3 Z
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
/ V  k( M- T8 r12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53( {) x$ Y9 ?( J0 g! ]
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
* U+ m+ Z5 _  R9 k7 n0 A14      18  4196 REJECT     all      *      *       ::/0                 ::/0- m. j/ ]4 D) S+ T
IPv6 私有 IP¶) x/ ?& d& q; B  P7 ?
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
& A- k) `/ o6 b% E$ O% E! I5 c; N1 w- o% @" m( z% M
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
: l6 V2 O+ @( _! x1 m; \. j* Q
, P( h. L1 _& q. s4 _2 m自动配置 IPv6 防火墙示例脚本¶  l$ X; G9 m: K+ f' v
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。3 J# ]# L- |# A! R
# x/ t3 z1 X3 _9 [- N( i
#!/bin/bash
9 M! U" M# n! D- P. i& A* B0 eIPT6="/sbin/ip6tables"% ]) a3 a  ]& Z5 f& c4 S
PUBIF="eth1"
4 W1 z2 b: f+ r+ `echo "Starting IPv6 firewall..."/ H% h  A* E/ Q8 G  r! D- R
$IPT6 -F
6 f+ I' v6 ^8 l  V4 o4 n$IPT6 -X( J) K" r- ?1 d5 w6 W* e) h
$IPT6 -t mangle -F4 A- P  q2 i2 ~9 P
$IPT6 -t mangle -X
) w; |+ ~% {. o' X
) a' Q8 g2 U7 I$ e% y. P7 c#unlimited access to loopback( q/ s1 P0 I/ ^+ h4 J
$IPT6 -A INPUT -i lo -j ACCEPT
# W7 B8 T' c. ]! M. ?- ]$IPT6 -A OUTPUT -o lo -j ACCEPT8 M3 j1 q! C' ^. c
  u2 W) y5 u5 W& F# T. g+ u0 a
# DROP all incomming traffic
2 _  f/ h6 W0 v) k2 o$IPT6 -P INPUT DROP
) n) x+ h. t) H- Z$IPT6 -P OUTPUT DROP
# X* u  s$ O# H0 ^$IPT6 -P FORWARD DROP
6 X3 d; v& O$ Z3 l3 u9 |0 G6 d8 k1 B4 g
# Allow full outgoing connection but no incomming stuff
4 Q8 C2 {# w) i% k. f$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
- E7 L' h# T: F1 y$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT! z# D5 x) K0 o

4 h2 D+ l5 R+ t9 s  w7 u# allow incoming ICMP ping pong stuff( G6 M6 W- A9 h; B$ r
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
1 ~' \$ Y/ K' t* n% F) B; m$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
) s1 \4 @+ [% ^; N& b* \+ I1 ~; U) C$ l, c/ b: f8 H% S
############# START 在下面添加上自己的特殊规则 ############. s8 E$ k6 m' R% A0 V: s
### open IPv6  port 80
: [7 r1 e5 X( N4 c0 y* h, d# b#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
& m; b# O/ D6 e0 ?### open IPv6  port 22' }+ O1 P# m8 z; Q, H/ j
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT# E  F: h" ?, e% Y6 j7 @0 x' ^
### open IPv6  port 254 n. k! J* a0 d
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT" ^  ?$ T0 G1 T% |9 W9 g
############ END 自己特殊规则结束 ################. j9 H5 u+ W& n( d
+ _, r# b% `( _; V: Y0 \2 a. F
#### no need to edit below ###
& O- O4 K0 i4 c1 t/ p% t+ l8 f# log everything else" x3 k, X) @% S$ Y
$IPT6 -A INPUT -i $PUBIF -j LOG4 g' p3 x3 Z1 n; ]" M: h$ c
$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-24 17:11 , Processed in 0.050445 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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