找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18535|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
' F8 ^: Z1 B! _+ n( k8 B! W7 J/ m/ _
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
2 ^, e% i7 t; ^6 S7 c ip6tables -nL --line-numbers
6 T- g$ f8 `" \! i) N  v, Q( M  d4 V8 P$ K
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:$ ]$ S0 N- O; V! R* {
* n7 U+ q. m) r- g1 C' m5 i
# vi /etc/sysconfig/ip6tables' o5 e; P2 `9 L. k1 X
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
! f+ u! N: W0 K* w9 A) U" m7 I*filter
' u7 S1 O' E& Y4 }: _5 y:INPUT ACCEPT [0:0]! C5 s. p! }  H
:FORWARD ACCEPT [0:0]2 }) `$ R; X7 z" w/ k
:OUTPUT ACCEPT [0:0]% f3 |% V: @; Q) H$ x, e5 Y4 ]2 _
:RH-Firewall-1-INPUT - [0:0]# n8 ^, ~" W5 V: g* |
-A INPUT -j RH-Firewall-1-INPUT
+ t* m6 A3 i# {; ^5 G-A FORWARD -j RH-Firewall-1-INPUT( c- `  d/ p& a5 i! {/ L: ~
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
- f0 n# U* U1 a% h. I3 Y3 s7 f-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
+ {" Q' i* V/ s-A RH-Firewall-1-INPUT -p 50 -j ACCEPT. Y; G2 n: u! J9 p2 k8 P8 F& c& o
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT1 F4 n+ x  M2 W: D
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT8 h$ R$ Q9 j) I
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT6 x4 C' {  ]% F3 v  _  N- K7 }' t0 k
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
1 B2 m* p: N: u# s-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
# L2 h* j: \; s" g-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
; e4 q0 B# [9 N- [-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
, j' U" d; v8 r4 E* D-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited. M4 W' a6 [' X- v* J
COMMIT' h/ i/ M2 ?: H
与 IPv4 的 iptables 规则类似,但又不完全相同。
. s2 z- x; g6 F  R4 U2 A1 X% q2 E, P8 F# X+ z/ {
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:/ w" L2 P% m* p9 K
6 u1 w: I! h9 B  W. u6 }
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
2 B; K% M) m9 y! F2 F5 ?* D-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
- h: s% o$ x) g' [4 c
" r* C- T& ^& e; ~要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:; F  x' v8 x% U+ t$ t
/ E. [2 r. {" I+ L
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
; [, d" a3 `; U9 ]$ z1 s" d, D4 I-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
; S) \. n+ y; M8 |同时针对 tcp 和 udp 协议开启 53 端口。9 w' f5 k$ ^8 Z" k1 L- F4 R

8 C9 Q* j& i" ?) T要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:" v* i3 A8 q( |

* M" f: v+ S  w  h, r  I6 A- C-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT( p! K2 j9 s% M" d3 M
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
* u# G% N, n* w. K) f: x% @/ m. [. T, c7 `: |. G
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
; H$ q; W) j# }3 ?对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:3 r( x( k2 C% ]

, Q' F- s5 F1 r& t-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited- l  H6 Q5 _3 a2 D
COMMIT) f" b5 A9 \& K9 F; l" S0 |, W
改为:
/ x3 q2 ^+ L; p' e  {) B5 x
  Q/ {, _. q% Q6 R* M-A RH-Firewall-1-INPUT -j LOG
& N9 }  L( R8 A3 J  F( K  ^-A RH-Firewall-1-INPUT -j DROP4 l! g: @3 f' w
COMMIT8 _/ ?! G+ Q3 W$ v
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
4 W- J' T# n2 L% i1 t+ J) E0 ^) W8 ?
# service ip6tables restart+ |6 Q! F& J4 k5 M& f* V4 x
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
, P) X: M0 u7 x4 y! a$ b5 z- O; g9 ?& N$ F2 y
# ip6tables -vnL --line-numbers4 |% R& u: ]& g5 t# P( I* k
输出示例:: M: ?; Z+ U7 H$ i3 ~
7 {& ]( v( D! S0 Q. y6 A, D5 ~$ X4 Q6 L
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)7 G+ g. [& |& i+ {  e: {
num   pkts bytes target     prot opt in     out     source               destination8 [. d" K3 F: v9 G# I* N9 d
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/03 N" ~. C( s& i5 [/ q& e4 i2 B
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)5 I3 g  o/ W9 a
num   pkts bytes target     prot opt in     out     source               destination
, N( @0 \4 I) ]5 q7 l& x/ t1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
4 n  D6 E+ N! Y/ v. R* \Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)+ ~9 {9 ~1 z& e' r% T
num   pkts bytes target     prot opt in     out     source               destination
- G* M( a" U1 _6 P! q) X) ]' _Chain RH-Firewall-1-INPUT (2 references)- }( R5 {# V7 g# }* U
num   pkts bytes target     prot opt in     out     source               destination
  f4 Y- T& @! k1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
  F7 X& r+ U: d6 u2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
5 z% s; S# M3 }: L" M, f+ |3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
) G) W9 n& j8 t2 d( f% z% J5 c4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
+ @2 h9 Y5 ?# W5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
$ @  d1 _! t9 f4 i# z# y7 J6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
0 d8 W! V, {, e% s0 J7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
- ], k+ F- @: w9 o8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
0 ]' H5 r: u0 k( u) u9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
2 V+ N+ e4 I9 X/ g: u10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
8 s) @: B5 \) l% e, I) [# y11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
+ [7 R# t' _8 V, x$ C8 F12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
/ {3 @# d$ O% a) i3 y/ [# q8 t, i9 A13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53) b! `! V7 J( r2 b2 A+ C; I9 M
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
# ^& i9 k' Q% T* j3 k" y, rIPv6 私有 IP¶) F1 Q+ ?* L: ?& M! }
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?$ U* L* D! q# f$ ]

/ [, S" v$ X# {  Y不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
" I* g! I3 K7 ]* C& e
) N# Y/ ~6 [6 |8 W, }自动配置 IPv6 防火墙示例脚本¶$ \- N* |6 W1 D  v
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
: |! F! _5 {% B: H( N! z( r# v
8 e6 j/ w1 w+ [& C#!/bin/bash
' X( o$ D' {: _$ bIPT6="/sbin/ip6tables": y7 e5 {6 H3 J
PUBIF="eth1"" W, i4 X7 c( q/ |% _3 ?6 h0 m8 F
echo "Starting IPv6 firewall..."# U1 s; Q  o  s
$IPT6 -F
; e# \* _9 T1 U# e+ Z/ ]$IPT6 -X
9 v  ^* W5 O9 X. s" T; i: ]3 I$IPT6 -t mangle -F
7 |2 O1 A4 U4 _+ c( w; h$IPT6 -t mangle -X2 h6 |5 j3 Z9 d3 D9 l- _

5 n. k9 i. b3 F6 C5 Z#unlimited access to loopback5 T, s1 c- E% k. ]* t$ c
$IPT6 -A INPUT -i lo -j ACCEPT
+ B+ {6 ~# a' r- F9 m$IPT6 -A OUTPUT -o lo -j ACCEPT1 e& Z  p; v  V& n6 ?% R

3 V) O8 ~8 S5 u$ _0 c# F# DROP all incomming traffic
; o9 B" m  M* V! ~$IPT6 -P INPUT DROP
: v: }' z- g( {4 n$ r$IPT6 -P OUTPUT DROP( J. ^1 e- q$ B+ V- F- A4 b
$IPT6 -P FORWARD DROP: v' ^; @# G) A. E( Z

, z- L! V# u( I8 l1 E# Allow full outgoing connection but no incomming stuff) p! A# O% m5 ]! R
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
. T9 }) z) a! p0 ?+ b" V  J3 n$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/ S0 p& a, u2 {0 _/ k" m5 @' G8 j
: v6 j5 X) L/ q; M# allow incoming ICMP ping pong stuff
" ?- p4 ?6 n% |# K- m$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT# S2 V' O- Z& O$ t; z, E6 }
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT  Q/ _# g$ u% A+ ?
- q, ?" Y: f, K$ f. J" |
############# START 在下面添加上自己的特殊规则 ############
% {  t+ z* |- t, ~( B### open IPv6  port 80
! y4 d9 P: S- y# W* A& C6 F#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT' ~/ H4 I9 T0 a1 d3 i: N( N1 S+ G
### open IPv6  port 22
/ Q* @2 R. l) g! E6 T( o9 _+ x& x#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
! C- Y  |$ I6 t. Z3 r% x/ v### open IPv6  port 25
5 t% M) A" C% k8 }% H+ H7 W#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT1 d# M5 |" n; @  N' m
############ END 自己特殊规则结束 ################# ~; K0 @. c6 z+ D

# g% s" Z& x$ A% l/ |- M. L% G+ k" \#### no need to edit below ###
' Z# c5 r" i" D2 A9 Y# log everything else
/ M+ e9 j0 g3 f9 }- V, m5 [) L$IPT6 -A INPUT -i $PUBIF -j LOG9 o3 }4 i9 f5 `/ E
$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-7-8 00:14 , Processed in 0.073410 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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