找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19076|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
7 h9 O& ~! V& W% D* Z. n. U
% j6 e9 P, u9 A. o在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
1 X1 i7 W4 X$ ]6 E5 |# |! C ip6tables -nL --line-numbers
. ]* k" |, R5 d6 c2 j& [) W. y" X# d9 i: X) Y) A* v: U. M
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:2 ~8 x- Q4 T) O8 [
3 |7 H, U! ?  U6 L# H
# vi /etc/sysconfig/ip6tables
+ }  P" S4 Y. b/ R2 q. a7 g可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)  f. C) v; K2 G# e
*filter# O3 w4 m- r4 l6 n: m
:INPUT ACCEPT [0:0]
# |7 h8 E( r% X8 Z" M9 B0 z# E5 q:FORWARD ACCEPT [0:0]
% n4 y/ C8 [! c  S5 ?4 Z1 K: c:OUTPUT ACCEPT [0:0]
4 R  u) ]0 K. R) {5 k, q:RH-Firewall-1-INPUT - [0:0]. C  e$ R+ [  |$ h8 q( ^
-A INPUT -j RH-Firewall-1-INPUT* g/ w3 W  x7 U( L; `
-A FORWARD -j RH-Firewall-1-INPUT
# \# j* p/ i; t+ V-A RH-Firewall-1-INPUT -i lo -j ACCEPT9 S3 D& J. S$ |8 A5 z$ m1 }. k
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
6 {) s4 }& I1 w  z-A RH-Firewall-1-INPUT -p 50 -j ACCEPT5 |. c# s3 a" r9 _
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT5 N9 B( g' U  m8 Z0 f
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
9 }0 |, |/ i  z/ {-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
( T1 H# v. O4 Y* p( v-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
0 A* r, Z( [: d' z. g5 s& S-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
' l, T" \+ Q# o8 J. R. b-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
8 a- F& Y! m" A9 u, I-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT  N1 V* n' U0 f3 N
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited5 H7 x5 i  U( K6 R
COMMIT# G4 v4 {3 L) g) v/ b7 h& U" l
与 IPv4 的 iptables 规则类似,但又不完全相同。
* z) y$ ~; ~$ \; Q! B# i2 x5 T6 A* L1 D4 Y
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:# z% G) {4 z0 f: M- m

+ @2 E( f5 ^1 w% j' d. v; `-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT. \1 Q6 D& ?7 z" k; v4 J
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
) D: i: L; e# C- [- n0 u" N: v0 }2 g% x/ ^
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:/ I; I6 _6 E3 g3 R
0 P' _: D8 {. x# ?, n& W9 v& i
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
  j# R3 B  S$ \, |5 h) e0 H-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT+ W. C& c1 B" p' Y
同时针对 tcp 和 udp 协议开启 53 端口。
3 r, O2 a+ p7 Z, S! l$ B8 y
" b% l) g7 O, z8 u5 n6 R要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:# k2 X9 X; l- n3 k# h  O2 ?

* z8 p9 @$ j$ p# e: f. k  {* H-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
. C. B+ ^" f# S9 O. ]& m要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
, {  X) E  ^' v( j' F
! y4 N9 E" k: d, {-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
, o$ O8 e  t% t; }对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
2 y1 \; \; ?& n& O2 n: H' D( \, ?2 b7 h3 m7 X/ A1 f9 t
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
/ X7 k: ]" R9 b0 _$ N: C' B4 [3 PCOMMIT
; B: z1 l& j" O# t+ _. e改为:
# S/ E' {4 b2 _# p8 J; y7 F' c4 q# C/ p
-A RH-Firewall-1-INPUT -j LOG
1 W1 L. C8 ~# N-A RH-Firewall-1-INPUT -j DROP" p7 X* {& N& Q% r
COMMIT
  F. n& X. X3 h+ m4 b! M保存并关闭该文件。然后重新启动 ip6tables 防火墙:7 N# a; ]2 d  Y) c: {
* x' z6 B8 r" e4 V
# service ip6tables restart
5 X/ f- m/ j: G! F; w8 G然后重新查看 ip6tables 规则,可以看到如下所示的输出:0 y- c0 J4 L! h  D1 M& Y) e
4 H+ `  F/ S& k4 o! h* T6 I
# ip6tables -vnL --line-numbers
; Y' ]. [+ {& T) w) N9 y$ d输出示例:
) x, U- c0 D7 H. i, S
1 b; y" F7 I4 eChain INPUT (policy ACCEPT 0 packets, 0 bytes)
6 \) K2 S8 t4 y9 ^9 p/ snum   pkts bytes target     prot opt in     out     source               destination+ k8 ?4 T/ \6 u( z2 I' o  m
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
$ A$ P! L: z3 b1 i6 m+ IChain FORWARD (policy ACCEPT 0 packets, 0 bytes). }4 [( ]' G# n( O: {, e5 X( U
num   pkts bytes target     prot opt in     out     source               destination5 _/ M( k) W2 ~; ]& E* H" @, }
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
# x7 P4 i) M- j# l- G4 [Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)3 o7 w# z% O6 K* {9 o: H
num   pkts bytes target     prot opt in     out     source               destination
' z. Y! k! ^7 ?& zChain RH-Firewall-1-INPUT (2 references)! ]% w" z0 u+ ?3 ?
num   pkts bytes target     prot opt in     out     source               destination
& |+ k: Z  P2 s& ~1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
  X' c. f! V2 h+ r% L2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
" }& [* _+ ^6 H4 o$ }3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0) o/ N! T+ m8 p, b! o6 ^
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
( G9 Z7 _* U+ H. m  W5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
' o9 y& F+ x1 A, i: u, H! N6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6312 g2 M0 W5 v) s' `8 O: t
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
% @4 ^) \0 R/ \  B3 v  o( S8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000. ~4 }5 T! }( K5 Y
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
3 N0 A# t  [) E/ i10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
* e' K8 S4 e! b9 u7 g11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
4 J1 W+ l9 n' z! @' l8 p7 r9 c1 z12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:536 h; B' E* g$ y$ s! u* n: h
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53- l/ A3 s# e% ]4 r: L/ o, k
14      18  4196 REJECT     all      *      *       ::/0                 ::/00 P3 m8 b& a* G+ p# c
IPv6 私有 IP¶; o- K% S; h& B
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
( a* l0 ~: b$ x  Q3 K0 N
$ y( \8 B9 r7 s% J; L4 U$ [不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。) i# Q3 }3 d7 u% H
' f8 H5 X0 P& y) ?$ q" b6 G. Z
自动配置 IPv6 防火墙示例脚本¶
5 H! |3 u/ l2 T. F6 |# f; X( ~与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。1 K2 G5 Z. w! C- A$ C! G

8 {! L7 x" N) n& |& S( N8 [#!/bin/bash
7 Z  q7 L8 C7 EIPT6="/sbin/ip6tables"# o1 F: I7 [, ]1 v( d/ \
PUBIF="eth1"
7 n; r3 ^0 S* I4 G0 fecho "Starting IPv6 firewall..."2 j3 g6 J0 ^2 h9 j/ B) q  A
$IPT6 -F
% l3 u% Z, |" N$ L$IPT6 -X3 q2 W6 M3 ]- h. j& e6 ]
$IPT6 -t mangle -F
1 Z8 r2 B( P9 Q9 \: b: l9 m  f$IPT6 -t mangle -X
. ~& i& {/ l* g9 K- s+ W0 N4 ]
* K  x0 C7 V& g; \" [& }9 {7 c/ D#unlimited access to loopback
- ?  t) x3 N" x* a, R$IPT6 -A INPUT -i lo -j ACCEPT
- w8 {0 r: c: X2 K: j0 B! V$IPT6 -A OUTPUT -o lo -j ACCEPT& B  k7 u+ i3 Z$ M5 i' E
! S! S# G' Y# A/ y/ d; a
# DROP all incomming traffic
5 S+ ?# f8 o1 _$IPT6 -P INPUT DROP
, {- Y7 Y! O- n$ b$IPT6 -P OUTPUT DROP
& s$ U7 L/ ~% t& r, `' Y$IPT6 -P FORWARD DROP0 R  B/ ?& ]' e" O
8 e6 L. c8 Q$ M" Q
# Allow full outgoing connection but no incomming stuff9 A4 W8 F, C6 ~* B% d
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT! V0 |* o3 z( b+ J- S
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT* j7 o$ Q; c4 A5 o) l, f# m% }
& K% h: t8 |  U( |
# allow incoming ICMP ping pong stuff2 V3 N; C0 B0 f. ~: ?% H
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT3 `7 L' l0 _& V$ \
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
' B- [9 m. h1 t
! ~0 E: f( R! n, l" ]& K############# START 在下面添加上自己的特殊规则 ############
: }  p& p! y) |' |& `/ ?; K### open IPv6  port 80
: u4 _; P* f5 X$ q  h4 O#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
. g2 V+ U* r0 R9 J- e( @* P### open IPv6  port 22
! K5 E$ }2 r: i, R8 D#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
5 P: T$ a- q% ?9 ~$ {6 I### open IPv6  port 25% |! |6 n; E, ]! ?" r
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT. M3 l3 E8 u& _& X' v
############ END 自己特殊规则结束 ################
1 r' x- R# Z" O6 S4 y5 W8 D; R
7 \* Q' s0 M# X2 n1 ?) X1 R+ l#### no need to edit below ###/ w& O1 m$ |8 Q( h) m
# log everything else
, I$ \8 Z' t9 H3 q( c$IPT6 -A INPUT -i $PUBIF -j LOG: D  g( b/ K& f" n( ^8 x
$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-9-9 04:06 , Processed in 0.053776 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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