找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16353|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
" t! q: @, J: @0 i% `
  Q. x% u% ^& e" W在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
4 P2 h! i( z" ~# H; l5 t9 A ip6tables -nL --line-numbers# r$ T6 X9 v. e+ p0 ]7 l
/ U$ v( E+ n; v& @! ]
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:, ]6 _4 N' t7 v9 t

( h% R! y* ~) T. g" O# C, {7 j" n# vi /etc/sysconfig/ip6tables- ~# l; w9 L/ ~, c6 j0 M1 g
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
7 n+ b) T& t. e7 b) j* Z" @*filter
/ J0 N  Y8 U4 h) t/ R:INPUT ACCEPT [0:0]0 g9 F* ~; Q1 i1 L
:FORWARD ACCEPT [0:0]
$ V1 O) Z2 W: E4 d! S:OUTPUT ACCEPT [0:0]
; _# r! W$ O( r" O* [4 o:RH-Firewall-1-INPUT - [0:0]! v' B) N. a% c1 R
-A INPUT -j RH-Firewall-1-INPUT. K+ n( W, r& c
-A FORWARD -j RH-Firewall-1-INPUT
$ j4 f! Q+ ^  X8 ^# J-A RH-Firewall-1-INPUT -i lo -j ACCEPT
4 e: a1 f1 z6 @* ]( L; N& h-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
- J: Q) z4 I/ M  V-A RH-Firewall-1-INPUT -p 50 -j ACCEPT. y! q0 x$ U1 f" k
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
2 ?* e% d  n, o  Q2 {) `-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT. A- o2 H' v# ^* d
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT% I, M1 X" }4 ]$ ^8 v; O
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
* S/ E6 s1 X# y4 |* b9 [-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT" B/ E- o! ~; W9 p
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT7 I7 B+ U' r; M6 t7 a6 T
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT9 ^( s5 t3 T7 o+ I! c# r
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited6 A; ]5 J6 S9 z2 Y1 i
COMMIT( ?# m% p9 }. Z; {) h
与 IPv4 的 iptables 规则类似,但又不完全相同。/ B  H8 }- r( y' B
, A& T! E7 ?# k
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
' h- S% ~: k1 L% _2 {- ], P" u
# ]5 W0 _* n7 h-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT+ H" K, X* o, ?2 X" ^* B+ W
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
/ ^4 \. b+ }3 n: O- }6 @' F/ o, c' q. m
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:+ K" h$ H) q/ [. ~7 w

% b9 n% d0 I) |* B* _% X  Q-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT3 E* l- I, i3 `7 F
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
% \. A9 M# ]8 `/ j同时针对 tcp 和 udp 协议开启 53 端口。; A1 a9 d* `  q
1 F8 Q& Y' U( p
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
& B' \% J: z! o* A3 [% L' v* r8 Q2 f  Z! y+ e" H. F2 ?
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
; S, [1 F, `2 Z  D1 s7 b- X5 p要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
9 v, a. _7 \: Q+ X
1 R. q4 Q& Q8 O-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
6 j: e; y7 y  R8 m& Y对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:0 G* `; j& N3 ~( `# o9 y
3 ^8 y3 m8 o, j& H. {
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited8 q  r+ c: y1 V# c; o0 B5 e5 E
COMMIT+ x. Z3 u' {- L
改为:
4 t8 p3 U& U2 h7 ?6 ?
. B' _4 Y5 V) n6 f2 [9 b. K# W, `-A RH-Firewall-1-INPUT -j LOG
+ E7 `2 m& E; L0 p& z+ l$ g-A RH-Firewall-1-INPUT -j DROP
2 U4 B+ r4 [9 cCOMMIT: G1 M8 M" Z9 ?% F' x
保存并关闭该文件。然后重新启动 ip6tables 防火墙:2 ^9 i2 T$ R, ?
5 A6 e+ l/ \, W9 G
# service ip6tables restart3 h" G3 I3 h( w4 D0 A9 I* t0 b
然后重新查看 ip6tables 规则,可以看到如下所示的输出:5 J: A* {+ p, t+ o
* I, @7 x; o1 F- S  k
# ip6tables -vnL --line-numbers
5 T! m1 A  N7 Q  j3 D$ c输出示例:
3 y( @' L$ T. J$ P6 Z  N
* W2 i4 v( F8 @. `Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
) V/ I' C' n  T& K; f1 z* ?" Inum   pkts bytes target     prot opt in     out     source               destination
# f5 `/ O9 h4 b; W/ V1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
( B2 S- T9 c7 k1 ^5 l4 K) m! ZChain FORWARD (policy ACCEPT 0 packets, 0 bytes). Z* o: s& y" @& {# s
num   pkts bytes target     prot opt in     out     source               destination! y/ U" |! `6 f4 H1 }
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/01 a5 h! `/ n# u4 Y, F0 u7 G$ M
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
% [% y! _9 R( [- [; wnum   pkts bytes target     prot opt in     out     source               destination4 J. H1 _0 I! }. ^, x& Q
Chain RH-Firewall-1-INPUT (2 references)8 X' `1 I0 b+ f( a5 K# k8 p0 e1 z
num   pkts bytes target     prot opt in     out     source               destination
; K0 W& \* {" M# N4 y1        6   656 ACCEPT     all      lo     *       ::/0                 ::/07 L  o% L- P; c( D9 Z. F/ H
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0+ L- L5 z/ |8 S# a  y; B
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
* q) p) t/ t) K7 @+ ~% }4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
6 m- z7 Y, W' Q/ R5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
- Y5 W; T9 h- I0 x5 x9 K6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631. U3 R, a4 J4 m) y* w( ^0 ?2 \# M
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
' T8 o1 O; w( K4 M0 \  n+ d$ l5 s+ E8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
/ F0 x) c" e" e; ]: h, A, h5 q9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
5 n, q) o/ W: x10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22. _+ h' ^1 U9 R" L! j8 M
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
( M* x7 I9 y( Y7 S" _6 e12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
2 `5 Q. \7 e7 W1 |4 M13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
  @/ w' Z0 f& s, y14      18  4196 REJECT     all      *      *       ::/0                 ::/0+ |) Z( _- r4 ?; C" w3 |
IPv6 私有 IP¶6 t2 i! C( }  ~- {, [# d+ C* J) H
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
5 U# I) C9 N( ^
$ _$ i$ ?2 Y. s不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
4 M6 o. N) w; O) C7 }+ C$ [
  N; o( m9 P  U4 _自动配置 IPv6 防火墙示例脚本¶
7 l' X% Z: p  U" x* F与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。+ \. c! h3 H, \6 `: f0 `
8 ]1 t9 W7 z6 _
#!/bin/bash
* g+ V5 O0 ^0 {, g- p/ |; sIPT6="/sbin/ip6tables"
% s- ^+ S1 d- [# wPUBIF="eth1"
5 ]: h5 X5 O9 a9 d6 e. n1 eecho "Starting IPv6 firewall..."
0 j2 @, P( Q8 ]" A" K7 {1 r" g" _$IPT6 -F8 x9 ]8 K: e+ m1 k4 n
$IPT6 -X
9 J# l- t, Z4 v  U3 c$ f$IPT6 -t mangle -F: a; K. Y$ D7 Q$ p2 \( Y2 l
$IPT6 -t mangle -X
$ v/ a! U3 O( r% C' H; B( Y. W2 S
#unlimited access to loopback: F8 h; ?0 b2 n" q4 f
$IPT6 -A INPUT -i lo -j ACCEPT4 x( C  q2 i, F% [1 [+ ]
$IPT6 -A OUTPUT -o lo -j ACCEPT
" Q: c* l* c" I. N6 F
9 L  t( k8 p5 _, s, i# DROP all incomming traffic4 o0 t( z& b; S' a! A( o4 P
$IPT6 -P INPUT DROP
2 N$ y/ q- i1 x' f3 a9 A$ l1 {$IPT6 -P OUTPUT DROP
( ?" b" e* e. V3 Y7 m6 W2 x7 f$ k$IPT6 -P FORWARD DROP5 W3 k# t6 g3 p6 b

1 g* [/ {/ N0 f0 _# h: A9 ^, G& q# Allow full outgoing connection but no incomming stuff/ A& E% x8 S! o4 j, ^- p9 _
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
1 |% R' F( |& }  f% l, {$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT. g. a# U+ U9 J5 u8 y# Q8 a  q$ Q

; T' [4 {) q# ^+ Q+ M8 x+ R9 ~2 \# allow incoming ICMP ping pong stuff/ h! b. `* A5 @+ T
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT. _1 k- n8 o0 g* \9 V  B
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
8 P$ ^" z6 ]$ c- Z2 j8 N: d
; y, X% O1 i% m7 ^# f- Q############# START 在下面添加上自己的特殊规则 ############
4 _, I) r$ Y- d& e3 n; w### open IPv6  port 80
3 R7 i4 F. R  e' k) E#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT2 Z, w% ]$ _4 q& {, v; B+ N4 F+ c3 F
### open IPv6  port 22+ n6 l* J2 K) Y+ I5 I6 R: A
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
8 c- X  K1 G- {- Y8 {### open IPv6  port 25
2 _5 e! e0 N4 k#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT6 M0 H* F( M( U1 f4 {
############ END 自己特殊规则结束 ################
$ q( @4 i! e0 ~* j4 O: @3 s! }. s' J' g& B1 b* L
#### no need to edit below ###
8 H; u4 a! U- i5 z$ m. n9 R# log everything else
# M& T9 n7 m, {2 r( ~" V$IPT6 -A INPUT -i $PUBIF -j LOG
, i; T, A0 L$ S! G' L5 z& w$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-17 16:37 , Processed in 0.078870 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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