找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18068|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。, L6 m# V% w; N, z8 h6 |
& r6 I; Y8 L4 o2 i
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
7 |! ]5 Y- y" ~* ?5 b; w0 i0 j% c ip6tables -nL --line-numbers9 c( L6 ~( `6 U# Y* ~' B: D
- y1 i% l7 H1 b+ ~
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:) B7 @5 @7 z- s( \, r0 @$ [7 b( F

0 ]7 q- P$ X0 ]# Y- Z# vi /etc/sysconfig/ip6tables* P  b( _6 }/ }/ ?
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)6 i" d# o8 G/ t+ g0 [( R
*filter
) h3 q# o( k- p  \3 }:INPUT ACCEPT [0:0], R7 o0 m1 B7 ?$ V! z
:FORWARD ACCEPT [0:0]" e) \) C$ g: K5 X0 Y
:OUTPUT ACCEPT [0:0]; p) A! A3 P+ }$ F$ ?6 r; l3 ]
:RH-Firewall-1-INPUT - [0:0]( P+ C/ z! L4 k. o5 h8 l7 Z
-A INPUT -j RH-Firewall-1-INPUT2 X: A8 j# T( L3 M: A% S2 q
-A FORWARD -j RH-Firewall-1-INPUT
$ q7 [4 @& P2 M: P! L- ?; F-A RH-Firewall-1-INPUT -i lo -j ACCEPT
+ j. a/ u. V! Z3 Q-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT7 @4 \9 K" w% s, u" E4 V# a
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
. W; W0 ]' \4 T; \5 t-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
+ m" C. H6 o1 i/ ?: ?-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
/ K. p% \6 T4 \9 {4 A. Y-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT  k! J: i" Z3 X3 }, g, j4 a- U# y6 d  w
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT# ^1 Z6 T$ r/ y* I
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT3 n' @; @5 }) H5 u( E$ R. E
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
6 A& J9 m( \. ^3 B: p- ?2 }  L( t-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT0 S/ @: k8 f; U, B& J. X1 ?
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited  L" N2 |9 I: N; D
COMMIT( J4 m2 o2 C* k1 d
与 IPv4 的 iptables 规则类似,但又不完全相同。
& H9 s+ M/ R! U9 y# N+ p* u# v2 l  ?: R7 ]$ a  v& p, c( P
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
6 q: Q! X% g9 \* d6 P1 W5 M* ]2 f( z3 N: {5 K  t
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
, s* b+ Q9 ]$ z3 _- H* ~-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。2 v& v: g/ ?6 E; ]! X

! u" G( y0 J5 ]. t3 Y要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:# f9 I* l  U( {+ O2 f8 U
$ Q4 f  f( F, Q6 ^1 h, K; [. D: B! j
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT" m! }" S1 Z& f7 e6 I# Q7 G6 f
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
: p# S1 J# ~: Q: P同时针对 tcp 和 udp 协议开启 53 端口。! _, v" L! l: q  T# @* S) o
! L7 R% Y+ G( H* a* e' t
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
% D2 f, q' j1 l2 m5 A! ~8 R! G  i2 ?1 G3 s% M$ I
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT, n! K- k( B5 V. E2 ~
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
! g! w4 u: G  y: P3 g# o' U3 P. ^0 \: x, `8 E
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT) I/ L" X" J& p4 c1 k7 D# W
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:" z5 n, L- S; g0 q

2 @+ E7 J8 R. Y- m. H5 A* P7 E-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
  A3 L" g& ]& ^8 yCOMMIT/ b9 R! f# K2 ?; B! e
改为:
+ \, g) k0 Y- W/ j! y) I3 n. ^3 }$ Y0 n3 e, J& k
-A RH-Firewall-1-INPUT -j LOG' P0 e4 P- o% I" g, p. n8 Q; i6 h
-A RH-Firewall-1-INPUT -j DROP$ q& _9 ]9 k( H& P
COMMIT2 o! U* G, g9 J% t  K" R6 L8 V
保存并关闭该文件。然后重新启动 ip6tables 防火墙:8 o; Y/ m6 U3 ?4 _3 `4 Z3 D

# U% {, G, b, s) Z- b# service ip6tables restart0 H& s1 o5 v" z8 t, q9 l
然后重新查看 ip6tables 规则,可以看到如下所示的输出:* Y* y4 v5 H+ Y" G( U# U

/ A8 j+ y1 x+ R# ip6tables -vnL --line-numbers- K% f1 _0 I- @& ~$ z
输出示例:% G! {2 f% Y; |4 n$ t

' n9 s( H& Y- ]2 u7 ]Chain INPUT (policy ACCEPT 0 packets, 0 bytes)2 j; J" D# A( V: w1 ^: t7 b$ t
num   pkts bytes target     prot opt in     out     source               destination. w4 u. f0 V1 q9 \
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
9 }% g! n, e  U; a/ aChain FORWARD (policy ACCEPT 0 packets, 0 bytes)/ v  I0 k/ N0 C; b7 f
num   pkts bytes target     prot opt in     out     source               destination5 f4 F9 V! n$ v$ u* A
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
( C. q5 }" \% QChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
1 z! Y2 w5 H9 V& b3 T2 enum   pkts bytes target     prot opt in     out     source               destination
7 C) W' e9 G  h, [8 p# f' KChain RH-Firewall-1-INPUT (2 references)& B5 L. ]& A% s( N# v" {
num   pkts bytes target     prot opt in     out     source               destination4 x9 F  X  u8 r+ ]1 e! p
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/00 |6 E: C+ X- G3 L
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0. {$ B0 R4 y# d  P; R) j- }0 b
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/06 p% d- i6 Q) X0 x; G
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
0 b& i$ V  O- i# I3 L5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
$ c1 P: ~- @+ m  K) ]) o' U6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
2 m# |3 w! e# }' H7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631- G$ N* V$ V) g2 S! A, C/ G! ~' c
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:610007 [+ V7 `# O# V1 W# ^
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
1 A2 [" T9 L8 S. k10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:228 L  F" [8 K3 F- H6 Q6 k; Z- M
11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
7 O/ ~' j  Q" N+ N12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53) M% H  V% {8 f' t* i8 a. G( K
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:539 n/ r" C0 T; H: ~. b
14      18  4196 REJECT     all      *      *       ::/0                 ::/0; ?1 q/ g* E( C/ }$ Q9 k- Q2 U, e
IPv6 私有 IP¶
: I' W5 e$ ?. F% rIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
. J# E4 f2 c4 J. q4 }& r
3 d/ D* ^* v5 H& u0 p  J不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
2 r; v% i" F8 X$ @" q# s* }- x- U+ r: e$ R+ T
自动配置 IPv6 防火墙示例脚本¶# ?+ g& e* X; w4 ]; `3 W' r
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
  R* C4 j4 t, ^6 E  g
' J8 q+ l$ V0 U: B. ~, T% t' {#!/bin/bash$ _$ Y/ f% t5 ~+ H& a+ \
IPT6="/sbin/ip6tables"
( @, N# e3 ?% |. A" _2 b! E2 G; T- bPUBIF="eth1"
0 ], [1 e# x8 recho "Starting IPv6 firewall..."$ R2 g4 F& K% I! n8 D: j! z
$IPT6 -F
  N$ c2 ]$ [2 d; l9 O5 x, F$IPT6 -X+ ?( [# ~0 Q% N4 g
$IPT6 -t mangle -F# i: Q7 r# y; @2 A8 Z. E
$IPT6 -t mangle -X& V5 m1 l( ~2 B. g% I! Q1 |
3 m: ?  ?/ R" w* `# t" O
#unlimited access to loopback6 H* Q% r& p; X! z( ^
$IPT6 -A INPUT -i lo -j ACCEPT
8 U7 ]. _3 B9 P0 t% j) R  m$IPT6 -A OUTPUT -o lo -j ACCEPT" ?7 ]. z1 w9 t5 Y# @: i
7 z8 \$ p. m2 q& ~
# DROP all incomming traffic! Q6 R% _; J0 J; |0 {
$IPT6 -P INPUT DROP
3 a8 X* K9 P  U. G8 f* ^+ n$IPT6 -P OUTPUT DROP
+ r  g+ n2 w5 M$IPT6 -P FORWARD DROP0 W% R  X( i/ ?# `* i, E

' f6 t3 C% T$ Q# Allow full outgoing connection but no incomming stuff  x# D  K1 y8 A6 \# {
$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
6 ]8 W9 r9 N' U4 w5 y$ f/ D$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
+ P0 s* n& ?' W" H& k6 J& F. W" y/ i+ g3 r5 l7 f% G
# allow incoming ICMP ping pong stuff
1 J2 L8 ?9 p" ?, _$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT! ^; D# V+ X; c' n0 Z
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
  b8 i9 r& z( p9 f1 U7 C/ d, @$ U! S+ L# n0 w- M2 V. o4 c, f
############# START 在下面添加上自己的特殊规则 ############( C. D; l$ l7 [1 m% U' U& o5 |3 x
### open IPv6  port 80 ' P& x- {  H1 L- Q/ u
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT6 L" X% h- a* S& D/ d. B6 @$ l; f3 z
### open IPv6  port 22' Z, Y6 q* a* G$ k8 `- e  E: ^
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT( C' R' W' v" u, X) q
### open IPv6  port 25' \$ f( U$ T4 m! t
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
% S5 A& F! ]. e) V2 P############ END 自己特殊规则结束 ################
6 S1 S& u' v! a" N) w# `0 E. d& V' x8 @6 j
#### no need to edit below ###9 K* b* G9 b; ]! \7 f
# log everything else
0 T, u9 J6 R+ ?- h: |$IPT6 -A INPUT -i $PUBIF -j LOG. b/ R8 l7 U6 D
$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-5-25 11:05 , Processed in 0.069469 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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