找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15570|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
4 y4 V7 E- B2 y' N7 {: e
( C- D3 e. q2 z$ I8 q3 y3 ]0 V在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
3 e; ]* m) }; L: f. D: I$ c' e/ Y ip6tables -nL --line-numbers
- z1 L# @7 N( T+ ]7 V8 n( A( E) r" @
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:# y. \) d) `7 g" x% u& l

9 G% O; ~/ H7 w( h. D! W5 }# vi /etc/sysconfig/ip6tables
, [' P" `( Q, q2 Q0 w可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
7 Q8 U' ^$ |6 n# o" }*filter% s  l/ W' A; n
:INPUT ACCEPT [0:0]$ w) b* m! M8 G! W
:FORWARD ACCEPT [0:0]
! d7 T( |6 h- ^5 @:OUTPUT ACCEPT [0:0]; g2 ?; s2 o7 q0 C$ E
:RH-Firewall-1-INPUT - [0:0]
/ }. m, T2 Y  V4 {7 E& E-A INPUT -j RH-Firewall-1-INPUT
1 ~" @2 s; N4 l- ~-A FORWARD -j RH-Firewall-1-INPUT
9 F) R9 C: g  E& ]-A RH-Firewall-1-INPUT -i lo -j ACCEPT+ [3 j( c/ k) ?8 V7 Q7 t
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT- q; e4 V; d' h6 G" r
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT+ X) Q! A- |" O  e. H
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT4 V. k" l3 F% L
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
6 f; d) ^6 V6 X0 `& C4 o# X& F-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
; P% t8 r& u4 N5 M-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT  q2 [6 W8 \6 Y, j$ |
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT  P" T  u* I+ j3 b& C' i5 F" W
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
/ r9 u( r. T' e5 y( }  w* N% {-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
2 s  h. K+ [! B5 J-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
3 `9 I. R. i! w) d* WCOMMIT
5 \( P+ ]0 [; J与 IPv4 的 iptables 规则类似,但又不完全相同。2 {# R8 b+ x! a: q

8 \3 v% W5 f( `+ z: j要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
7 J5 |" C1 x! t2 l, j8 v4 K3 b8 X9 t+ J5 {
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
0 ~1 N& q! J# X' |# X) l-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。/ j% T/ p5 S, o. }; R( k! K
4 r1 \& o& m" a7 b- ?' ?8 b
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
2 G1 p- \0 g) ^( l& |$ T- j: e& i2 E7 F; A$ n4 }2 d
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
$ m2 a% F; Y4 `" E-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT& U# I8 B% H- }/ D
同时针对 tcp 和 udp 协议开启 53 端口。% p  i5 C8 `: T! I

6 G5 \3 c  W* u9 I9 Y要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
6 m  j) L7 M. y/ u  p
; {3 K$ {; u9 m-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT+ p0 H3 N$ I/ [9 S( P3 g' @; C
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:* @3 ]5 q3 u1 R6 A+ o$ W
& V( t  ?5 J0 a+ P+ `
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT; I5 o' p& _" ^& T2 Y- ]0 `
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
" v' k* T$ b) M/ W9 L8 S% J0 h" u! ^
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
+ E0 x4 z. `8 f5 z+ dCOMMIT
. G3 b) a0 s8 l改为:
2 G& {! o! ~: V) }# j$ k9 G+ i7 l4 \8 ]  ?- y' T
-A RH-Firewall-1-INPUT -j LOG
: |/ o  |/ v: ]+ \0 ^! Z5 J-A RH-Firewall-1-INPUT -j DROP. m# r+ @( f$ d+ B3 ~! X
COMMIT' S" C) l$ {- a0 E) n
保存并关闭该文件。然后重新启动 ip6tables 防火墙:5 x4 g* E4 W& Z+ I4 g8 \$ Z
2 x& P5 O8 r$ v- @% n
# service ip6tables restart  ^& |0 J& J6 G( r! ]/ ~
然后重新查看 ip6tables 规则,可以看到如下所示的输出:4 i; I# S2 F: S  O
' G: M: F9 e+ g6 Q5 X
# ip6tables -vnL --line-numbers
  X/ X1 \, O7 B. B( ]/ T% u输出示例:& F5 b' y- ~1 r/ E! S# u- x
/ u8 M8 p$ n; Y- s; w3 _
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)7 [: {, r8 e+ ^1 ^& s5 ~$ K
num   pkts bytes target     prot opt in     out     source               destination: J" ?) {' U; H3 E: W$ l9 g
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0% O0 y1 k: w5 b; Q& b
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)- j, s, G% |, W2 U8 x
num   pkts bytes target     prot opt in     out     source               destination+ x) _7 r) C- C! W
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
  W4 R, p$ O! D6 @- jChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)0 K. [" N, W8 F$ u- s
num   pkts bytes target     prot opt in     out     source               destination
6 h. V, |: N. G1 WChain RH-Firewall-1-INPUT (2 references)
( r- D. h# t" d& l3 f' s% Unum   pkts bytes target     prot opt in     out     source               destination& t3 ?; l" O3 {1 L* p' K
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/00 s) f2 \1 T3 m/ L: B: ~
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
) {0 ], m$ S& ~1 m4 F3        0     0 ACCEPT     esp      *      *       ::/0                 ::/05 {5 M0 G; N. C& k
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
, h  q' x2 x2 e5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353' _0 Z# \" k: F# Y$ @
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
( @( _. g+ @- X! B) _7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
  s" {% o3 X! s8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
: c  j4 Y" q5 f9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
) ?1 |7 Z! L1 ~! D10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
+ X) ?9 J8 z. |: O3 f11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
. ]$ Q9 c6 E; Z9 e  V12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53/ S5 n8 U- M0 C8 D4 W9 r! `, m
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53( b: Y9 n) x5 {
14      18  4196 REJECT     all      *      *       ::/0                 ::/09 g/ P: m  \, g
IPv6 私有 IP¶7 k# W( D( h* I2 a, K
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
# s% L- |; ?' E8 u4 D  D( E* T2 D5 P- b* Y
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。1 W" r+ u2 v. V* H4 {
1 X( p" X; Z; S
自动配置 IPv6 防火墙示例脚本¶
/ R1 E1 H: Y: u与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。9 t' p! X' Z# s( b/ t3 e  Q  o( f

' b% I5 ~: ]1 `4 s" B5 n#!/bin/bash6 D) {" T9 L5 f! J+ r7 ^
IPT6="/sbin/ip6tables"9 h: Z6 Z3 ?  k% A
PUBIF="eth1"% }) Q) R3 z# h3 d$ ~
echo "Starting IPv6 firewall..."
, c, x. y9 Q6 |  u* q( u0 W9 r$ T$IPT6 -F
7 _7 U% n5 j- o" e- p$ u( `$IPT6 -X+ l/ l5 s# l8 j: C) Z
$IPT6 -t mangle -F( L, k0 n6 Q# b
$IPT6 -t mangle -X
" X- ~: t/ D- V5 T; J* H
+ e' ~7 q& p$ ^! k- e: b#unlimited access to loopback
7 R6 U& r+ M) w$IPT6 -A INPUT -i lo -j ACCEPT
7 u7 h2 [1 H& o5 ^1 _  E6 m' _$IPT6 -A OUTPUT -o lo -j ACCEPT
5 O1 E2 R: k: ]! z
8 R" O- M- Y7 ?/ p* D) t# DROP all incomming traffic
3 q" _6 ]9 i1 R3 h$IPT6 -P INPUT DROP
$ j' D2 M, w& {4 A$IPT6 -P OUTPUT DROP) G1 q1 U( {  S! n8 v! k
$IPT6 -P FORWARD DROP& V. f* B8 y' n' O- Y# l$ w: q
4 I* d* o  Z9 c5 @. ?$ w) q4 r
# Allow full outgoing connection but no incomming stuff
7 p+ y) w" v. C: a. g$ f2 ~; k$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
! v' q/ m% w9 P5 X1 ?$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
4 G; K. Q8 [% e( L3 g, E& G, U1 v$ K4 L" v
# allow incoming ICMP ping pong stuff& c9 m& z' _# d
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
4 N8 V5 D& t$ `" X  C1 z, ~7 J" g+ Z$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
/ \6 c1 N9 c" p) b9 P) E% h. h5 V8 Q. }6 T! {
############# START 在下面添加上自己的特殊规则 ############
8 p0 ]& j# H# a3 K8 O5 c  z### open IPv6  port 80
. J) B3 u& A0 v2 ]#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
- U- i6 b% ], N. d### open IPv6  port 22
7 U( F. l6 @( _2 x#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
! u! Q2 {; n3 \### open IPv6  port 25
8 W( w' W! }; S% w: H; f. G#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT0 M" e) q0 M7 D. b$ z7 l
############ END 自己特殊规则结束 ################2 ^. r! Q. F5 O/ H' T
3 J, N; \: G" C
#### no need to edit below ###5 l+ j$ S7 m' h: H1 R6 M
# log everything else
$ F/ _/ [4 z+ R6 f4 x2 f) c! n$IPT6 -A INPUT -i $PUBIF -j LOG( W% Y2 ^: h* R/ P6 h, z9 f
$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-7-19 01:45 , Processed in 0.106823 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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