找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16531|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。+ ^' Q& E; Q$ D3 w! i* V
3 M% k4 v' z% A8 a1 w. E5 j
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:  D2 ~7 T; Z- T0 H% U
ip6tables -nL --line-numbers' |% r+ `+ s4 \6 Y7 f

# w1 E- i# `2 P& q使用编辑器编辑 /etc/sysconfig/ip6tables 文件:/ p. X& ]9 b! C! y# P: W- Q$ r

. F9 \$ w' K* T/ |) Q# vi /etc/sysconfig/ip6tables
' z7 d: _8 K" [5 K# ~: y可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)# m5 m  v  ]+ Z* S) y+ B  v
*filter8 Z0 o6 ~7 c' A0 z7 Z" n9 q
:INPUT ACCEPT [0:0]" k1 }0 l- T0 G4 ?2 c2 T/ j
:FORWARD ACCEPT [0:0]) ^& I5 B8 L; B3 D( u+ [
:OUTPUT ACCEPT [0:0]
  O5 D  F7 K& r9 J1 {:RH-Firewall-1-INPUT - [0:0]
) _6 h. z6 K4 h+ x, |* ]4 |' N6 x-A INPUT -j RH-Firewall-1-INPUT
' P* o' _$ b; ?7 N! r+ {-A FORWARD -j RH-Firewall-1-INPUT
) G* X$ Z( k3 g. i-A RH-Firewall-1-INPUT -i lo -j ACCEPT
5 P  A+ i9 w; X( z-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
8 ]/ t3 H8 r/ d5 R8 V. O-A RH-Firewall-1-INPUT -p 50 -j ACCEPT6 [# ]0 N" M0 r
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
/ X( |5 [7 |- X! ]5 N' ?  }-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
. e! U6 x- X4 \$ a  z! z6 A' i; o-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT- _0 u1 x/ V+ g
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT, B; T# F: b3 o# `; q
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
1 F. R: B  ^0 h2 u-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT8 z8 }4 j9 P1 J' H4 z# P
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT) X4 {, w; e& t  b/ j
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
/ W5 E/ V/ `% L6 Q, e6 y3 XCOMMIT
" N7 C9 _. K) u+ R) N与 IPv4 的 iptables 规则类似,但又不完全相同。+ V* v! @) {$ A7 I! Q2 K3 C9 m
% A% [" m4 c; _1 }$ [* l' H: }* K
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
" |' @  f( z) x: j$ S$ M) ]7 K# d! q# I: u* W1 n4 ~
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT! _* u0 M) S' P. X  z9 i/ Y+ e
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
9 O2 i& A: K3 z& S6 F) O( ^
3 A/ D  ^6 h9 D# c1 H7 h要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:0 z6 L4 F$ u& T' Q4 n" m5 L
# B) E6 T3 O, b
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT2 L% o, z6 w3 Z% B
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
" O" H4 v( U% ^. z$ n9 Q& ]5 U) T同时针对 tcp 和 udp 协议开启 53 端口。9 c3 Y' K2 d" w" e- |0 H% `

- l7 K& w& ?9 D$ o) E要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
, ~6 k1 Z! X. W6 l8 U
3 O- n: |3 P& O) L1 w-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
2 {5 D9 v8 q0 B要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
! Y# Y8 Q2 ?: E9 Q7 H& Y! m  n0 ?( L+ H1 o
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
: v; B2 B8 q* c0 F9 e对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
& _- p0 J( K9 O2 |* D2 R
" T& \( }2 X3 n& ~) R) h, b! F-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
, t. u! z8 G; A9 r0 N. a* nCOMMIT" T6 A9 I  M+ E, t* A, c8 G
改为:* J6 U* Z& M, e' @* U8 o
5 x6 x: F! }% F8 L& P0 }
-A RH-Firewall-1-INPUT -j LOG* f2 @+ I. t4 T0 f  E
-A RH-Firewall-1-INPUT -j DROP/ w. |8 w3 s, B* B4 ]; J5 Y
COMMIT
- V6 P- z8 o: p/ ^) p保存并关闭该文件。然后重新启动 ip6tables 防火墙:/ t+ _9 L) Q1 Y/ T

: k* a* B! C8 n9 S; x' ~: O( M, P6 r# service ip6tables restart
' Q* J8 |! v2 F/ A6 D, u然后重新查看 ip6tables 规则,可以看到如下所示的输出:5 Q( `. v) h" J# W# ~7 B/ D# J6 R

2 |# }+ b, h& K- k' g! Q# ip6tables -vnL --line-numbers
/ _, y0 }% B% g3 Q( _输出示例:
& g" j: q+ [9 \5 y3 t% ?2 _8 \4 M/ L4 w2 W8 d4 d( w
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)& ?6 i1 D- k: S' l
num   pkts bytes target     prot opt in     out     source               destination0 [8 }$ w$ S9 F
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
  q9 _  J" t: E* z2 \  KChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
7 Z( o' i( s. h3 gnum   pkts bytes target     prot opt in     out     source               destination1 v  X; H$ L; V7 L7 m' C+ D
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/02 J* ]4 t9 T, N+ n5 e5 m5 k( Z
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)' E6 ?3 A" p7 v& L- [$ T
num   pkts bytes target     prot opt in     out     source               destination
0 s( v4 D# E- y& F' R! i9 {$ VChain RH-Firewall-1-INPUT (2 references)
+ I" R, M# o: {( ]) n/ |2 Fnum   pkts bytes target     prot opt in     out     source               destination( y+ }4 F8 x6 f% {; `" ?
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
7 l% ^, x: U4 I, K1 T4 T* t& r2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
2 h* }6 b( B4 c  M$ z) v3 C6 ~; ^$ ]3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0' P( q8 F. `5 P: ?: q% H/ V; X
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/08 S7 R( i1 p' l' f& p
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
8 V3 q1 T4 L' `. ^2 g% s' e; V! X6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6317 N! I$ \: @7 ^) s) M
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
! b% e& u( Q1 s  z) S/ R8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
( Z% n9 P1 I1 D1 f9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
& E1 Y8 @& l: p10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
: U; [+ [  @6 L& k11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
" \  H/ O" ]1 G  i5 u8 C12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53/ I% B* w, p* X- J6 T$ n
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
7 U9 {) {; D; m% {2 Q" N& r- z14      18  4196 REJECT     all      *      *       ::/0                 ::/00 Y% d8 y" ^, q  X- z
IPv6 私有 IP¶5 `- n5 X6 r4 b3 G  u
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
5 y/ N5 J; w3 E& ?6 M
& ^8 t+ J, @6 V# b( ?% R) e不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。; M5 _- m8 P9 O# S, B5 j

9 D; R+ Y+ b6 i% p9 \3 U自动配置 IPv6 防火墙示例脚本¶
. }, R6 o. V3 f- p7 F- x5 B与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
8 J+ D. T) a9 e. ^% V0 p9 u" r3 J+ s
#!/bin/bash/ h: P) R. Y$ u2 P0 h. x
IPT6="/sbin/ip6tables"# o! B9 n# U- Q+ S2 n: S
PUBIF="eth1"
6 b: x  s4 f" v, s, ~! Lecho "Starting IPv6 firewall..."( ~/ o* i  @2 e. @8 U: b
$IPT6 -F: |" F' A" r: q. `0 g& y# [
$IPT6 -X
# B6 `" e& X3 F1 V2 u" k$IPT6 -t mangle -F# l( T/ Z* J$ N/ u; H9 A9 z; |
$IPT6 -t mangle -X$ O! Q6 U5 X4 [9 v# ?# P

/ p* \4 x5 Z8 ]% {#unlimited access to loopback
& D3 Q& |9 p( H% U$ Z+ Q$IPT6 -A INPUT -i lo -j ACCEPT
6 F- x1 q9 |  E# H$IPT6 -A OUTPUT -o lo -j ACCEPT
4 ?6 x* S+ e+ w4 T7 C4 Q! z/ `3 l( e0 G
# DROP all incomming traffic
5 [' ]& B7 A; j# a% k9 d$IPT6 -P INPUT DROP
& v* Q, E6 @! m6 I* B$IPT6 -P OUTPUT DROP5 s, W: j8 }, s: G0 i6 u# z
$IPT6 -P FORWARD DROP2 n+ y4 b$ y" M  O9 G" @0 L$ k6 i5 W

: {& i5 U3 p2 I8 d. f# Allow full outgoing connection but no incomming stuff
% |1 u. t) O! G; `- d; M$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
% h; B: `5 O3 |& O' H$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT) ^. q, \2 |2 L2 \. ?% E' Q3 q5 _

+ i* Y) Y; l8 K, h- c; S# allow incoming ICMP ping pong stuff
" D) f6 x7 x2 D" }5 O" P# J$ v$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
  i# I: e5 ]) r- S2 z$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
4 Z8 Z% x$ _& F" M8 W$ S' D; L' e4 d5 n& R6 u% U
############# START 在下面添加上自己的特殊规则 ############
' p$ n( R; B8 r) q$ [- `) j, a### open IPv6  port 80
- E# z9 c6 F( z+ F#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
) _0 V# U: ~- {$ ^( I5 `### open IPv6  port 22
. j/ V! d  d0 W1 i) f% R: y#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT, e9 O7 u* A5 a: y5 P
### open IPv6  port 256 O0 G* A  m# b& {( Y$ `0 d
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
! o8 Q% T* k4 f############ END 自己特殊规则结束 ################
& w0 ~: V: R7 H6 n$ y7 j+ H: ?9 d! D* j8 S
#### no need to edit below ###
$ Z& H" |9 M: z0 v: ?. x! @. j. ^# log everything else
- ]/ O; s8 E$ z- h/ S$IPT6 -A INPUT -i $PUBIF -j LOG
- q$ A+ e1 R6 t" L/ ~$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-12-8 18:48 , Processed in 0.053866 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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