找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16343|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
- B6 w& Q% B& D% x2 t. B0 s& G" _0 U: P" m; @' h
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
" F4 A1 ~, z8 z1 P3 s) \" p- s- @ ip6tables -nL --line-numbers
1 C, H/ B) [1 `
  ^% l) t$ y* B1 O- }3 {& ~# G使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
% y6 k& W5 w7 q/ b0 D/ }9 V9 `* Z: ^+ r! t
# vi /etc/sysconfig/ip6tables
8 o9 j) p; i5 m# p$ K可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)0 A9 b0 A8 @% ?$ V# j
*filter
+ P! s, b: I' D  I  ]4 H* d:INPUT ACCEPT [0:0]5 o* j& ~$ y! ?9 p4 _
:FORWARD ACCEPT [0:0]
' I% t8 s$ l8 ?1 P- h:OUTPUT ACCEPT [0:0]0 h5 x  |) F- E( |! s, d
:RH-Firewall-1-INPUT - [0:0]4 f' |- Z& P) ~: {7 G5 v6 v
-A INPUT -j RH-Firewall-1-INPUT
* C0 y& {% ]* _! o: K-A FORWARD -j RH-Firewall-1-INPUT
* W5 n$ {2 I+ a7 |7 F-A RH-Firewall-1-INPUT -i lo -j ACCEPT8 [' d7 S3 s8 a( t0 t
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
. N- l& d8 e% M0 F5 p' v-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
! v6 f8 i9 S! w0 i, c-A RH-Firewall-1-INPUT -p 51 -j ACCEPT" Y  Z% D0 s" F9 D3 ?1 I2 l
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT0 w5 d. E: _" ~; T$ H
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT! `, S2 r* u. R! ]9 q, I* P
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
/ h7 z# R: A2 F! |* N-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT3 ]& n, J1 d8 ?9 K: o: O/ V5 z
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
/ E  J% n& R2 r# H! L; V-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
/ I; H1 i" x! [5 w6 G5 ]4 B" w7 T, d-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
) i. M( d& U9 T4 C3 p, ^6 RCOMMIT% b; u2 ~- k! i4 H2 S$ l
与 IPv4 的 iptables 规则类似,但又不完全相同。$ O& x  v8 S, f8 t) F

3 S1 \" f/ h: l& o/ x4 M1 P2 B' o要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
- \, i' v* }+ W9 A: T5 P
$ e+ C, c& E" d6 \-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
1 [6 t/ n2 l+ a7 [4 a5 v% U-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。2 e$ ^- V* A2 k$ H' E& U, W4 |

4 o  n+ ^" r' @% J7 @0 b! {要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
" h9 e1 @8 O, A/ v+ E( m. h0 v- t; U# `, J
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
2 p( w  J) a- S1 G4 Z- d-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
" [! X. v* K; }' P同时针对 tcp 和 udp 协议开启 53 端口。4 X. d0 m. k- t$ r# h, K
* D. f. W) i$ t4 K* e
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
8 I: E1 j! c, V5 E) ~$ q
, p# `8 @' n3 m! u4 ?-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT: g4 l. `5 Z  H% g3 x6 ~
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:; ^. O4 q* x. r( ?
- A6 i: ?; s6 m& A/ |
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT, U! h4 Q0 ~0 E* c3 I( @
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:" E5 M. F1 \2 i1 O6 e9 y3 E+ G
  P6 G- R+ G( t. U
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
0 _% s- ?" i1 T6 f$ PCOMMIT- `  y3 b* i* [4 I
改为:
6 u1 V: W$ W+ P+ `7 ]! ~9 ]1 l, e- Q: z" z% ]
-A RH-Firewall-1-INPUT -j LOG' B' ?+ A/ p& x- I; n
-A RH-Firewall-1-INPUT -j DROP
  m+ l7 T; A. ^1 X+ wCOMMIT, m  O8 B+ f: o5 F: Y4 G
保存并关闭该文件。然后重新启动 ip6tables 防火墙:6 o( }$ I  ?! K" b) Q: ^# Z: ^
. {( k- G6 A# ], u1 P; j  [
# service ip6tables restart
& [7 C$ C3 u; U% j然后重新查看 ip6tables 规则,可以看到如下所示的输出:/ R" t* R% i5 ~5 |( o1 Y5 Y
( i; |2 C& ]2 X# g. M
# ip6tables -vnL --line-numbers0 G3 m, ]- S+ S4 P" b
输出示例:: k! u( v9 `% _, s& P
! ]* K6 D; f/ f3 m
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
! Y. ]" ]  D$ S' Q4 I: W/ `num   pkts bytes target     prot opt in     out     source               destination
3 t5 F( G( j: _# D% z1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0( v/ u" Y* O5 O. y  B1 `' W2 J
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)/ Y& r" u4 E$ K1 w, l
num   pkts bytes target     prot opt in     out     source               destination
9 K# B: t  i. G) B) ^1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0- k  D% m2 z) X4 G6 S! q
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
+ \7 Q3 l+ b' anum   pkts bytes target     prot opt in     out     source               destination
& U0 O& h2 `9 F* [$ u5 E8 f* cChain RH-Firewall-1-INPUT (2 references)1 Y, }1 t6 i# C; O2 i# @( K: u( M& [3 C" ]
num   pkts bytes target     prot opt in     out     source               destination1 a2 E) W: B3 S5 x% d7 m1 Q/ I
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0& U* @, h$ ^. V' N( [
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
& p. V4 }) X8 W$ v9 E/ p4 d; N3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0# ?3 i" V3 j0 d( o
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
4 G6 ^6 l0 v$ n' u# {5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353* @3 _4 B+ b+ H" h9 u0 S& x
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
; _8 s7 y% m5 R( X% a- ~/ |7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631; Q* g6 l# m$ r6 ?$ F0 i6 @
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610009 k! O: V% M: f3 d
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02/ h+ ?+ V5 f) H. l$ j, t
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22# u8 L* p: v4 W, ]$ k9 a  @6 z
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80& f7 `& S+ q) X& n( k& y
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53& s6 E/ e+ w1 `  M* G8 K! B
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
6 {' ~* I; n: P/ w  J# t14      18  4196 REJECT     all      *      *       ::/0                 ::/0) j: J2 w( C' ?9 Y- Z$ ]) O  u
IPv6 私有 IP¶
. I4 y0 c$ v  g: zIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  F7 W+ z! k6 Y/ C' C3 U% `# O# H* y0 E; ]. T
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。6 ]8 f) I. B" H6 Y& M- h

0 [4 d! Y$ K; ]* q* B: a自动配置 IPv6 防火墙示例脚本¶  h( V" L, K) ?: Z' Q
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。3 M$ P) }, g' M3 d# P$ g
. E/ p3 |1 P6 g0 x  |
#!/bin/bash
0 o7 G+ ~, R) E9 VIPT6="/sbin/ip6tables"6 F. j8 N* `% N
PUBIF="eth1"4 ~) Z* n+ \$ G1 g0 j
echo "Starting IPv6 firewall..."
. [, S0 i+ e  s3 z$IPT6 -F
& [# e& `& C. E3 `7 V$IPT6 -X+ M* j- n6 i7 o, V% Z9 ~! C
$IPT6 -t mangle -F$ y4 Z: z3 j8 F, ^. J+ K' |
$IPT6 -t mangle -X
* N' I' H% f, z  q& f% ?5 ^+ v9 Y6 m  i" o
#unlimited access to loopback8 L5 Z# M" o6 S& R
$IPT6 -A INPUT -i lo -j ACCEPT
, k: {& y6 X8 O- q$IPT6 -A OUTPUT -o lo -j ACCEPT
) n* y/ `) U) N8 C* ?6 ~+ M. M2 x3 }- O/ M; z9 J  S% b+ K
# DROP all incomming traffic1 O# o( n3 p" ~$ T+ \
$IPT6 -P INPUT DROP. ~7 R4 n. K) N$ q" [
$IPT6 -P OUTPUT DROP
% `) ?( z/ z& e7 j8 \& v) f$IPT6 -P FORWARD DROP
& E; V: a/ C  H! G
& v& t/ S+ H/ _. K4 ]1 p4 y" Q/ x  M4 ^7 I# Allow full outgoing connection but no incomming stuff
  E* G4 S2 j( z' s5 X( {1 L$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
' N9 z3 O  V# O* l# K$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT5 a9 M6 W' N5 [$ W4 K  ?/ V) J

* M  w/ j, H0 e, Z5 W# allow incoming ICMP ping pong stuff, Q8 v( P2 s) F; X
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
% }- {- t+ J* w$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
% R, f1 T1 o! d& L+ f5 E9 D
" e& L' l  c! f* s############# START 在下面添加上自己的特殊规则 ############
4 v! \6 i' S2 V- g### open IPv6  port 80
" x9 H  `0 R# h#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
( p$ v" g9 P- J2 x$ _- o# J- U8 x7 T### open IPv6  port 22- }  J1 n" G6 C9 {6 T& a
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT$ T( u, u5 m; A- O' k5 k7 I1 a
### open IPv6  port 25
! _" C9 l+ S8 ^$ n! X5 s#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
; b+ b2 D0 s9 r6 P- o/ _############ END 自己特殊规则结束 ################: J0 \" N2 f& T9 e. u2 x7 T
0 X) S+ I  h/ {8 n' X- Q5 v
#### no need to edit below ###9 T0 p8 }- X8 s, I
# log everything else. O$ e' x: z/ d  h% |- N- }
$IPT6 -A INPUT -i $PUBIF -j LOG2 X# j: B7 f6 {
$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-11-16 06:24 , Processed in 0.076132 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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