找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17994|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
  u1 H: z! D9 \2 r
* b, J& ?! C0 o. x3 i; b/ ?在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:/ z' Q: N9 a% v
ip6tables -nL --line-numbers+ ]) C/ `$ R) o* ^

4 t9 v: U, C. e) j0 A: D% E6 ]使用编辑器编辑 /etc/sysconfig/ip6tables 文件:' r7 u1 Y& V" G+ w  b- P9 y
( I7 Z% R! Y. o$ V
# vi /etc/sysconfig/ip6tables/ f. m- h- v9 S1 t: z6 g
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)) C7 a( n/ p+ N! }. U: F
*filter
  }" ~0 t1 W% ?, h:INPUT ACCEPT [0:0]5 {; B% C6 r! ^8 |+ [  |- I" `9 U5 {
:FORWARD ACCEPT [0:0]3 t3 P! T, c0 P% y7 }' {5 H
:OUTPUT ACCEPT [0:0]% ]( X5 U  t& V
:RH-Firewall-1-INPUT - [0:0]% v8 k* \' N7 J/ J( s2 ~
-A INPUT -j RH-Firewall-1-INPUT. _/ f3 O0 K4 n5 e" i
-A FORWARD -j RH-Firewall-1-INPUT2 z- o) R3 m7 x) X" S& b: P9 o
-A RH-Firewall-1-INPUT -i lo -j ACCEPT4 C! U( ]/ q, s
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT1 T/ o& v* n2 D* B  E' |8 m
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
$ _( B/ j) s- A& I2 P/ V-A RH-Firewall-1-INPUT -p 51 -j ACCEPT) r: K* e" o% P% v8 E0 Z
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT# t: p& O# O+ z9 m
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
- ]; N1 d, s- l5 r2 r# Q0 S-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
! K- C$ @" K) @% g& {* O3 h-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
0 E) N1 y( B/ I3 {1 {# }- a-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT0 g, j1 K' o$ f8 }% @2 R
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT' B& o9 M5 R. o- S* w
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited0 C+ C" O2 G* p4 J1 c9 \: g
COMMIT
1 r; `; v3 c4 O: u  D! m与 IPv4 的 iptables 规则类似,但又不完全相同。' P4 U' {5 K  K  ^6 k3 Z8 ]
1 i- R4 C4 V4 b7 ^
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:$ _8 p5 B! j+ N& H4 X# M! \- V

% z% F  s3 U, `) e- n7 D6 B-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT: c6 ^# H' O6 w% y  Q* c# `* b
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。+ X+ s7 z3 e$ h1 F4 u1 t1 Q
6 L# H1 z: g0 c7 t) F0 S
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
8 S2 R$ K4 b+ e9 G6 @2 m3 v; w, c4 }- Q& K+ l
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
6 B1 o; u( i& O8 E6 b-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
- S# L  d8 l4 \' N同时针对 tcp 和 udp 协议开启 53 端口。
/ [8 R/ r) ^( ]% s5 X- p& A0 c4 h$ A/ `4 O6 ^
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:1 G3 r4 T6 f. V5 Y. |
& A  r# W+ K# X# ^( X% s  Y7 T) z" [
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT3 o0 z/ C# H0 l4 Z
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
0 K' [8 Y: X, r* V; x% G1 ^% W* r' K! N$ ~: f# Q- n+ D5 l
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
0 n: k) d2 S0 p# R% h对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:" W' |. N! z0 B: O5 T
$ E' Y: {  t8 X0 P7 U  f% g1 ?5 L
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
# i: M8 H% z' C. G# zCOMMIT
1 e4 z( u7 b! _( [4 R- n改为:' C( O% ?0 X1 @

6 Q# d2 Q/ ]( c. V& W-A RH-Firewall-1-INPUT -j LOG
( s, |% @1 K0 y7 w-A RH-Firewall-1-INPUT -j DROP( k* q) H8 ^2 G7 I
COMMIT
! O2 |/ O8 a6 T# ^保存并关闭该文件。然后重新启动 ip6tables 防火墙:' X4 a5 \! l1 ^/ N# s* H

7 k6 ^. g8 X, }4 i5 G$ [  A# service ip6tables restart
* W- S$ ]7 U9 ?/ o7 H$ m然后重新查看 ip6tables 规则,可以看到如下所示的输出:
  ]0 X$ l' q0 E
* u# R1 n) U% {% x+ H; O; K9 i6 \# ip6tables -vnL --line-numbers8 Z) J& |: {$ n8 ?. R
输出示例:% W# u* N0 W# u$ B: A- U" U& x, P

) c/ z; k7 s6 ~& F2 w  [: VChain INPUT (policy ACCEPT 0 packets, 0 bytes). b; p2 J& x8 T$ ?  T
num   pkts bytes target     prot opt in     out     source               destination0 C. d0 X8 r  V
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0, T. u: O& W0 d* C+ K0 A
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
! l( ]9 T( n/ w2 znum   pkts bytes target     prot opt in     out     source               destination0 |+ L% }* \, E2 m; _" x5 Q
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
/ \! C( }( f4 J3 a4 @. _2 zChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
* L4 n. g: ^& P  p2 y2 Nnum   pkts bytes target     prot opt in     out     source               destination5 A0 q2 e- Z2 d  L" S
Chain RH-Firewall-1-INPUT (2 references)0 a0 R  w9 m, E# Z: f  i4 C. Y' K
num   pkts bytes target     prot opt in     out     source               destination
. |- f: p' j# M6 M' l4 A1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
1 z; s% ^7 M7 b1 g, s6 P2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0. J6 {  i3 J, h9 G
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
0 T  G- B# g" a0 E4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0+ @8 @0 J' X; g) [
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
  q: N0 s7 o4 r! N6 {6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
$ |$ {# J1 F5 M9 e6 a: Y% y7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631; S1 N( c8 k& q# A6 i* W/ C$ \
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000$ Q2 F% e1 Z1 n3 B2 T# d. Q" F
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
5 g) y% W8 {, Y( `10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
( m* c. _4 ?- \* h  _) M* j( P# l11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80: Y1 J) {; K6 g. s
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
. x# @* |2 U, i' t% `/ Y% I$ H13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53; |, B/ E  h/ O( Y+ m
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
, f$ L( H8 `8 h* _# R2 i) JIPv6 私有 IP¶
$ P! j" T2 Y1 g, u' X. vIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?  A) D; L4 h9 ?: C

6 M3 x$ c6 l! ]! \  M. B不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。2 t5 J* E3 I# Y) ?; d
- o& J; X2 R- O( }0 [: n1 @' k( ]
自动配置 IPv6 防火墙示例脚本¶
" K; g  a: E/ ]/ i7 w# R/ m! M与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。- s: U# `" z$ U6 M/ }3 M

, t8 l3 a+ K/ c0 _6 a& f7 J, j#!/bin/bash* F- d. b8 {. p* p; j
IPT6="/sbin/ip6tables"7 m  v, K( Q7 X- ^4 O
PUBIF="eth1"
) t# l$ p0 q5 @4 ?4 `% C3 gecho "Starting IPv6 firewall..."6 o' n6 C$ @) G; d7 b. O, O
$IPT6 -F# K$ T& `" q0 {; ^) k/ p0 H7 n8 I
$IPT6 -X
" N* _& \. D, L* [! G& r' e/ u$IPT6 -t mangle -F
1 J) i4 z- m4 b' ^0 t1 ]2 R# E) X! |$IPT6 -t mangle -X- v3 x- l' V; C& k2 x- D9 e7 Y# S/ f

4 f7 [5 g$ F2 `, q4 K# @#unlimited access to loopback
8 c3 e) u) X5 }+ q& C; a9 S. Q- u+ ~- D$IPT6 -A INPUT -i lo -j ACCEPT6 d6 ~4 b/ e7 C( T' V( M
$IPT6 -A OUTPUT -o lo -j ACCEPT
. g7 n& O: O) q4 n5 K
1 M1 V; `# g7 b* _: B6 o# DROP all incomming traffic
+ M4 i0 H3 @8 @$ c' |$IPT6 -P INPUT DROP* a' d- m* f" Z/ \' r% O
$IPT6 -P OUTPUT DROP+ @# L# H$ E. Q' _/ k
$IPT6 -P FORWARD DROP
/ ?; x$ a6 u% {$ Z9 u, f, ]; T  h: [7 y- ?0 ?6 D2 [  _
# Allow full outgoing connection but no incomming stuff
2 v# N- r* R( [* w4 G, ~+ q& m8 R$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
# U! E& M( A2 T$ J( e/ L1 @$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
. i% y6 a  B* {1 T- |0 y% A6 p% ~4 y* ?3 Q. O" y# Z, Q
# allow incoming ICMP ping pong stuff
7 W* G% d5 L8 f3 j" u9 i. j. I$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT* `3 c6 ?6 u! ]: a: y# A
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
0 h+ [$ M* O; |% W; t
' j% L' N& o+ h; ^- y$ d8 @############# START 在下面添加上自己的特殊规则 ############; s  u5 c4 `7 q! X; Q
### open IPv6  port 80 : j4 V# s- }0 ?" X- f
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
- `8 p! p( {# b. t### open IPv6  port 22
6 i9 n' `; Y% r# c9 D#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT" L5 F1 ^; [" f, E1 ?/ W
### open IPv6  port 25
. d% n* j! Z" n% U7 R7 h8 y' _: S#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
0 [( B# u+ g5 U( P############ END 自己特殊规则结束 ################8 d3 ^" e8 V, {

6 O5 R/ h! ^. `$ J5 |#### no need to edit below ###
* O# o: A, K" s# log everything else
' W9 n$ _) J: z9 t$IPT6 -A INPUT -i $PUBIF -j LOG
5 d4 V4 I/ q0 @, @$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-5-16 20:21 , Processed in 0.076719 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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