找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18399|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
- |0 `7 c/ u; H% V1 E8 u) b+ J, d3 J" g+ [$ ?
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
. I2 f4 q& Y; M8 N ip6tables -nL --line-numbers3 E3 E5 @! S. Y/ C6 W
2 \, C2 C  ~3 a2 H( |
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
9 p$ W$ q( Q! r. I2 s; g% \7 `+ d
# vi /etc/sysconfig/ip6tables  A' E! B: d5 i* t. o
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
1 P$ |2 A7 Z% l& A*filter
2 i" ^) U4 p& e6 R2 ?! c- l8 {  P:INPUT ACCEPT [0:0]
6 Y1 z" w$ Q; j6 k- R9 j; K:FORWARD ACCEPT [0:0]- T  R% @7 I" J: R' {
:OUTPUT ACCEPT [0:0], t- x: o/ j7 X% |7 U8 u* j1 v
:RH-Firewall-1-INPUT - [0:0]& Z, ?2 G0 ^0 [# T1 i3 h/ o
-A INPUT -j RH-Firewall-1-INPUT3 a: T2 z" J& Q
-A FORWARD -j RH-Firewall-1-INPUT
) O+ V) n9 O5 I8 |. J/ }-A RH-Firewall-1-INPUT -i lo -j ACCEPT$ s* h  ~7 d# Q4 F
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT* H  T/ K+ K5 X+ e- o  r: ]
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT& ?& R& `% H& J6 R3 c3 d; L) v
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
. Y1 i: x# P' k$ A0 N2 s-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
9 k* K9 M7 c0 U1 C) q  }( w3 A+ B-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT1 q; P( G7 {7 Z# q6 Q
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT3 I4 t' m" m8 O5 c
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT3 J) ^' B* z3 }+ u; T! e
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT0 z5 l* F7 Z2 L* [/ ?- p3 m
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
& W' ]4 N/ y2 E2 ]( n- C2 L-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
$ f; m0 }( Y3 g* S# K2 ?COMMIT( x( v2 f+ Z. d( X% {
与 IPv4 的 iptables 规则类似,但又不完全相同。
  y5 Z8 `& F# S  R$ v" p. ]8 _. h% t8 L. m/ P! I( h# x
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
8 N- q% y, a; e* Q
: c# z( H" m; D' B) q# r-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT8 i4 E9 Y5 A7 L
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。- j  O! f4 J" w1 W% ?  u2 w8 N" u* ]
5 u9 Y1 ~& C! O* ?5 r
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:, W6 k+ @9 [1 n8 ]7 Z

/ @8 Y! E- @9 z-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT; d% Z5 {: m% l
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
! r# e7 {$ |% a$ y同时针对 tcp 和 udp 协议开启 53 端口。
8 e, |' X5 S. A- f! J3 @% n5 L/ K, V" O) T4 u0 T) g4 _
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
% G$ G6 L4 v8 \+ B, \# v
0 [, t. A/ _) w6 v-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT# q8 ?: ^, p# ~% j7 Y
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:7 j' w8 Z' M* B$ W. f* `8 B5 I
3 u8 C# U& l, Q
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT) B2 h0 }2 S/ F: L/ ?: |
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:5 `# }% ^$ g7 |% Y0 w- v. G

8 R' X8 B  ^/ {-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
3 t8 B! r% ^. O- m# v& O9 hCOMMIT! H( G: e1 W' r: C/ z9 ]) ?2 D
改为:; ]0 h( f8 Y5 ^
- M$ S# v( }  q
-A RH-Firewall-1-INPUT -j LOG. x/ w/ n* Q, _9 }  _; r
-A RH-Firewall-1-INPUT -j DROP
! m1 _+ d8 x6 NCOMMIT
$ M6 ~) x# Q& D8 h6 k保存并关闭该文件。然后重新启动 ip6tables 防火墙:
' h! A# ?% q2 ~2 C9 x7 w  `# O7 z9 @: X) b, A8 p2 ]& l. q
# service ip6tables restart) z  F5 ^9 e- g1 l& z8 h4 L
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
4 H1 _. s8 S3 F% }  Y& y$ Y& r6 f' V. B- p# f
# ip6tables -vnL --line-numbers; I3 O9 W# J/ S( A* Y# f
输出示例:
* w( g0 S: e  V/ O9 U9 {9 |( G6 \: E
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
! B& H# J) M( Mnum   pkts bytes target     prot opt in     out     source               destination
  p, |4 ^# t$ ]; S6 |5 R1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
6 k+ f) C3 k2 I- T) a9 u7 d% `9 UChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
! X' P- M2 y/ K$ \# `9 x* inum   pkts bytes target     prot opt in     out     source               destination4 x% j. z$ W0 h+ d- h+ _, o5 [
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
! l" L* t0 S1 b* ]6 \5 DChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
7 ^7 Y7 ]. ^2 j1 Mnum   pkts bytes target     prot opt in     out     source               destination9 m9 H) e' v7 A2 Y2 `: n  s& u, y- g$ d
Chain RH-Firewall-1-INPUT (2 references)  U  [+ j8 @, ~% y! Q: o7 `: _
num   pkts bytes target     prot opt in     out     source               destination9 I, C2 X" l( ]3 L8 `
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
: U2 Q8 C& h3 z! O0 y2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0. x  e9 u8 K& E+ p
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/09 v' T( S) O' w1 q- L4 @
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/02 a; m1 `0 m: I8 p+ \4 Q+ l
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
( e0 e2 I( K; j$ K1 q' Q6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631; I6 L! ?9 l# L* N' J
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
& O7 |# L* {. w& X6 A8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000) [$ S' n! Y6 I: u: F
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02' V+ a( p4 Q* B9 Z) t" |; g0 X! c  N
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
9 @' m$ [" z* K: D8 f11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:800 L" ^( p; e- t5 x# `# e* k
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
+ X+ }" _7 r" g) `& w- _13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:536 b! f+ T3 H  r; S! a! ^9 m# R
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
$ p' ?# e8 x( ?0 Z  P% iIPv6 私有 IP¶
: Q+ r% ^8 L5 W. g& `IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?! v$ h& n& K' o+ \7 C. q3 ~1 c3 c

8 h6 O- X3 s3 s: F不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。! Y, x7 J) `1 M+ z  ]; u

# t' I/ @7 s, g4 O2 d' ?自动配置 IPv6 防火墙示例脚本¶
1 Z* C' w4 I$ U# A与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
2 Q0 @4 }' l: Z* O
8 q7 H0 t# R5 x7 [. n#!/bin/bash  a, E% E$ N+ S+ g
IPT6="/sbin/ip6tables"
7 S% b$ I- E( O2 v3 t) z. kPUBIF="eth1"0 n& D1 v* Z8 ^
echo "Starting IPv6 firewall..."
' O1 l5 ~& K* u- M. @$IPT6 -F
# M( N$ V4 ^) c1 |, f& d$IPT6 -X4 }( p+ D; Y1 l0 h
$IPT6 -t mangle -F
% P0 `5 I) B6 T7 l$ x2 n3 `$IPT6 -t mangle -X" r$ t$ H5 c! m% ]% U
& Y, ]% ]$ T2 f8 U: m7 l
#unlimited access to loopback
* \7 i$ A! G4 u$ H$IPT6 -A INPUT -i lo -j ACCEPT
0 U8 }  S5 g% P3 m$IPT6 -A OUTPUT -o lo -j ACCEPT
9 N) f1 W4 f9 I0 X, V" O( x  F/ ?* |7 X) k, e- s
# DROP all incomming traffic1 l" z5 r' @7 N6 j( ^9 i
$IPT6 -P INPUT DROP3 r9 [* v/ f$ ^" Q6 u8 S  O
$IPT6 -P OUTPUT DROP; W! t8 H4 @9 B0 ]0 R/ {/ A% V8 B
$IPT6 -P FORWARD DROP4 ~1 t! U' X1 z5 ~
' }  h. ~& W+ f" K3 [8 Z5 i
# Allow full outgoing connection but no incomming stuff# m& w6 g6 z* x1 P; [# S3 A
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT; }, k" f( |5 U3 |! J5 S, u6 V
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT$ K) z# v% c$ W! f6 @! V* D

, e% H, ]' x) ?- W# allow incoming ICMP ping pong stuff; a6 }! r5 T( }! z, b' |2 A0 Q
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT) a+ e4 W: d' B$ ~0 y1 `  u- W* q$ f
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
6 Y5 f% @* [+ \# W; y8 L2 x, R. [3 h) `0 j- s
############# START 在下面添加上自己的特殊规则 ############; M3 I( v. r' y3 l6 }
### open IPv6  port 80 3 Q. @* n( |7 E: _; I4 {2 |4 a
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
% A1 w: P2 [3 g9 v: E1 P( u% O### open IPv6  port 228 |, r) S# B. P  |
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
! E( c  G: p; Y; }3 h' l### open IPv6  port 25: d$ n4 f+ S4 _' t; P, z( N. S: x7 q. p
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
3 K3 G* H! Z/ Q3 C3 ^1 M############ END 自己特殊规则结束 ################, w- f# H' W5 k/ Z  b0 Z! Y

1 z, q9 }7 q# _" b# \& j% \2 J#### no need to edit below ###
' t! f4 c# r9 w- ~) a" W* q- N# log everything else
5 O2 ]7 J) o2 M  e" k) F7 f$IPT6 -A INPUT -i $PUBIF -j LOG
' [9 P5 A' A8 a% Q! k( [8 d6 J: 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-6-25 12:49 , Processed in 0.073222 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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