找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17216|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
5 K  l* q* g: r& M1 t4 o7 s! H( D9 `. r: ^; J& {4 O- e4 n  m
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:* C3 r' Q6 L3 Q0 ]
ip6tables -nL --line-numbers
5 K* c1 S) d% c( B9 l6 A1 l" F+ |  t# [# u2 B9 @9 ]1 {
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:( e7 m3 R1 j9 L# o

4 C3 n& `& A; ]& O0 G2 }# vi /etc/sysconfig/ip6tables
6 `5 [7 S& L1 U可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
- N: s8 Y! r; H: G- u4 |7 d*filter. W  S; s7 j' i  c  F1 l0 ^
:INPUT ACCEPT [0:0]* P4 k/ f5 ^" N+ u4 g3 i
:FORWARD ACCEPT [0:0]4 r+ g! }4 z2 Y! `: N1 g
:OUTPUT ACCEPT [0:0]$ d* w7 v. b/ G0 ~  I
:RH-Firewall-1-INPUT - [0:0]7 f" L# a6 K& p% y( ^& x
-A INPUT -j RH-Firewall-1-INPUT  o* a' ^/ _" I! }2 @( N+ o7 w7 L
-A FORWARD -j RH-Firewall-1-INPUT  U! C4 p5 v; p# J# t* F
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
6 b( }" R' C% ~' z  _-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT, L  Y, V- B; l" [( t- B8 O1 Q& q4 d
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
& i) K6 O$ ]9 T. @- Y-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
5 Q2 K0 {2 Z* F* p  Q/ b8 g-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT" O# ^  c- m( n3 D) {" ]4 m
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT) @4 H9 s+ e& U6 ~
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
" T! f: P2 Y3 I* G* A$ ]* j-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT8 D1 o/ [* L( `9 {( y
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT8 g- j, w; l& D# L
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT- i& U0 B8 `: g8 K+ v1 d" r
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited. J* g/ u( v, c5 Q
COMMIT
0 y7 N# q; }5 b与 IPv4 的 iptables 规则类似,但又不完全相同。' [! H3 h& ~4 {8 k& W

) ^* X( c1 c8 O' {% u要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
# o2 {2 x  m8 Z1 f* h7 B0 d  V1 q# G* g( R; Q  I5 @0 \
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
. e2 L" g  r7 E8 I3 V-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
' G- W, R  Z' L( Y" s
  X5 v5 r% v# Q+ ?: e; M要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
2 O0 I+ ]% k( T9 K0 O/ K, h. J
: p/ t* M3 d! C2 N# k-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT; q5 E- j& Q0 k; b
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT+ V) `, n! r$ Z9 h% y9 n
同时针对 tcp 和 udp 协议开启 53 端口。
* K: o# p. `" W  c: @, o( D0 P
5 Q% Y% P( [& V5 D7 E3 p要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
- B" J! j# u/ L* p0 t* V6 [$ g( f9 N# M2 h7 x3 d0 R* s% s" v
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
" ?- F8 ]1 h4 F; U要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
6 p7 `) a/ e( ^% Q/ u7 d) B. P% s+ q3 v. \; |$ W
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT& H+ k6 J2 n3 a) R+ V
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:$ V2 Z4 @( h9 G1 c% x! H. s5 s% M( e

0 |+ [. {4 y$ X" j: F, \* B  n-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
  |$ F  ^) K* dCOMMIT5 A# U# I" \* g4 q' p, S
改为:
7 E" D, p% A; ?  L4 F% J8 v& Q& F- |+ J& C0 A
-A RH-Firewall-1-INPUT -j LOG
# r, ?, a& z/ y9 X8 r7 Z: h-A RH-Firewall-1-INPUT -j DROP. x; @- Z4 I3 i$ o$ a1 j
COMMIT. k' |- e8 V' X, l% t# Z
保存并关闭该文件。然后重新启动 ip6tables 防火墙:5 |+ A( \: u' o" }( f
& N6 z8 H' s- R
# service ip6tables restart
: l5 k, m) N/ ^, I/ g然后重新查看 ip6tables 规则,可以看到如下所示的输出:; K, s& r/ A* I/ m* u. ~2 G- h
  S) Y- C2 M8 a; u7 C$ _) p8 L
# ip6tables -vnL --line-numbers( S' @- J0 h0 t: p6 U6 w
输出示例:+ E3 R* D8 A  s6 v/ w3 ?
0 _5 R5 y! `+ K; H" F5 _+ ~9 f: Q7 |
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)+ l  L; t0 }) d. H
num   pkts bytes target     prot opt in     out     source               destination
+ u) I) P+ V$ O) X1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
% u  f* {( l/ ]: H  m- _7 K* \Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)" ~$ ^5 R# `! d
num   pkts bytes target     prot opt in     out     source               destination. G7 |: v* i, K% Q
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0' q: a& P4 m1 H- X
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)4 s: a. _& g7 e" U: c
num   pkts bytes target     prot opt in     out     source               destination0 q: e* M" E3 e  E+ D: Z
Chain RH-Firewall-1-INPUT (2 references)$ B# I% z- E; [8 A2 R
num   pkts bytes target     prot opt in     out     source               destination
+ K+ L* X/ }( p; x  M1 {) A/ i1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
$ X) V" t' Y: k2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0) `. A6 h4 X. n; w  X
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
, ^5 j% P! R; P- K* |3 R( }- Z4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
' p( u# z! [7 C) |8 b5 K0 o3 x5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
* A5 \, Z. U* M# U# W% r  r4 p6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
5 b- l  k; g: a, R7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631/ |! a$ f  F3 n6 k% y  K6 o
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000) @6 q2 F5 U) Z- F; D' q/ u/ I0 _
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
6 n+ O" g& i# {- ~: x4 H10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:227 M) `! N7 ?5 j% |
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
% J. \: }. K& M" c12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
/ c* S" S2 ]9 m& ~/ V  I8 @13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:536 o4 z; W1 `/ r" ~8 \3 V
14      18  4196 REJECT     all      *      *       ::/0                 ::/04 \+ [3 Q7 |; n; B
IPv6 私有 IP¶9 ~/ M& q/ G9 e* c7 [/ e
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?# d. p6 t# ?, k6 x( ?3 K# U
, V3 |* d9 V: d/ ]$ L
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
# B% K# J7 x: u- Y& H5 Z
0 b  Y# u: K$ ^  y自动配置 IPv6 防火墙示例脚本¶
: o6 _" _! k& q' L' D' x与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。) D, `8 @9 i% C7 w7 j! x
2 E3 s6 I4 S( [$ _) ]% Z0 H
#!/bin/bash5 |+ f/ X! v. I/ Y! Z( s
IPT6="/sbin/ip6tables"! `* P6 j( w# r, [8 `" I/ x1 Y
PUBIF="eth1"
3 Y& r! |# i' ~) u8 Z7 vecho "Starting IPv6 firewall..."
* P% H( J$ y% f0 L2 ^% J7 [$IPT6 -F
: {6 k* s" M4 L5 @& r$IPT6 -X3 K+ @$ Y% X6 O
$IPT6 -t mangle -F* i2 }) j9 D; E! A0 k& H
$IPT6 -t mangle -X2 V% X: ?5 s6 t% W0 X; U
  M) i; j0 d' J* U6 ~
#unlimited access to loopback7 c8 _; z$ U# ]; W2 y' @4 d, O$ Y
$IPT6 -A INPUT -i lo -j ACCEPT8 p, l3 l7 x$ O! u
$IPT6 -A OUTPUT -o lo -j ACCEPT
8 G5 h% j3 w! ^
( @5 I# [# o: L8 K# DROP all incomming traffic
& _; q+ L! D$ b0 D/ U0 @. V3 n, Q2 G$IPT6 -P INPUT DROP! w. i0 n; l, h' y
$IPT6 -P OUTPUT DROP/ s7 e& L$ B/ u7 Z; ~3 N5 z+ m: Y( \
$IPT6 -P FORWARD DROP0 j( _/ ]5 E8 _5 L% ?: i# Q. u/ M

8 Y) C4 g& g( O# Allow full outgoing connection but no incomming stuff+ G- K+ x( M+ h/ A, T# h: e- I& C$ f$ w
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
5 i1 l% ~8 G4 _7 z# C$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT" U5 S( ]5 S9 f7 P; b# ^; [$ l
; R" x( Q; L+ {/ Q+ L
# allow incoming ICMP ping pong stuff
( s9 l! z3 ^: U' Q# t2 g$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
* l: ^7 ]6 G2 ]) F$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT3 M% L/ D- F$ b! u" T% R' H

9 }8 c. f4 W, X  G############# START 在下面添加上自己的特殊规则 ############
* ^& T' A) T0 m8 S) L( @- q. }' T### open IPv6  port 80
; C* R) b4 V% ]1 {#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT% o' U% u# R% ~
### open IPv6  port 22
: a1 Y  N  V0 R' ^8 l1 g6 Y#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
7 L. t6 L" E) n; C6 a### open IPv6  port 250 _) o3 ?0 \* u7 j- X- Y
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
0 V5 Q6 z" ~# n/ e# j############ END 自己特殊规则结束 ################! m" O# x. W  Q6 d; T( i. H" z
7 b1 o; N/ _- c9 Y, p2 L/ V$ t
#### no need to edit below ###- f9 S5 a, A( l
# log everything else# x+ t% H9 Z1 t( `
$IPT6 -A INPUT -i $PUBIF -j LOG- y7 e  g0 B1 k: g% D
$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-3-8 15:26 , Processed in 0.294612 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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