找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19393|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
: ~' z# @& A1 t# O6 k5 ~- N- H6 F" z, ?7 T1 i, A
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
3 `( L9 @7 t7 ^; {6 u/ Y' {2 S* f ip6tables -nL --line-numbers+ k5 d6 x3 {2 Z" C0 a% o0 |
) T4 u( q! o( j: r4 I3 T: D+ S/ K
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:: I' V# m0 D9 O0 e* H

2 ~1 u4 t) ]% V# vi /etc/sysconfig/ip6tables
) {* \" Q( _. _2 Q& |! t% Q8 z$ _% U可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
: K8 h- Q* P  y9 e: A7 N: b*filter  G' q/ `6 v) ^; y. s, Z
:INPUT ACCEPT [0:0]
& m* I, ~0 g6 N+ `% G:FORWARD ACCEPT [0:0]! n9 n4 ?9 Z' [, {  b2 s7 D
:OUTPUT ACCEPT [0:0]
+ C# M$ M" N: W2 ^:RH-Firewall-1-INPUT - [0:0]6 X( U! U$ Z- w3 M
-A INPUT -j RH-Firewall-1-INPUT
( Y, C1 W$ O  P- c-A FORWARD -j RH-Firewall-1-INPUT
* _2 A1 k2 c( A-A RH-Firewall-1-INPUT -i lo -j ACCEPT% U% B5 T& ]- `& |  c, i- B2 P. W) }
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT% m5 L: U! l0 y! K
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT& v+ [4 C5 Y1 R6 y
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
' C) n7 K& Z) h* N/ B-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT' ?; H; ^1 x$ M1 r
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT+ d( }; I% n( c
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT, r6 K7 k8 L' f' u  f) E* F
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT; g5 `* z" k% g9 k# j3 _! C
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
: Z) N5 \" [- @8 U$ j0 q-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT9 z+ D. D( D" w' T" l, E
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited; q8 f& x0 n: _7 N0 m, u( B+ g
COMMIT
( v% N" ?2 i* j. \3 r/ Q  v7 V与 IPv4 的 iptables 规则类似,但又不完全相同。5 k6 `4 B8 P7 w6 O! S& B5 U

9 f1 H5 L9 t( e* G( }( L要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
" P2 Q. g! P9 L2 H
( B  w) ?4 \. o; F; G# g& E2 l-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
; `% J% G1 ~  G* Q# l-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
0 C7 ]) a* Z  I, m! y  B
! N6 ~& w2 U% X. G0 t% Y* P要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:. y5 i" N/ i: ?3 ]1 v

$ s$ z" q" W8 g/ y1 t-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
( m1 t. z) r- r( ^-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
0 g( t3 C, N$ ~, m+ G9 b  a同时针对 tcp 和 udp 协议开启 53 端口。
: ]5 h; }2 C5 C' l! X# L: V
% }5 O9 \4 K1 H" ~% k要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
" G7 G1 Z( K6 z9 p9 r5 O3 x7 o  p, m9 Y+ c* |3 W* f! }  }
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT! y, M# m& f" o; ^
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
) ^0 L' }3 @  z6 P0 r
5 L  `5 w% V9 z-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
2 V7 m9 p" G" }对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
, I% X" `2 n3 w/ P8 h& D0 N+ C8 L8 C$ B/ A! N% s+ c" V/ |; P
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
6 |) P% D" r- m: fCOMMIT( L$ s/ m& j2 v8 L6 K+ M
改为:: v9 O! \: g) ^. V( t. C0 l

& q  ?; n+ U# B% g-A RH-Firewall-1-INPUT -j LOG
8 A3 @6 F- D. E9 t' a-A RH-Firewall-1-INPUT -j DROP
4 o5 W, Y; c- ~7 D! ICOMMIT
9 L1 c( m/ K0 H7 [保存并关闭该文件。然后重新启动 ip6tables 防火墙:) T  j9 d! j9 X9 _+ Q( {

* t# B7 b( J3 l* R8 s2 v' m% o# service ip6tables restart8 t  u$ g) e' a# _" [
然后重新查看 ip6tables 规则,可以看到如下所示的输出:. b$ i' J* o4 Y3 [

4 M+ m) R  _" u: e& g/ b7 Y. O# ip6tables -vnL --line-numbers
. g' K9 u* W4 p输出示例:. u; [' E" F5 G7 B* y+ h

8 y/ v. L; N9 w* W, I6 R- t6 q) l, gChain INPUT (policy ACCEPT 0 packets, 0 bytes)( x# t! S. p+ |! o$ l
num   pkts bytes target     prot opt in     out     source               destination
! h: i+ ^+ O; {; d' {7 q1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/05 F- k- o, }. o  v1 T
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)& `8 H& d" w. ~% A5 K. S
num   pkts bytes target     prot opt in     out     source               destination
% R$ Y+ D: X' {7 D" B9 `1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
3 A/ c$ y, U  m1 M  CChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
0 r  G: V; W0 c  Q$ l2 rnum   pkts bytes target     prot opt in     out     source               destination
5 {7 I$ [8 M! b( ?' z. d* _" TChain RH-Firewall-1-INPUT (2 references)
5 F1 Z8 J1 \6 @/ o7 K& X" O0 inum   pkts bytes target     prot opt in     out     source               destination
5 J% r) Q8 X1 k1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
  O& ]6 p2 K! v- v2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
" n2 X7 i) P+ x8 N) i, f3        0     0 ACCEPT     esp      *      *       ::/0                 ::/06 t- ^% o1 Q! I; h. l
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
! S) n' m7 a) R; k5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353% T, B9 J5 h5 a" ]5 t, z) c
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
2 N8 c7 m8 P3 c! \1 v* d; p6 p7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631, ~( n: C; e* n8 B4 |/ ~  ^
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610007 `- B  @& _# s" {) o8 k( Y
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
( o; U' }; C6 z& O! `/ q9 _10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
* w9 q6 O, i" h6 i! O" G6 u11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
/ g6 H1 Y1 V6 M" [. s$ @12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53# s' ?4 D) K6 G+ S& l% h
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
4 D6 p% r0 {8 M9 k) K+ ]14      18  4196 REJECT     all      *      *       ::/0                 ::/05 B7 o6 y1 T, d' K# `( h
IPv6 私有 IP¶
/ {$ _3 ]4 _( j& h% d- Q0 W( G) B/ z( xIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?% H$ b* ?% F9 I" j: k' _0 O
% r  X' `0 w& E( [/ h" t
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
5 s% r- b' ~5 d! c+ C- [  e/ k0 U. `3 T9 [; M, @
自动配置 IPv6 防火墙示例脚本¶
3 w* L7 V1 m% l与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。8 j% V* F; @# m2 H4 H% B
5 }+ m! T5 U: y7 c
#!/bin/bash
! ^" U( ~$ l3 s$ l9 U$ E7 A% cIPT6="/sbin/ip6tables"1 X, G/ L# N, u; R+ E" n* X1 L2 Y
PUBIF="eth1"4 k. d/ T0 z6 F: q8 S$ g  w
echo "Starting IPv6 firewall..."
0 x7 |" R+ }8 s6 b$ d3 j$IPT6 -F
+ g" p4 t5 e! }% B& O6 }$IPT6 -X
3 |7 r& e! k( F6 T* B) ]$ U5 e$IPT6 -t mangle -F  x+ |2 _7 y$ j
$IPT6 -t mangle -X
1 ?( L; V1 _' C  m1 E
. h7 N0 g8 }5 j, W7 P' T#unlimited access to loopback
- ~9 D/ z/ K2 D+ f, E4 {+ u5 C$IPT6 -A INPUT -i lo -j ACCEPT
- y# U1 V) J, s; c$ V& K$ c$IPT6 -A OUTPUT -o lo -j ACCEPT- V7 j" e0 Q& R
: W3 k4 _( V6 S" X6 G0 x' t5 M
# DROP all incomming traffic3 b, J$ {. l' @  `8 r9 w
$IPT6 -P INPUT DROP, I4 `, E% d% N4 @- |! F
$IPT6 -P OUTPUT DROP4 U2 e7 G6 s& V
$IPT6 -P FORWARD DROP0 B8 p( v) U: d1 e1 ?
# f7 _! ]( h* @* `  M. Z, H: y
# Allow full outgoing connection but no incomming stuff0 `+ k0 k4 d6 n/ _  H% A
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT" k: |% R3 \8 P
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT' n1 ~% _# }" ?* {( d

1 o+ w+ L" p, c0 O4 S8 K. w) }# allow incoming ICMP ping pong stuff9 T: q! I( g. x
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
5 V5 r; b8 {. |8 {# U7 V# r- j/ }2 t$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
" D6 ?1 _" y- ^8 E7 [: L* l, {0 d" v3 S
############# START 在下面添加上自己的特殊规则 ############5 b% Y- c% z4 X/ z% E. g; p" z* R
### open IPv6  port 80
6 K7 @2 W1 i- U0 n( n' W3 B9 r/ d#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT5 u: \/ l8 X2 Z( ^$ z, q
### open IPv6  port 22
/ ^/ i% ?4 m4 \- U1 J#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
0 J4 s0 z8 H  o5 h( s0 j### open IPv6  port 25
& N+ L# a; Q  N& `1 x#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
& x; f+ s8 x6 L, X# F! E############ END 自己特殊规则结束 ################& a. w  _( J& Z8 x. }. u

0 I' N  z2 P, T! A#### no need to edit below ###
8 E* h; t0 f- D" ~2 Z+ k9 e& n/ @. d# log everything else. y' U: z( ]3 @/ g' m; }9 Q
$IPT6 -A INPUT -i $PUBIF -j LOG5 q- @3 g4 z7 Z2 T; Q# O
$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-10-24 17:48 , Processed in 0.055214 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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