找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16453|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
8 e. u2 ^7 A% G1 `
; n$ }. ?! Z, @& d1 A# r. z在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:5 U  S% ~" o; S0 h9 W4 F8 h
ip6tables -nL --line-numbers" {8 _- y3 G! P+ ^9 e; @

/ i* H5 p& O. U" v, k; |/ @8 K使用编辑器编辑 /etc/sysconfig/ip6tables 文件:: C# o9 x# y, b# i
+ W! |4 \4 E/ Q* P/ A1 n) _6 o
# vi /etc/sysconfig/ip6tables& m3 \- U) Y& @, m4 B/ _# o
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
: n" S/ f( [- ], a! K" [9 V*filter4 [  T. z; `3 a3 b8 y: A
:INPUT ACCEPT [0:0]
; m0 @. l/ H/ V0 ~:FORWARD ACCEPT [0:0]! i3 q' b, `' H. V
:OUTPUT ACCEPT [0:0]
3 w, M% D" \" z:RH-Firewall-1-INPUT - [0:0]7 `2 s3 r9 ?( p' j( J! j) t; S/ n1 E
-A INPUT -j RH-Firewall-1-INPUT) H# l7 v8 O) g- }
-A FORWARD -j RH-Firewall-1-INPUT) x. h! F) m+ @$ r9 |0 z
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
3 f5 b1 e! i- h' Q, P-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT, I2 z' |) k$ F  ?- C( w9 f
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
" r) f  n1 z3 ~" q. q-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
7 V$ M, U& O# ?" J! o-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT. R: d" H( `' O' l0 @
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
9 S. O  E$ E7 t9 h. G# h5 N9 `-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT* x: Y6 s9 m% P  c! p
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT! H0 p) J. t! X: B
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT6 Q' k" }6 B) ?8 \
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
' f4 l  [# A! W. _7 s-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited8 @8 R' `/ {. ~7 [) n; }" ~
COMMIT
/ n) `% o1 K/ d+ Q/ Q- D与 IPv4 的 iptables 规则类似,但又不完全相同。
3 q! M% Z( l; m+ M* u: V4 j8 V+ n
4 G* `$ w. y7 q. ^! T  H要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:$ n2 n' K* q1 G! X3 O
8 O3 H8 C8 g( t- N
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT- \  w% O8 i: c# v/ C
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。; n% s) l1 D6 u1 K+ c5 s

# ~; H! P& L& \8 n6 Y要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
6 S4 w) N* u, s, `8 g+ g4 T5 P2 B/ c! v* }0 F
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
7 M  |5 ?  |5 I  z* G: A8 L" u-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT$ f$ h  x6 L  f% T' Y: A2 _& \
同时针对 tcp 和 udp 协议开启 53 端口。
, q0 J# ]: u. T+ M% B  [  @) }; S9 o' Y5 ^3 P& [/ m9 x9 S
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
3 o6 R5 d2 U2 t" Z# d) t- Q! K7 J9 u* D3 b* u1 j8 {, s
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
. R% F6 N' C7 B7 G. d1 t) e/ \' G要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:7 N' W% [3 ?. R7 u, H+ |

1 ]' E/ _5 V6 z1 ^! X; q0 C0 s" J-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT) y/ x7 G/ [7 U# ~  J
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
2 u2 b, s' ?' G9 L# B, |) \' J  r& @; t) \) I
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
- p4 Q2 y. J3 I/ |: lCOMMIT
. @/ q: v; g8 W8 z3 x) P! Y6 H8 T" j改为:
" c5 u+ G! q3 A
8 Z5 ^: r" |# d! N4 y* d# ?+ c0 E-A RH-Firewall-1-INPUT -j LOG, k6 ^) z) o1 A! r' ~# r3 t
-A RH-Firewall-1-INPUT -j DROP
+ r  f9 G$ m# l0 Z+ SCOMMIT5 w0 k" u. @8 ]1 g5 d  a7 i* c% ~
保存并关闭该文件。然后重新启动 ip6tables 防火墙:. M" D$ @1 R+ `" s5 r- O/ z

' h$ h# S/ g7 k' [2 E# service ip6tables restart
* |# c  }8 }. k) c然后重新查看 ip6tables 规则,可以看到如下所示的输出:
% M6 T# [5 m4 {- x+ h* E9 m
) t% C( u: W3 n- x5 i5 m# ip6tables -vnL --line-numbers
3 j* K) I8 W! J0 S输出示例:) c5 r4 y# g" k
; m  i3 e5 u" V, g7 ~
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)" x$ P3 n, w$ r, U/ N
num   pkts bytes target     prot opt in     out     source               destination
0 J6 i2 t9 i' D& l( [/ y9 o1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0+ N5 Q* {( I- J% R4 r
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)" ^2 G# a4 N+ z% ~2 x
num   pkts bytes target     prot opt in     out     source               destination6 j/ L/ T7 D: |! M9 {3 }0 c' g! M! S
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/07 @5 c% A3 f" b; g& t+ P
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)! ]# {2 @( n) a' z6 t
num   pkts bytes target     prot opt in     out     source               destination
; S' k( d1 q5 f) ^; SChain RH-Firewall-1-INPUT (2 references)( |7 R- }) T; w
num   pkts bytes target     prot opt in     out     source               destination
# ^% A: o$ p( O  Q1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
! P4 Q! q+ E! U( ^2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0; ], w1 f& c+ S% U  a
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
2 F9 ]! M2 l0 r2 ^7 g8 U  H4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
! @: d0 J8 n9 `$ b7 b( y# |' U5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:53535 |8 h( X2 o# A% R7 j  p
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6316 @4 u9 v( q* h3 K% I
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
  j- K1 j& Q" M5 i1 F8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
6 F0 F" }4 q: N1 F9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02/ ?& I/ o1 s% p( W$ T& _2 c
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:225 [/ `0 o, G% j
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80, f8 v- p! l1 a$ A# ^
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53& u& F! T/ f. [% k' v, V
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
" `+ B& b0 B( z% N/ D14      18  4196 REJECT     all      *      *       ::/0                 ::/05 c  K% [  o2 a# r2 C
IPv6 私有 IP¶
' E. g4 S, ?4 I% e$ fIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  N+ S+ a: _; {3 q# I5 d
& p  {4 W, x; A不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。! K5 u$ ?7 |! u8 `

; u4 h" i: C9 v4 J( b* m自动配置 IPv6 防火墙示例脚本¶
' D& t# J5 @) t' B# W3 R2 d/ l% F2 [与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。; z: S3 p, x3 {0 b8 D
* y1 C5 O7 Y) M, l+ u9 Q( ^5 E
#!/bin/bash
2 k; o3 i' V9 U5 e- X# kIPT6="/sbin/ip6tables"
! I4 K3 `7 C- M$ Q4 JPUBIF="eth1"
3 b) E) W6 E/ T9 [2 v* x& r: r2 _+ \echo "Starting IPv6 firewall..."
8 ^" A9 |( ~3 D2 C, I. t$IPT6 -F
4 q8 r) W- i% J( |0 B6 P$IPT6 -X
* C; O# X- ^8 w* b+ ]7 |$IPT6 -t mangle -F
( k: N# {4 i) V0 }$IPT6 -t mangle -X# C+ y. I) V8 x5 O& W; o! i

8 ?; j- A" X8 p: H#unlimited access to loopback$ E3 x7 R: r8 n  V  B6 F
$IPT6 -A INPUT -i lo -j ACCEPT+ k0 z. l6 h% q" `, F3 w
$IPT6 -A OUTPUT -o lo -j ACCEPT+ v+ \% Q. o5 Z5 m

: e& H6 n% j% v/ [+ [) M- S8 h1 C+ c$ z# DROP all incomming traffic, f+ Z8 D/ A- j# H
$IPT6 -P INPUT DROP
, H; c" u0 V3 I# v$IPT6 -P OUTPUT DROP/ [+ D# n# F  K) k' |3 t& Z8 |
$IPT6 -P FORWARD DROP
! A4 a2 r+ F& v- K9 i. F# Y
8 Q  z* \: J3 j* ~# Allow full outgoing connection but no incomming stuff! h0 W0 S! z9 g: Z
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
3 j  Q- u3 s% g$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
& i. O, j5 y* m# n' \4 j/ d/ U/ j& a9 b0 l: K
# allow incoming ICMP ping pong stuff" {4 \- y: S6 b& A5 B3 m  [
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
8 \4 g: Y5 |& t. v9 l4 x$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT  A$ \" X( p+ H5 e# {
6 k* I- s  `5 f; \/ A
############# START 在下面添加上自己的特殊规则 ############8 ^$ x% y1 x9 [$ Q9 G
### open IPv6  port 80
; r9 c* F: E& M# d#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
0 a" d' C1 p7 M. c4 g+ A### open IPv6  port 22! I& v) J  s3 @1 z1 d2 H% R
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
6 V* l" t2 q* c### open IPv6  port 25% m% p% Y2 Z& g$ `2 b
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
3 u9 L6 Z0 s5 v: i) w( F; J7 A############ END 自己特殊规则结束 ################
! \. S) D/ ~5 g  A! q
  L+ I  j2 s! r8 f#### no need to edit below ###" g& W7 m$ K4 k/ W2 }7 e
# log everything else
: C$ J7 f) ]- d2 g1 `9 k$IPT6 -A INPUT -i $PUBIF -j LOG
8 ]$ Q; @) l7 e& E9 S7 Z7 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, 2025-12-1 18:22 , Processed in 0.078405 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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