找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16092|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。0 X6 G* d" a2 }+ J- `

7 B6 X# G( X5 Q. V+ g在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:% m, W& ]1 I' d  i; n7 U
ip6tables -nL --line-numbers
/ j- j! m* f5 n6 O5 u  K  b0 j3 d1 H9 B' |  j" n+ _
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:3 V/ }. b9 ^4 g( f* n

3 w. d$ B0 K3 s) c# vi /etc/sysconfig/ip6tables3 I9 p0 \5 a% `5 U, s
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
9 L# R" V' h  e*filter
* \: K5 X! S# T) `:INPUT ACCEPT [0:0]
; C% [; N) {1 S0 v. i- V. A0 R" }:FORWARD ACCEPT [0:0]
) {6 K. y, p4 }& i" B1 G:OUTPUT ACCEPT [0:0]8 Q& \4 Y0 [+ {# w* |' ^$ S$ d, s3 t
:RH-Firewall-1-INPUT - [0:0]
) W4 I. m& b) ^/ ?- V% w  z-A INPUT -j RH-Firewall-1-INPUT
- Q) P, ^* v' \" g- z6 |" c9 A-A FORWARD -j RH-Firewall-1-INPUT
+ C2 |. f0 S; D. ]! i-A RH-Firewall-1-INPUT -i lo -j ACCEPT, l* }) ]3 p$ D2 q  `, `
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
( W# n. g/ C+ d* y$ U-A RH-Firewall-1-INPUT -p 50 -j ACCEPT- k* S+ {+ L7 X4 {4 h0 J
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT( ?2 U$ [1 h( v
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
, \& c$ G/ e( H7 Z* S( e-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT* g, k0 W. H/ S9 l$ A- o: S
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
7 N* L0 _% h6 b-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
( B+ \: }" H  s; l8 V3 N. i: Z9 }-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT. q& i6 G$ F2 U/ J8 U
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT% [. L0 V8 ~; E! p) i9 ^
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
. E2 x9 \! X# @" d1 u9 X  m' `COMMIT9 n* x* l& e- u' M0 {% F
与 IPv4 的 iptables 规则类似,但又不完全相同。. P$ F3 n  c# P' c$ Y2 V; Q

8 [  }+ d9 \% T3 L: }要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
0 X. H0 S6 Y- A8 v" \5 b% ^! i  F+ I4 u0 N  A
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
0 o1 b8 ^. r- X% D% D9 D7 m0 W-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。0 p6 x6 e3 u% o/ e" z
' ?. E- Y. b4 D# F! E
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:: J( H1 U. E& J% ?1 ^

0 i5 \" [/ h. \" c' B* C' l-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
# `; j7 r4 f, x( A5 x6 m/ ^7 h-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT7 ^% e8 s, P- V- p
同时针对 tcp 和 udp 协议开启 53 端口。" r+ p; M1 C' T2 Z3 u- o& Q) E4 E

) |' U. W1 G! ^要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
0 R+ ]5 v& s  w
: ^9 J* u4 \' C1 K-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
- T  _( b8 }1 I+ x! M0 r要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:2 @+ M+ m# c/ S% n; j1 h0 @9 O
- X; f  j! N5 I" A9 t% a9 n; {
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT. o7 ]8 Y2 Y$ s! o. n* _
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:$ l3 `6 ^3 w: |( C: M
, L4 Q; e% ?1 a3 Z% o0 I
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited. C3 Q# y7 B/ A7 m
COMMIT. X% O  b0 m. M0 k7 @. B5 c( _2 t- B
改为:) E# J  D, G4 }) n; T7 c9 K
7 P& H' j  A: `8 V& {0 X5 r
-A RH-Firewall-1-INPUT -j LOG( u* C6 C1 ^5 B, [9 F7 m: A
-A RH-Firewall-1-INPUT -j DROP
3 l, M0 q& \) k  ^COMMIT
7 x5 k5 |1 \1 o保存并关闭该文件。然后重新启动 ip6tables 防火墙:% {* C+ L) ?% {6 B" U! p$ O
! a9 F) j( J) d+ P( [1 D; e3 F
# service ip6tables restart
3 E' U: x2 \" _% s; d6 ?0 x, e, ]然后重新查看 ip6tables 规则,可以看到如下所示的输出:* J" a7 s1 t7 {% K- j
. N2 G! w. t2 `( q, S. j' ~1 ?
# ip6tables -vnL --line-numbers
( X$ m! r1 i4 e, a3 z& i输出示例:
9 T- O, Z, S! F
& T7 B7 L, u: x) ~; B) C9 ]$ AChain INPUT (policy ACCEPT 0 packets, 0 bytes)
$ \+ P0 A7 D4 @$ ~/ q9 e5 y3 O8 s: Cnum   pkts bytes target     prot opt in     out     source               destination, E3 v% I- Y5 H# s3 t$ x
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0: T  E6 U8 x, ]  o5 `$ ^
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)$ ?0 Y2 b4 ]& a- }- K- O$ `
num   pkts bytes target     prot opt in     out     source               destination; k4 Y; [5 P$ v1 u  X
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
' h  ]; a5 a+ {5 u5 ~3 j& [Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
4 Y7 f1 q1 g* L, nnum   pkts bytes target     prot opt in     out     source               destination  z- k) o+ l5 ^6 G7 i
Chain RH-Firewall-1-INPUT (2 references)( T! w% E0 K2 V* E4 j/ h4 ]
num   pkts bytes target     prot opt in     out     source               destination
5 P1 f- @, ?; |' l1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
5 @- W1 u# s  N& i+ |+ Z, p$ B2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
0 K7 q5 y' f2 E. {3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
* Q2 K+ G/ z5 K3 F# E4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
9 y: U4 V' Z4 u6 Y) c# p4 T5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353+ R7 Q. ]# T: q8 o" P) o& B
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631* g0 r4 G: z  C3 X! z
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631: |, i  W0 e, ]( M
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610003 {- j" z. `) F! ?- T6 i9 q
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02# W1 S0 ~6 g3 p( b
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
% g7 F- g5 R4 E. h' ?0 m- ^( T6 k11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80% ^% D# ~) y; N, q  A
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
' ^8 U5 ~1 w9 R: K1 H: s" V2 y13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
: L2 o: C; V. K/ }" c6 D0 O1 T14      18  4196 REJECT     all      *      *       ::/0                 ::/00 V* W' H  y% M& r" l
IPv6 私有 IP¶' N) M  }9 i; f3 X  D8 d
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?8 ?4 w" D1 O# u, I6 p
$ b3 L1 W3 o6 ~! v8 z4 J% h3 Z0 ~
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。/ g* l$ B: t/ \3 y  ?

; Z' H- s/ _, O自动配置 IPv6 防火墙示例脚本¶
4 [& q  r& \5 C- l1 _* f与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。  N% ^; q* t7 p# e! T
3 _: k8 P3 m1 h5 }- D5 \
#!/bin/bash/ ?; ^  C5 [5 P) e$ o
IPT6="/sbin/ip6tables"3 _  [: n# m. w- \1 R* |# Z
PUBIF="eth1") |5 g8 Y. h4 H9 H$ c2 Z- g
echo "Starting IPv6 firewall..."
/ ^& w* c6 q7 _( g7 v0 h$IPT6 -F
' ?9 {: I5 u, m: t. I$IPT6 -X' K, d$ ~9 n  {. N  k  a" _
$IPT6 -t mangle -F
8 c0 }# m& {6 ^$IPT6 -t mangle -X; T# D- G5 v8 G  F

8 R) N4 b0 Z+ F0 y1 }2 b& c* g#unlimited access to loopback
. R9 w/ l; x0 K4 I* T$ ^$IPT6 -A INPUT -i lo -j ACCEPT# q, N5 Z; f# k+ y, U% g# G  @
$IPT6 -A OUTPUT -o lo -j ACCEPT
. T+ A7 Y! j) `: y3 X
: \- U2 g5 m) [2 @* R' O# DROP all incomming traffic  [5 Z. U: w2 b7 C1 k8 a6 v
$IPT6 -P INPUT DROP7 Q) y% \& R- z; }& N& I3 n, p
$IPT6 -P OUTPUT DROP
3 r. K3 B6 k  W/ m+ ]% i$IPT6 -P FORWARD DROP1 X  [! m- R7 {

, E" H3 R/ T  `# [2 I# Allow full outgoing connection but no incomming stuff4 H. ~, E% Z  j) ?0 r8 V
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
5 F8 z8 Y8 z+ N8 i2 H$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT* b. c' C8 t# {! |8 N

4 {0 n/ [/ Y8 z$ ^% |( U& S# allow incoming ICMP ping pong stuff/ G# Q5 e6 ]- J9 L4 C* `
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
% n6 }% K) n$ z$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT. h* }5 U: q+ B* \& R
1 ^! v6 l4 x9 F
############# START 在下面添加上自己的特殊规则 ############
+ V" k+ G5 s4 j3 t1 V$ X$ e### open IPv6  port 80
2 m  X/ v2 q( ^; D$ s#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
' n! V5 y5 A+ T. s; H& V### open IPv6  port 22
+ w# p/ I1 t6 }2 N1 C$ f#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT/ `$ h0 T, H; ^, J2 a9 }
### open IPv6  port 25
% I2 C, o& q9 A1 U  c, ?#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT# i( a7 v! X- ?" e# O7 ]
############ END 自己特殊规则结束 ################
8 h% ?- g6 _/ t! F4 @: v4 B& w4 H6 _( K- o5 }8 r
#### no need to edit below ###3 s/ e* }9 J# @1 h- ?7 R
# log everything else, m: z8 p; k* q( c/ `+ [
$IPT6 -A INPUT -i $PUBIF -j LOG
' o9 M- q0 X9 C/ N3 H. H# \$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-10-15 23:37 , Processed in 0.100938 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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