找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16939|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。; [$ g" }1 o' j  j% x" ?4 |5 n

  C2 d  v4 D1 p$ S) F4 f在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:1 e  f0 s( o; w0 h% l
ip6tables -nL --line-numbers& H- P3 n0 X1 I5 W, ?+ X" _
$ C# k/ A. K2 g- i; o/ [  u; R
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
6 T  Q; I' H% L9 u6 U' |# I' I& R3 J( j
# vi /etc/sysconfig/ip6tables$ s5 l; z( g! _  M* K& e8 f9 w+ ]
可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
/ h' |3 E. h) m5 Z6 V*filter0 r8 @6 F  ?5 r: b0 U5 v
:INPUT ACCEPT [0:0]
8 t& i. F  r& ]% |:FORWARD ACCEPT [0:0]
; q6 g8 Y6 w. G' P:OUTPUT ACCEPT [0:0]8 n! Q2 Y' Y1 P! s* |
:RH-Firewall-1-INPUT - [0:0]
. H2 C' |0 Q4 z-A INPUT -j RH-Firewall-1-INPUT8 _4 F" |7 `% a
-A FORWARD -j RH-Firewall-1-INPUT
+ o" Z0 f7 R6 |! I-A RH-Firewall-1-INPUT -i lo -j ACCEPT
- F9 V+ }! V" {+ ^" v-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT  T4 e2 p" Q# h
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
* _6 {  [8 G  v* a# c-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
  w8 p! T9 t8 _1 Z" O: I# A* O7 f-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT  N6 S" Q! b. a4 Z2 L% J* p
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
& e+ \7 n5 Y3 N; m7 K-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT% s/ w, a/ j8 s5 R$ A1 O1 f
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT1 f, o, T3 E- k1 W" t
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
% ?& x" R& e; g7 T- z) f. ~. A$ O& {-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
' ?7 o6 U0 Z  A" u0 o-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
, A5 ^' \. N- y% Y! uCOMMIT
; }# `; o; ^) B5 |+ ~7 J, ]/ ?8 M与 IPv4 的 iptables 规则类似,但又不完全相同。. H6 H* B# H2 ^- N

8 |" V1 F9 \( @& D: Q1 X要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:& W1 d" t" X2 D0 P' ~

  l% b1 R( j/ }% b1 T: f, E$ Y6 ^# }$ I! C-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT9 s; g# {8 s6 g, v  P1 x3 T
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。* Y$ L! J5 k" m: f/ k& O

0 O* b: Z0 J: G要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:4 \1 M! T' O# h7 o, ~

4 b9 ]/ J3 f. X  u7 z% _4 j; a" b-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT# J& {9 y$ G( u# a1 p
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT  `" P; g4 U  W6 ^- l2 y3 a
同时针对 tcp 和 udp 协议开启 53 端口。
6 Y8 ~, d% g( _) ?
1 v* [( d' ]" G3 |' Z8 y5 l0 o要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:9 j/ Q3 n$ u! N' n
- y2 F! i" k6 F2 q* E% v  X! a
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
3 U1 i+ O5 }* W" \要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
& z5 y* F5 ^8 w' h; }7 b# x" j% x# P# G# u8 m9 m$ z
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT& d: P) {) I4 \2 ~1 ?, _
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
: Q& B7 Y  Q  ]) r8 X6 ^* V; ~. E+ x3 x1 e7 G: k/ W% `
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
3 H1 r& f  a+ Y+ r7 {0 }COMMIT
% O+ R) `( ^6 t) u- s, [7 P4 @; Q4 L改为:
$ j/ ]- A3 k$ e7 p9 W5 d1 w0 I+ H1 W! H1 j4 Q% B/ h6 A3 \
-A RH-Firewall-1-INPUT -j LOG
8 y5 r' O2 d4 F-A RH-Firewall-1-INPUT -j DROP
( C! H# R) i2 z& hCOMMIT5 d/ b; I1 `' n! b3 ?
保存并关闭该文件。然后重新启动 ip6tables 防火墙:$ x& a2 |5 C- g+ k

, a3 P* O# K/ H# service ip6tables restart
) D2 l' A. e/ n5 {: M/ j然后重新查看 ip6tables 规则,可以看到如下所示的输出:1 q; F) S" `0 `2 T3 u+ g( ?
( f1 V- S% L9 s
# ip6tables -vnL --line-numbers4 D/ @3 r$ u# T3 `4 _- u
输出示例:
+ [9 q7 h& ]% d$ j' D, i' i7 A3 ~6 }& _  u6 r& ?6 m1 O
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
# B* ^; O* z" Y, Knum   pkts bytes target     prot opt in     out     source               destination
% O6 r& c' V( \+ p1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0% I" N- v  P/ C. k
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)3 b) h) h- \3 F# J) L9 f
num   pkts bytes target     prot opt in     out     source               destination* s' \' s1 x0 e) E; w9 H5 _
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/02 K" g1 }2 }+ o) N; m2 M# T# s
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)8 Z( F, n- V* {
num   pkts bytes target     prot opt in     out     source               destination
7 l2 \5 K) I; P5 y! [1 L& |Chain RH-Firewall-1-INPUT (2 references)& c9 g+ y! p' R, }( y
num   pkts bytes target     prot opt in     out     source               destination+ d& j6 I  e8 h& T4 r
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0& Q  b* I; J  Z/ p' |
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
! W; P, `- ~8 s8 i5 m3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
, {1 i5 Z4 M2 h' h4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
. t4 x+ q4 n: K% ^0 S. z5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
8 u; a# b6 w& h; C1 o6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:6313 |3 o3 t0 a9 T
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
1 H8 m0 U# l) e; o" \* ^5 v  B& D8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000) ?3 @% S( b0 r. N, j& r
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
' U/ I: x  J7 T8 d. Y! ?10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
" I) K/ h1 [9 i# ]: Q11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
+ [2 j0 \; Y$ {' c12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53) y! X9 g( I, l9 |# x; s
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
7 P$ G0 I* I& S: i14      18  4196 REJECT     all      *      *       ::/0                 ::/0. f% R3 U3 u  S) a! K
IPv6 私有 IP¶3 S' `) S' Y& U. {5 G2 H! t
IPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
! |, W& u: j6 L! B2 @$ S1 u+ ^$ F2 P! O
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
+ r# l- o  P  h0 e
5 `: H0 i5 I& ?% h自动配置 IPv6 防火墙示例脚本¶
3 T, U8 |5 i3 v; U7 p7 h8 C与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。3 M1 R8 b! Z9 _

/ g& M/ r" y) I! s8 y- A" j#!/bin/bash1 c6 X, w1 |) A
IPT6="/sbin/ip6tables"! }) _& I( i8 C4 T
PUBIF="eth1"& g0 w0 Q% m5 V  s$ B
echo "Starting IPv6 firewall..."
9 d' \* y9 _5 ]0 k5 E$IPT6 -F% I9 ]. D2 F1 }9 @
$IPT6 -X, X9 b0 s- O" g* o4 G
$IPT6 -t mangle -F, d+ L  H) x0 X$ J% G/ S1 S
$IPT6 -t mangle -X( |* R8 I2 ^2 A; }% h
  m0 k7 v) p4 z# L
#unlimited access to loopback! V- y. ]% v  W
$IPT6 -A INPUT -i lo -j ACCEPT
6 e3 i; r: ^: {) w$IPT6 -A OUTPUT -o lo -j ACCEPT0 \$ V7 @8 I; p
" G! N) F9 g6 x+ [
# DROP all incomming traffic
' q: D2 V7 ~/ l5 e: g0 O$IPT6 -P INPUT DROP( T- m7 A" v' K$ F
$IPT6 -P OUTPUT DROP8 y; K6 y. B6 S: E( g
$IPT6 -P FORWARD DROP, T8 _' Y. b6 R3 `6 |- B) e
. r1 E& s) W4 t( ~
# Allow full outgoing connection but no incomming stuff
- q$ E9 e; H5 \- w. w) t$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
" e" O' P/ H( g0 `, v: d! d$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
+ u/ \- F3 h. `. p, I  c$ W
/ B$ J" z/ w9 a# allow incoming ICMP ping pong stuff8 @8 W  H9 i8 [7 n, C8 W/ ]/ d0 k
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
; U7 x3 m! m+ O  `9 `) H: \  \4 r$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT, Y+ G8 b9 N; H; P/ x) d
7 {5 T; m  |) ^% A0 v- A2 o
############# START 在下面添加上自己的特殊规则 ############
5 V8 G% D9 d* p  H### open IPv6  port 80
  e: t, v8 o$ [1 Y- g* r- V& b#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT7 {7 @  Z% Y  G+ R% I/ t/ d# o* B
### open IPv6  port 227 t: j. z% e* ^7 P
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
( }) `7 M, r- b. I3 S: Q$ ?# i### open IPv6  port 25
% m8 P8 j3 I& X6 G#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
8 k+ }2 K9 x1 b% G* w############ END 自己特殊规则结束 ################' H1 N! G! B4 Z2 E8 V' Q, z1 n7 L! Y
4 E, {. u2 U! W# W0 `4 g
#### no need to edit below ###' {# C/ N& e, g% J+ y7 T
# log everything else
- [( x4 J; E3 Z' Z$IPT6 -A INPUT -i $PUBIF -j LOG
, C# s  t' K8 j$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-2-4 20:15 , Processed in 0.075451 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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