找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18178|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
* x9 t* w9 F4 A9 X: j2 S  g/ c3 h" {% ^. }1 x
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
3 M$ @* e( m8 ^' j2 ^$ \0 l. d ip6tables -nL --line-numbers* d1 V6 ^, J' p

7 S  x0 P! J  X0 f6 h使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
3 O( a5 w( [1 k: x
9 i. m8 l7 O0 O2 ^7 r0 n/ p# vi /etc/sysconfig/ip6tables
, S8 w) \$ ^. D2 t- |! S! v可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
0 P. v+ A5 |0 P* Q+ ?*filter
  m+ U! \* r  h% j! ^1 R( I2 `:INPUT ACCEPT [0:0]3 K/ |" }" _, a; ~# Y% R# N) ]9 o
:FORWARD ACCEPT [0:0]! c9 h& Z* a/ E( Y2 \3 |1 J5 h
:OUTPUT ACCEPT [0:0], |3 q* Z- G+ {: S# p
:RH-Firewall-1-INPUT - [0:0]: `( b+ E0 G! D& j! w
-A INPUT -j RH-Firewall-1-INPUT  P8 E+ G7 O/ O0 G1 c
-A FORWARD -j RH-Firewall-1-INPUT
0 H* }5 E! l: i-A RH-Firewall-1-INPUT -i lo -j ACCEPT' G* p" O: f/ G4 H6 C; @
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT( q! E: c/ n! t6 u. o
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
. _1 Y1 \% O1 A# `-A RH-Firewall-1-INPUT -p 51 -j ACCEPT( y/ x. c5 [5 M8 w4 y  O6 ?3 [7 K- J! @
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
) l1 J; a: h. w$ _2 e3 [+ |-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT; i7 p: R' K9 Z( A+ y
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
  d8 V/ w; {2 S$ J! O2 r# M0 g-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT/ m$ _; D+ Y9 J; e  |2 r5 c
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
8 }0 b4 a3 t% g) C  L5 C6 H-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
5 l0 P& V6 E2 @9 @  R-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited: ^: |( a+ H: ~* _
COMMIT
5 [' l/ [6 A. f' P5 t6 Y  x1 M与 IPv4 的 iptables 规则类似,但又不完全相同。
( R/ f6 X% ~+ G6 W# g# F3 M! @  {1 R8 n8 F& M% Y  A
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
+ Y6 G6 g2 l7 M2 F
& x7 q8 U( q' n, F-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT' x: I& D; q6 T$ y7 \  w: I4 t0 m! Q
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
  Y  I, z8 |6 K" q" B7 q6 y4 E2 ]$ t. P5 B
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
8 Z- o$ Z1 ~% b4 r9 q
4 R+ p1 {+ e3 ^-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
- h! X* z8 l+ j& n# e-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
5 W. J3 x+ K2 b% |2 H; b同时针对 tcp 和 udp 协议开启 53 端口。
# `1 U# K+ R" W& U4 s1 y
& e( w; D! c! N6 D& R* t要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:' n+ s3 H0 c7 ~8 Y- \

8 c: P2 a" u' J5 X, V% B-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT5 b; W' i3 b# C" t3 r1 x8 z' }' m
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:+ j# u; E, [6 [; `. A

' h3 z5 x( M# M9 @# _-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
, W( D2 F$ N8 O! \/ n) O0 B1 Q对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:' p  _' p% M$ H: U5 N/ U1 l/ l

1 Q, G- [0 ^3 M/ k1 L6 v. m' K3 A-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
% G: m. Q9 |9 P- NCOMMIT
8 Q4 G) u2 `7 ]* A% P# C9 \改为:, x& z8 h+ R, ]7 x
* a0 E: y( t7 p
-A RH-Firewall-1-INPUT -j LOG
. m- v) K1 R- o3 Y. w-A RH-Firewall-1-INPUT -j DROP. i0 J9 z9 I' k, H& ?2 I
COMMIT
5 W8 b+ X4 S! u5 c保存并关闭该文件。然后重新启动 ip6tables 防火墙:
. j  |" j& x; Z+ M  ]2 J
. C; s4 |( }$ @1 k3 V$ z# service ip6tables restart
2 p* q' h. j9 z6 A- X: i然后重新查看 ip6tables 规则,可以看到如下所示的输出:
+ L: n. a) V# u0 e0 H
$ q! _* H" w/ g- C2 u+ D& A/ v4 U# ip6tables -vnL --line-numbers
% R; D! I' p/ [. v8 B输出示例:4 [3 f# y) u' S* s
/ t, y5 h) g) j3 Q+ L$ Y1 ]' [0 L
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
! d4 B8 [2 {1 J3 M3 N; a- n7 i( }# {num   pkts bytes target     prot opt in     out     source               destination
' B9 y7 }0 l9 Q7 t5 R" y$ J2 }8 r3 D1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
$ B2 l# `" F+ m% j1 C" j1 FChain FORWARD (policy ACCEPT 0 packets, 0 bytes)* H$ ~! a+ p* K/ W/ }$ \5 g
num   pkts bytes target     prot opt in     out     source               destination  |9 Q6 ^/ |3 `
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0# y5 `7 y$ p* n% ?
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)) p0 |8 s4 ^% s) q) Q7 n; s: o8 T# ]
num   pkts bytes target     prot opt in     out     source               destination
* {! d- B* C, z% I$ R% W, vChain RH-Firewall-1-INPUT (2 references)4 {+ a) o1 r% ], p  ^7 H( P
num   pkts bytes target     prot opt in     out     source               destination
' C  @# m: R! W% I1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
8 N% X" L2 W( i, v2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
0 i8 v9 e- L; L0 I/ F4 r/ i3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
! F1 x4 @7 }6 N: S  H% _2 R  W4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
  C; ^; F2 R- m$ F; T( E, L5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
# A) `3 G/ \) _" {. q6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
$ V" O5 b* z8 s5 N- l7 N% P7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631+ J3 E  b- e5 o: _
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610000 {2 j6 b" s: F5 q
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
7 e& \& G$ n5 r3 x3 ~7 o2 j0 h10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
1 [' X# M, P9 ~11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
( }# ^6 d2 s  o6 w/ u0 w0 y( y) J) L12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
9 @9 m) [, i6 E$ B, ?6 H13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
& K. ]. {5 G% V14      18  4196 REJECT     all      *      *       ::/0                 ::/0
4 S% n9 ?1 c2 k( \+ VIPv6 私有 IP¶: {/ e$ A9 B4 ~0 E) F: Q( M
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
3 {" H; Q' @, a9 ]* u6 c/ ^& ]/ {  P; Q; o! p: i
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。, ]% `  F/ r7 s, K

; Y3 d/ N- e" m  D' W9 @- C- D6 V自动配置 IPv6 防火墙示例脚本¶
9 T. ?  G; a. h9 T1 R" o4 A! c与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。0 O3 S0 g* |" a' p

; }0 q! Y7 z* b, ]#!/bin/bash* l' B; d8 j+ Z7 g% ^+ D
IPT6="/sbin/ip6tables"! G9 b4 v3 N8 H, c6 R
PUBIF="eth1"- b- M, ^- H1 |( z% g
echo "Starting IPv6 firewall..."
4 ~5 J; f5 O1 Y. n9 o2 |$IPT6 -F$ x3 v; u2 I$ b# K- q
$IPT6 -X, s; N8 u4 t9 B  o1 G: I9 d
$IPT6 -t mangle -F
  l, u+ b& Q" m& T7 v$IPT6 -t mangle -X" _- F+ e  z( ?( ?/ p  H* B6 L

. f5 ]; y4 J- t: _% @- C0 \) \' b#unlimited access to loopback
/ f2 M! x1 V: y6 p5 r& }$IPT6 -A INPUT -i lo -j ACCEPT
9 l+ \5 E8 V$ u( l$IPT6 -A OUTPUT -o lo -j ACCEPT
2 E0 P2 Y5 D8 y, W2 m7 U+ O+ `( K$ a: _% N: D8 H1 B* v
# DROP all incomming traffic' |4 @& ^& g5 z6 B4 h
$IPT6 -P INPUT DROP
% K: u( t. V) m; o/ Q% K2 @$IPT6 -P OUTPUT DROP: y9 Z2 x- J2 S2 M: I: X
$IPT6 -P FORWARD DROP6 a% d2 x7 ?2 R

. I: K, B& G; P1 Y% ]8 H5 U! Y4 L# Allow full outgoing connection but no incomming stuff) \3 e6 }4 N  \  j6 ?
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT* r; Q) B( f$ [) L
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT) D) _5 Z% \2 ?! }+ ?! j
: v  x2 i; X+ L9 h7 g5 y4 ?
# allow incoming ICMP ping pong stuff) X4 F' z$ C  r) g8 x
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT2 m3 X) j  {* q+ |* B; n; o5 X  \
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
! c5 V) k* i: D4 H$ [( q- [* X& {; V' f; o
############# START 在下面添加上自己的特殊规则 ############3 C, c3 N) c  r
### open IPv6  port 80 % ], M4 V9 l% z3 B0 R
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
0 r" ^7 K' M. D, D2 [3 E2 p### open IPv6  port 22
- x! e8 b  G" ~/ N1 I/ }. e+ c#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT, u3 ?5 F' v$ k) \2 s) g4 _5 O% M
### open IPv6  port 25
/ w2 e5 C  j  Y3 n% w5 f% ?#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
  Y1 R6 p$ J9 o" C$ d############ END 自己特殊规则结束 ################/ y5 i' O1 Z, |9 I4 Q1 P3 Y+ p
5 _: K7 S' @$ O2 @3 D$ O5 a3 f
#### no need to edit below ###
/ E9 `+ U$ Q  n$ O7 Z6 F5 ^, h# log everything else
3 M2 B7 m3 P0 w8 ]0 r4 Q$ J$IPT6 -A INPUT -i $PUBIF -j LOG8 x) P, n' F1 c9 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, 2026-6-7 05:54 , Processed in 0.078149 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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