找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19398|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。' c9 s% I$ C) A$ r5 M/ @2 t$ G

& w4 P8 F1 R7 S/ \* L在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:3 I) w8 a; _' E% _  b3 k* w
ip6tables -nL --line-numbers  A3 f/ P% ?6 ~8 u& b, ^
2 c# |3 j: x1 ^& U" b
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
7 A, m* x* ]2 r% F9 c
- o+ d1 _( u. |6 W- A* _1 m% m$ j# vi /etc/sysconfig/ip6tables
7 h# T: |) \2 H% J% w可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)) K/ h# v/ I$ ]- L- H/ p2 a7 s
*filter
. g% i1 E" [- d0 A$ N; g:INPUT ACCEPT [0:0]
6 `$ ?$ g; K1 U6 S& w:FORWARD ACCEPT [0:0]6 T& m8 [  ?- j5 E4 ~* |/ ?
:OUTPUT ACCEPT [0:0]
' @# Z7 m* S% q( Y:RH-Firewall-1-INPUT - [0:0]
. `& F! p/ C, b1 \7 D7 n! m$ h-A INPUT -j RH-Firewall-1-INPUT
4 c% _; Z3 `: |3 V& Q-A FORWARD -j RH-Firewall-1-INPUT
7 r- F' C1 ^& @-A RH-Firewall-1-INPUT -i lo -j ACCEPT: W% B# m' Q8 {
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT! T& Y3 P$ H. e1 p- A6 t  Z* h
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT7 f  i+ Q5 s  J  J- X
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
$ c6 Q$ L# R9 p0 Y2 C-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT1 H! r$ T" I3 k; g# ?& ?, L. ~8 n
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT! v2 {; m2 j' f) \
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
: ?6 K5 ^3 J# S-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT0 E, I; `  W4 `6 E3 x0 a4 x9 Z" H
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT0 @* `3 l: J2 f# K( F8 B
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT) b$ l" I* Y+ P+ N  S" z0 @
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited' {) R: V- D2 n$ k& c) Z4 ~( {
COMMIT1 r" ]$ A3 B* J5 G
与 IPv4 的 iptables 规则类似,但又不完全相同。
$ s# h( Z. y, B
1 F5 D2 Q4 N8 {5 O9 x- L要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:5 d) s: K# d: L$ O- J# U* W

5 `1 s3 Q: J+ ~) ^  \/ M2 S-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
/ K3 T" b( d& |4 G% w- E& d  |-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。- s4 U2 f- v, k+ M% b4 _
% t( H; O: B/ [- y! i! W, r5 C7 m
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
1 I9 U, I* q' c# `+ v; ?7 }" m$ y4 _6 p" }* }1 J
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT. S" d: F, X4 j( R
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
  ~# s: D, F: R3 D$ y1 T1 t同时针对 tcp 和 udp 协议开启 53 端口。/ d) z7 g8 L6 v

7 K9 |5 }( {; n% m/ X要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
! Q8 [, y1 |; T5 `; d/ {! _# ~1 [" ?- g
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
$ e2 s' C8 q5 [0 y, e2 ]) T' d要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
7 P1 V, U) c2 N9 C! N' s$ C  E& J3 x0 X+ T5 Y' f
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
0 y/ ?3 |+ u8 E8 G对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
! Y$ l% z$ b, p! Y: R2 p2 c. @+ h& ?/ u: X1 y" i4 t' F; z2 \$ x
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
, n+ j$ Y7 [: \7 ECOMMIT
7 f2 l' B- \5 b- ^! l2 C3 ~改为:
1 g0 M% s% H* }! B5 F
/ S- I" u4 p8 f4 G$ s1 u( o-A RH-Firewall-1-INPUT -j LOG
& e. R8 U0 Q5 ?2 q-A RH-Firewall-1-INPUT -j DROP
7 P, L) v1 ?* K/ ]; F5 rCOMMIT# c- O% F5 ^+ h/ j( k
保存并关闭该文件。然后重新启动 ip6tables 防火墙:" J8 A. d( d2 X. S
8 r0 W5 G' b) @2 [  n8 W# u
# service ip6tables restart
3 X5 r+ u/ u: E然后重新查看 ip6tables 规则,可以看到如下所示的输出:  Z- t3 Y2 R) I$ K

0 `8 L5 \' c1 \3 v$ P+ k# @3 f# ip6tables -vnL --line-numbers
2 c5 z4 W1 d, {. [. Y输出示例:( J" k+ ?3 X+ l2 S) C( u

% U( U1 U0 {$ `) d7 \5 B7 CChain INPUT (policy ACCEPT 0 packets, 0 bytes)
2 O; e1 y+ A4 R  knum   pkts bytes target     prot opt in     out     source               destination" G( p, n0 K% s' k0 P
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0$ D2 O, y4 W4 ]* I; w- l0 W( n. X
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  U1 _- \% H1 fnum   pkts bytes target     prot opt in     out     source               destination
4 @. m. Q/ E. K# d7 d% m5 ^1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0( [5 E' K8 Q$ E3 o% ?7 t$ o
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes). D4 r* f! _# `' l
num   pkts bytes target     prot opt in     out     source               destination6 Y" r/ |, t  [/ a# W0 X7 W+ Z
Chain RH-Firewall-1-INPUT (2 references)
/ T$ }4 g- M: v* \num   pkts bytes target     prot opt in     out     source               destination
* ]  M7 s5 R+ h5 o1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0- C( G2 M; R! L, \$ x" m% G6 Z
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/09 o8 x. x6 O0 D4 p- @
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0, Q$ _/ s' ^. T8 _8 s; Z' H% c
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
' B9 I, q+ c8 x$ r( k" T# @5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
2 _1 l+ I, ]& F0 h3 p# W6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631  @( U' |7 V5 {* H! ]3 F
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631" I% X! V/ F3 M/ _& ~
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
8 U8 ~6 M5 j4 H! h1 K. h9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
' g( `0 _- j, @3 u/ F10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
+ L$ j. R! t- t: J( x* ~0 [11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
+ \9 j* M. L; k# [  j+ T* G12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:531 k  s; _$ Q+ A9 r& @0 ]% T( f
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
8 J3 x7 S( l  ]2 X& q1 M14      18  4196 REJECT     all      *      *       ::/0                 ::/0
. h8 B7 a& o$ O9 `; ]$ O. MIPv6 私有 IP¶
3 _2 |! n" y; m# G+ F8 [- IIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?' y1 k3 ^. Q- F. X1 c4 y& k. @

' [2 `3 v% i- Q8 c不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。7 `7 E1 A5 w  ?

* K' y3 V8 R7 G6 V自动配置 IPv6 防火墙示例脚本¶
" Y: |2 z% R2 \) `. P与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。% S" O5 {. C0 V$ n2 x. X
8 r2 Z" V* A' l: l& F2 s
#!/bin/bash
% R5 ^( {5 u5 b# ?& Z( C: Z8 kIPT6="/sbin/ip6tables"+ ~/ ]$ Q7 K( f; @, I/ @
PUBIF="eth1"% u8 r+ n' h5 o" J0 w8 C. L3 q& M
echo "Starting IPv6 firewall..."2 Y, k9 b" ?7 C8 F
$IPT6 -F
6 t0 K4 k" D4 r; E  w! q; P) k$IPT6 -X
" Z4 Q; k% O0 C8 E2 q; d: g$IPT6 -t mangle -F" z4 r0 H8 W; l1 z) {4 I
$IPT6 -t mangle -X
6 o% l7 F! i/ U9 f
- F6 A7 E4 Q3 R+ ?#unlimited access to loopback
! i* s, X1 Q8 f. N  v$IPT6 -A INPUT -i lo -j ACCEPT; C: q; ]) O. _. {' [$ d
$IPT6 -A OUTPUT -o lo -j ACCEPT
/ X* W8 P: P3 [% w( }% O# {
# Q2 k4 I! g2 s1 G# DROP all incomming traffic5 Z, _1 G- H) d6 H9 i) h/ }, `
$IPT6 -P INPUT DROP- Q* f; g. L7 C  c4 ]
$IPT6 -P OUTPUT DROP- ~5 c3 j" ]2 t3 E# n7 `# j
$IPT6 -P FORWARD DROP; R) ^/ S6 c. x  A4 i
& t3 {0 k; g9 q" |
# Allow full outgoing connection but no incomming stuff! k9 l6 ^& h5 S) Q3 ]2 i6 m8 n
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
9 C. |  Z/ L, ^" g$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT7 n: y6 o4 _# u2 P( r2 j

3 J1 h9 I2 t/ i# allow incoming ICMP ping pong stuff: g, n2 ~- p4 C0 \! w. K4 J
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT4 M1 j, z. X8 p; c1 D
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT% |; r( j1 ~. T1 X+ I; U
  B5 N" N% X9 _/ ~( W; ?6 {: O2 L
############# START 在下面添加上自己的特殊规则 ############
/ Y# Y$ I0 T* d( M- X; _% N$ ?### open IPv6  port 80
3 f, j5 U) }* F; B; ~  Q#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
' _- h- p1 u& h  L9 g9 q' U### open IPv6  port 22
5 ~/ i# K; S7 I, @! B0 [: j+ F: v#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT; W7 h$ s. j8 M4 j: Z! T& Y; z
### open IPv6  port 25
! B" p8 H7 v5 ^  U2 j#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
  W2 E% f8 i: U! ^) s- F: K' C% _: l############ END 自己特殊规则结束 ################
/ ?$ l! H- H1 n# g3 V" N9 I1 f& I4 P! s$ m
#### no need to edit below ###) i3 i( V7 S2 J2 b: L9 ]3 E
# log everything else
, J. E/ M# _8 N: @. n/ L2 ?. ~$IPT6 -A INPUT -i $PUBIF -j LOG. }2 Q; m% D) L0 \8 I) `
$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-25 23:46 , Processed in 0.070457 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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