找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17653|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
/ E( c! `& S0 R- c1 B% ?  t" T  k4 M& l
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
! G1 T7 z8 }* e; a ip6tables -nL --line-numbers: a* s9 s3 X  M6 @. H3 t& H/ q, ~" _

, _' r$ r! k% q- ~* t5 T1 G: \使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
, S3 s8 s: E1 d" F( X2 U: ?, X9 |
# vi /etc/sysconfig/ip6tables$ G6 Y/ U' [2 D2 |" ]4 q2 j
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
0 j- G9 i* n/ A2 L  D*filter
+ R/ ^7 @' N: Y' V2 L' ~( P:INPUT ACCEPT [0:0]$ K7 ~; g1 W. }+ s
:FORWARD ACCEPT [0:0]
- e. P; k' ^9 @6 P:OUTPUT ACCEPT [0:0]* Q7 u9 U/ e  o& n( A6 ^0 x# V# F6 A
:RH-Firewall-1-INPUT - [0:0]
6 X3 C1 a. H! Q+ `; B( X5 ~-A INPUT -j RH-Firewall-1-INPUT8 s& o6 l& D0 j$ ]
-A FORWARD -j RH-Firewall-1-INPUT1 {- F1 c; V" y, }. ~* P- P- l
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
" @2 ^7 O- `$ y/ ~: _-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
2 O% Q, C2 G# J+ W-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
" Y4 U3 x8 q6 t2 |* C4 I! Q7 L-A RH-Firewall-1-INPUT -p 51 -j ACCEPT! E9 `7 N& m: F6 J- ~9 N: R! e$ P6 n
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
! z3 t8 G4 j8 @+ F( @# I8 v0 t-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
2 d$ |! W6 q9 N7 B6 Z) r-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT! ]% z' v( Z% X# ?8 S$ f( i
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
7 E1 W* T+ F% _3 y& y-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT; A' ~( p* y7 r& i9 ]/ O$ F; W
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
1 g3 V( X8 g. l6 ^/ y; W# ~-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited% B7 ~9 M2 n4 n% h
COMMIT
5 V% f3 O2 E! w与 IPv4 的 iptables 规则类似,但又不完全相同。( k/ W; }+ n( h
" P# y9 ^$ w: \% O$ E* o% n& A! t
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
; f1 u3 H& r; @, _1 V
% n3 C! o/ h) [+ R) b& H6 D' H-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT/ w. |+ X5 o) s; A1 t7 o$ n' d
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。5 p; {+ V% L9 S6 p  g0 i0 ?

/ x; U( x- t& S+ k! l8 ~6 z- b要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
! a3 x6 \. C% i9 V6 v. m, Z! d; D/ [  u9 Y4 D9 j: s
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT% f: Z+ ~1 l9 G& q+ F" Y3 u* o$ r
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT$ T+ z3 s9 {, X2 c' D: {. h
同时针对 tcp 和 udp 协议开启 53 端口。* @; ?, T& I) a1 B. O1 Y) U7 r

: T) w9 |5 v' O% N+ D要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
$ A/ T' P& a& h- ^1 y# f; p1 b' V' [/ q& M! P& G. z
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
$ e# M5 N. s1 }  X要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
8 q' z1 R$ d; k, q7 m- k
% l/ A* B! ^, l( K9 X. Q8 _9 X6 O-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT( A) b( T6 Q8 ?+ ^7 `  S6 H
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
; J' G  x+ ?) B8 K" c( Q9 j  \' v8 l
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited5 c+ |! T4 y9 y# H
COMMIT
8 k) ?3 Q; F( N$ w, f! Z改为:) ?0 d& n0 R& R7 ]  L

8 H9 ^* ]2 p: e6 E-A RH-Firewall-1-INPUT -j LOG
# L  m9 B, E& `7 U. u-A RH-Firewall-1-INPUT -j DROP7 l/ Q* `. Q. F+ C
COMMIT
! g+ E6 \9 ]. _' l$ d8 }: l保存并关闭该文件。然后重新启动 ip6tables 防火墙:
$ j$ k8 l6 a7 z4 b
9 L5 x) c0 N" h% g7 P$ n# service ip6tables restart- c  T( I7 W& K& q
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
# X0 a  K5 j% o" ~
$ U: X2 X0 p% k+ [/ X# ip6tables -vnL --line-numbers
1 e; Y6 z0 V8 U3 Y4 Y输出示例:! k4 @; g0 }2 e: t

9 [, |/ M: J# ZChain INPUT (policy ACCEPT 0 packets, 0 bytes)% c8 C# _* d4 a1 v
num   pkts bytes target     prot opt in     out     source               destination7 _3 F6 y" P2 c4 H) D4 x" n# @
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
3 G" J# `0 i# ?  gChain FORWARD (policy ACCEPT 0 packets, 0 bytes)+ b; N2 m5 {" A! T1 E
num   pkts bytes target     prot opt in     out     source               destination; y/ q6 V; a. [- }# o  Q" S
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/02 u, G" a. [1 g& A
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
, c+ T$ I* t: n# i- k0 C- Pnum   pkts bytes target     prot opt in     out     source               destination
+ R+ O3 ~6 _& W& s, OChain RH-Firewall-1-INPUT (2 references)
/ Q' O$ I8 y+ }3 U# |% snum   pkts bytes target     prot opt in     out     source               destination$ [6 {% L) R0 d* }* O. w
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
; c8 ]# n, r! Q  \' h) z) L  p2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
7 K* b# i* S7 M3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
; x" s2 `/ {" I9 k- a3 o& b# f4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
# S. ~& H& K9 `$ h; g5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
9 ^; C, j- P: ]! U3 Z6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
7 k& p, u) h6 B4 F0 |8 H7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
! G9 h8 d0 C1 X( C. E5 F9 F' N6 C8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
2 E1 ?& B0 S/ u8 s/ }9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
( `( H, B/ Q5 A' h$ A5 o# z3 i" H10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
7 k4 k! C4 s* w0 n% V9 j- U11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80" U0 U- u! ]; k
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
: F9 B. u" y7 ^# i# E' u& W13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53* W/ o* y. X8 d. o
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
( `3 g, x. z, lIPv6 私有 IP¶
& g+ ]' P8 F" A  ^IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?! r: f* H! N0 O' [( V$ D
+ X  H, z4 t4 D3 x/ z
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
6 w6 e4 W' p1 q7 @' D
, y& @) D; h  w% F2 V! h1 F4 ?自动配置 IPv6 防火墙示例脚本¶
1 M. Q6 @0 A4 ^* z7 Q* E) ]与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。/ h/ H" p, o+ }, Z+ ?  V
0 q8 H( }5 n' A8 H, c, Z
#!/bin/bash
+ T$ y! E4 c) E% p5 j/ [IPT6="/sbin/ip6tables"
' Q* U% G% {; j: ZPUBIF="eth1"( g$ |" b( g5 y8 D5 t$ Q  T
echo "Starting IPv6 firewall..."
5 e; J- S% ]8 G7 S' K, o$IPT6 -F+ T' I+ i+ ]* L1 k5 C) d- j9 b) T
$IPT6 -X2 u1 _5 a5 |; T& B, g5 c) Z- k
$IPT6 -t mangle -F
1 p! C7 |+ _# x3 L* ^$IPT6 -t mangle -X4 a, \% }& a* k+ F* E
8 G  ]8 ^/ y2 _" D1 B$ L3 U
#unlimited access to loopback
/ s  H0 e$ H* N; ]$IPT6 -A INPUT -i lo -j ACCEPT$ w/ ~8 m$ p0 D: ^& y+ U
$IPT6 -A OUTPUT -o lo -j ACCEPT
/ Z1 D1 L/ g; ~, Q2 r) p& G- A# H
# DROP all incomming traffic& X) j% E+ t" t( G# D$ i
$IPT6 -P INPUT DROP
. T5 Y7 |4 b  M$ q$IPT6 -P OUTPUT DROP* V% M% z% `4 M3 q2 c
$IPT6 -P FORWARD DROP
  `8 O  ^# v; V# F( j
  v0 A6 K/ W) }, ?1 t6 `7 I- R# Allow full outgoing connection but no incomming stuff8 |8 ]5 z9 i/ c+ l- M, o! Y! V) x8 s
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
& ~1 I7 B% J5 Z" ^, }$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
9 M! A5 n1 p$ M1 W/ c5 t0 A/ a
' O( z4 Q" L: q( }! _# allow incoming ICMP ping pong stuff
: w- h, q! K) ^6 d4 w) _$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT; Z+ C3 |0 f- d- M7 G3 l
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
  J2 s, ^* K: r/ J/ W8 Y  n9 P7 O! @( k
############# START 在下面添加上自己的特殊规则 ############
3 c+ H! t, F; k( l2 x### open IPv6  port 80
7 i: }+ o4 ~. m( ?  Q) H: x+ O3 u2 k#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
; [0 L* f  \  \### open IPv6  port 221 c4 k3 b- V5 O7 d/ Y# Z4 c
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT0 X) j5 G# ~' G4 r$ |
### open IPv6  port 25' ^7 D! k/ O3 Y: x, `0 U) a
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT, M# y' P$ }$ U* Z( b. k* @
############ END 自己特殊规则结束 ################
! `6 Y3 O0 l- E- E4 Q$ A2 i/ }+ W
- G6 {0 e; z. Z  d) `4 E#### no need to edit below ###0 G- N# s" O( M
# log everything else' S5 j4 U0 C! E0 G
$IPT6 -A INPUT -i $PUBIF -j LOG
# ^7 W6 D* Z% 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-14 19:03 , Processed in 0.073406 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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