找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19247|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。( Z7 J" D" O0 U3 e% H
+ y$ c* [; c/ \
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
% A! l0 s! l; \& ^ ip6tables -nL --line-numbers, L8 {8 j. V: O0 g% r
/ @3 B+ S) d# F9 X
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
) Z8 X6 o( c/ o  B) v! D4 T# ?0 e$ ~* T
# vi /etc/sysconfig/ip6tables! ~: r# O) [5 G$ t- s
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
; m7 e" }: h- ]" b+ C# c*filter. G5 v- W* }. j! `- T) z
:INPUT ACCEPT [0:0]
$ g9 s: N" c( D# U2 r:FORWARD ACCEPT [0:0]; q6 P3 o0 V7 i3 ?& [9 h/ _  u; ^
:OUTPUT ACCEPT [0:0], f4 B5 A& Q, D; S- p+ H6 U
:RH-Firewall-1-INPUT - [0:0]; O3 }) p" v/ s3 c# G
-A INPUT -j RH-Firewall-1-INPUT: `9 m& m8 K* l0 s+ ~6 }% k
-A FORWARD -j RH-Firewall-1-INPUT
$ k" F. X- c% U* S-A RH-Firewall-1-INPUT -i lo -j ACCEPT
6 v7 W2 R; a/ i# \-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
' K  `; |# H. Y" Y-A RH-Firewall-1-INPUT -p 50 -j ACCEPT9 j! l7 a5 s# B" M5 n" ^- \& A
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT- u( N" D% ?, e' v
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
. t+ |/ z! x! p8 l-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
, r. B4 y. W$ V4 Z-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
* x) }! @8 c2 J-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
4 F) G  h+ Q3 f/ g/ k* M% p- e7 h-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
  V* _9 F  f7 T4 R; C-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT, _  B4 U9 x( D; [* x0 R0 ^
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
! E* X" K9 N# b' |2 z/ P( CCOMMIT
& Z- C5 O1 N  g/ t% v9 x  r与 IPv4 的 iptables 规则类似,但又不完全相同。* q% E, ?' r  X1 Y1 b  y
, y7 ~* p# k8 u/ N7 V* C9 ^
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
: [8 U! K: |1 L  M/ U2 x
! z, u. y" b, H$ K$ d: b6 e2 R-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT6 B# K+ T6 @3 {7 `9 j4 d8 ^( X- F
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。: }* J! o; U. a- ~4 H$ N
" @/ D  T, `4 b4 P! u/ s
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
$ e' u' O* W0 P+ u
* I/ G& d* z- v0 p% Q. R-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
4 r1 z/ I' \5 `, H" b-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
* C$ n2 I7 m: Q& f$ R同时针对 tcp 和 udp 协议开启 53 端口。
7 L7 G1 C3 e3 `
5 F. Z8 Z5 C  V# @2 r, J$ K% r要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:. _4 }& e# I- n8 Y6 j

; G; I7 {* T  R" h& ^& {1 K" [# l-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
. i! c  U9 q, w% D3 ^* i2 J9 X要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
, F2 i7 A8 ~, n. s1 E+ a6 W5 K$ o! O0 z) ~2 B
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
- U: ]5 _$ r8 g- z, l$ c) r对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:5 K( _& r2 U. f3 N. s0 I; I
; B" l/ S9 m7 s" F0 g
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited6 }( P% R& s. a# [  L$ A5 x
COMMIT7 u/ C% t3 H5 W% G: `0 V7 Y# \
改为:- E$ c8 u4 y+ w2 O
' R# Z' D7 l$ _  o) ?
-A RH-Firewall-1-INPUT -j LOG
4 f. r; N6 m8 e+ j) L. S-A RH-Firewall-1-INPUT -j DROP! [( \# V- N& w  ^0 h' D/ ^/ Q
COMMIT: H. n. R' V8 S+ y9 X3 f
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
- w; L5 T. [. ~2 G* x  A2 s2 f0 b9 N9 N5 \- @* B" V
# service ip6tables restart
3 D6 s1 D9 W3 e1 c# T, b然后重新查看 ip6tables 规则,可以看到如下所示的输出:
: ^' p# L8 y; K7 ~7 O- @' F" u1 M  g4 j; o  w
# ip6tables -vnL --line-numbers
  ?7 U, i, O; z6 W输出示例:
! @7 ?' w4 D9 s  |7 h
3 D" `0 c4 o' P4 n' v. {8 YChain INPUT (policy ACCEPT 0 packets, 0 bytes)- s# u+ P( t2 m  R+ ]2 T
num   pkts bytes target     prot opt in     out     source               destination3 J: c0 W, z+ P$ @9 Q$ @
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/06 B+ c9 e4 P3 T% y2 p/ K1 j
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- A; {% I  \: a( n8 lnum   pkts bytes target     prot opt in     out     source               destination
: h4 f' {- S% u/ P( w! U: U1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/09 e# k( ]( j) K# \
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
  N% z0 T% k% r0 y6 V8 Lnum   pkts bytes target     prot opt in     out     source               destination8 I0 b$ J/ [* q9 g( k
Chain RH-Firewall-1-INPUT (2 references). P# l8 L1 E1 S6 V9 P
num   pkts bytes target     prot opt in     out     source               destination1 ?2 w" w3 v5 T9 N% B
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/08 w- A1 s- J( W8 O' [8 v
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/05 b6 ^+ T" E# }% q9 {" ~  A) P
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
- N7 L7 [1 e$ ~0 D4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
$ [+ S5 E, M+ H) q  P5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
/ ?! n  u$ i5 [6 Q6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
0 m2 V( A) ^9 i. }3 f# x! {& R7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631  w) ]" v% ]5 g  s# P7 H
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
- @0 a& t, k; i- N" W: g! Q* R3 t9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
/ g& [; L% O- Y# c3 v  p0 X10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
  s; P$ z' ^8 D7 t. _- R; B8 f11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80  `7 z" e2 d4 E( [  K( X
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:534 S4 D# |, _- l* N/ H/ {+ ]
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53* A: r9 q5 A; E1 S2 h( S0 ?. F, v
14      18  4196 REJECT     all      *      *       ::/0                 ::/0
& ?* U* @0 B  G3 z6 K, S! d( y1 `IPv6 私有 IP¶+ z( f& J; g, C) Z
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  h7 k" b; l5 f2 ]) C) D8 c$ {1 X6 L
, _" \% [0 F4 ~# w不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
, R$ M6 Y2 z9 o2 k" m) K( w. F$ y# l& M# |) V3 d! r
自动配置 IPv6 防火墙示例脚本¶' Z* s6 L1 f. }
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
+ l# N2 ~# {/ S' U
! h2 I) [8 P" a/ p4 T$ Z* F! j! U7 Z#!/bin/bash
7 z$ E/ `0 Y9 [' F* r/ n; E! ]IPT6="/sbin/ip6tables"
4 |4 Q& h4 \/ J. zPUBIF="eth1"
0 _& f) w; J. }3 r' j) Mecho "Starting IPv6 firewall..."
+ ]' J9 d" ^* t$IPT6 -F# C& g0 B9 x# J* D
$IPT6 -X9 x2 U2 Z5 K% z, o- ^* Y
$IPT6 -t mangle -F
  f) L4 d, G2 @7 \$ o5 Z2 f, G$IPT6 -t mangle -X6 p6 c; y; j. z. _- o

! O+ V$ q' ?& n$ f  h" I#unlimited access to loopback9 B* v! j5 @, J: N
$IPT6 -A INPUT -i lo -j ACCEPT
! s6 {# H0 j0 j* p. I& ]5 S$IPT6 -A OUTPUT -o lo -j ACCEPT
! m9 a7 P: D3 J7 `; e7 D5 C8 X( U/ Q  {2 ]; b8 U/ T) R
# DROP all incomming traffic$ ?& N; d; b9 n
$IPT6 -P INPUT DROP
5 E& {! c+ j  S) M% h$IPT6 -P OUTPUT DROP' ?- b4 v, H4 ]/ K5 ~' F2 |
$IPT6 -P FORWARD DROP
& F( W/ Z. n1 f' c- x/ U. {3 R( {7 r* _% f
# Allow full outgoing connection but no incomming stuff  k0 p* i. E0 b% q& s. H5 ^0 W- q6 \+ b
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT' x9 M0 d7 c2 c: ]( Z+ n9 W
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT1 ~0 r4 F6 \. t5 L: P

& b/ B; h/ E  f8 u6 K( S# allow incoming ICMP ping pong stuff
0 Z6 h: T% Y+ ~( F$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
( D0 v' R2 N( a' K; ?. P$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
4 o2 C( U# D9 |" F- k! a; W. {/ s* N: q4 q  @
############# START 在下面添加上自己的特殊规则 ############' U. b! _) |+ n" ~5 G+ ]
### open IPv6  port 80 4 K' E$ M  U/ h6 _7 N) f
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
; l0 b- }$ ?' n( ^+ r. Z# D( G### open IPv6  port 229 W, O2 Z3 O% @
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
) K7 v" m: y1 z. t+ U### open IPv6  port 25
8 J# z* w4 _, H: ]5 C! b. V#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
- w6 m7 Y) w+ z: u############ END 自己特殊规则结束 ################
; _' X) l' t8 g9 O( @* a* K( \5 N! ~0 D7 c' O' E
#### no need to edit below ###9 ]: L- o7 {1 W) X2 e/ V
# log everything else+ n  \; H0 e+ C' S- A3 P8 D
$IPT6 -A INPUT -i $PUBIF -j LOG" ?. B) K- d. F3 o( _2 Z$ p
$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-5 02:53 , Processed in 0.093529 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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