找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15852|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。/ {7 k* G/ Y! c! o2 j

8 y) d" N! x2 ?7 T在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
; l# K$ `9 c7 A2 Z6 m6 E/ s ip6tables -nL --line-numbers% e+ U$ |9 b0 S8 k- H" `
, H, m; u. I# T" @8 \
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
# P* ?  l% _3 _) A  c
6 W8 W. K% O0 J  Y! E8 b( k# vi /etc/sysconfig/ip6tables
* W) k, R! P7 R8 M. q/ L1 k- ^可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)9 L3 N4 Z& ?1 S" X4 A
*filter% l& n0 z3 o2 D% a3 A+ d5 r
:INPUT ACCEPT [0:0]
' }* `2 K6 C; y- M:FORWARD ACCEPT [0:0]
/ \2 n" }1 i5 z3 X5 \" ]! l6 Y% Q5 Y:OUTPUT ACCEPT [0:0]5 \1 F, W* ^; S2 O! L3 ^& c
:RH-Firewall-1-INPUT - [0:0]$ J7 x0 h+ @0 U% F+ @. D1 m- ]
-A INPUT -j RH-Firewall-1-INPUT8 b" c0 Z' e0 I% {; i1 g  A& B/ k
-A FORWARD -j RH-Firewall-1-INPUT
: ^# t" ^; D3 O. \$ u! @5 G$ E-A RH-Firewall-1-INPUT -i lo -j ACCEPT
# f$ y( w7 N3 d0 d/ A-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
* U$ @$ O2 s" H& |/ l# z" p-A RH-Firewall-1-INPUT -p 50 -j ACCEPT- B* e3 [6 S# |8 U
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT# n1 J6 m) M, M9 y& E: X1 f% P" @
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT0 a% N8 U5 O; F1 f* f% b1 y
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT4 [$ _+ J* g" i/ R1 t9 |* F
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT4 Y* i/ ^% _" \) V1 h
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT; v) e7 F+ r# L1 V* v
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
( ?% B. o+ ?4 P% k-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT- ]7 s6 _( L9 r3 d4 ]9 N! r; W
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited6 ~3 f) E5 b3 X8 b
COMMIT' P5 E1 y% J7 C6 s3 k* M& Y5 }
与 IPv4 的 iptables 规则类似,但又不完全相同。
6 b7 s, A' l, B$ @1 }! F& G; C, l6 P' |8 p$ W% p
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
1 q1 ~4 J% K0 {$ U, [2 t7 @( p4 G8 M" d
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
) ^, ]4 i" R, n. R! m1 S-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。' p6 Z' A  S- i# S( R- n

4 i" c7 _8 C; ?; m4 T4 W' y; G6 F要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
& K" @, M) G% k. \0 L/ |- A+ V1 R; I, Z& ?
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
) o2 R+ U# ~$ k-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT6 [# f9 s0 u& f$ H) n
同时针对 tcp 和 udp 协议开启 53 端口。& `+ c. m, a. s. |( r* z
: r% T2 V: i: G
要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
0 L4 E! O- P" L! b
, z$ u" {# @9 x-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT; l# T5 r# v" T& x
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
% k5 V4 w, `  U5 {
* u, p$ z" k: q- A2 V% t: y; K" B1 ]-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT# H0 x% ^8 D1 `3 W! {
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:, t; Z; C6 ?" f
6 H0 |, i. A$ Z8 [
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited; n( ^( Y+ M; z& f% K
COMMIT
0 Y6 o- Y, i; f9 `$ y改为:& h2 l, @4 `( M0 R

# c2 }% {' ^* b* i-A RH-Firewall-1-INPUT -j LOG& }. M, `) w& O6 l2 O3 O3 ^
-A RH-Firewall-1-INPUT -j DROP6 N/ a; X9 `: }: Y4 x
COMMIT9 g8 Y4 ~5 P' B( H
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
- f& v; [! Q' g: n/ p1 K4 E! f% f! c
- ?! ?9 E% z  s. B, [# service ip6tables restart* g# e( K4 o2 J
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
8 r0 g6 M' S  S6 P2 i
) h8 m0 _3 f6 [* g+ x& k7 V, @# ip6tables -vnL --line-numbers
% J" m$ O: _2 r4 c! M3 b* R输出示例:* ]* N! c& w. X
; }3 f: ?" x" p4 ]7 T) [
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)  h/ H" f+ e- r% B1 M+ F! S* ~5 s
num   pkts bytes target     prot opt in     out     source               destination+ M5 r1 W0 ?3 D/ @. }! g
1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/01 b: T& W  f& D
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
8 q% g+ ]7 {6 i5 ]9 Q5 A0 E0 N3 Jnum   pkts bytes target     prot opt in     out     source               destination
$ w  P, ]4 x4 v& J; |1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/02 `  I5 f+ ^! a+ o
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
! U: h/ t8 M- O: b! Snum   pkts bytes target     prot opt in     out     source               destination
- n* l+ C3 R2 lChain RH-Firewall-1-INPUT (2 references)
8 e2 i3 i) {% K7 W* fnum   pkts bytes target     prot opt in     out     source               destination
% C/ z* i( V  w& I: {- z$ z, u% v1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
. A/ V) O# W0 H3 u2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
9 X! p8 `" y2 l# f5 T6 \9 J9 b  e3 j3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0; q4 e4 T" e9 X( E; L
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/07 c' Q. R8 Z# o; J! H0 I* h* y4 }
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
: }, V& q- H4 L" i6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
8 j" l6 `6 {6 j2 P3 W5 K  D+ }4 l0 L7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
1 f; e2 O& a3 ^% |3 ~% }8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000/ v$ n7 G7 T# D6 `* ^; U
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02; x5 @- o* U" l( }& z$ a
10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
- U# `# l% N9 g; L) E. p11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:805 K6 R* U# j6 t- V
12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
$ m. q% y# A4 _/ o/ Q) ?13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:538 B3 W5 P8 F! R8 e$ Q; C) N
14      18  4196 REJECT     all      *      *       ::/0                 ::/0( ~5 \! B, S- R. u7 m2 i
IPv6 私有 IP¶
# d# u& e  A: d% w& j1 u& zIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?; S; G1 ?% K( r4 {" B! a
- e  c$ j9 B: K8 F! `3 x
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
6 k4 D& p6 X4 q" s
, N  U& R5 ~9 z, M. y自动配置 IPv6 防火墙示例脚本¶  p# i3 {1 f. U5 u8 w7 F0 B
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
/ O* h* v8 G6 R: c
% O, q7 G4 q8 k  X#!/bin/bash0 l+ R6 B- G) o2 f5 M) o, w' o
IPT6="/sbin/ip6tables"
. o3 S' ?4 n, L- T1 u1 T  q; g8 d% ~PUBIF="eth1"
0 Y1 m3 k4 f1 V3 Pecho "Starting IPv6 firewall..."
9 K; Y: n# o! r* X# H$IPT6 -F
+ [) F9 X2 Z/ H/ F' _  K$IPT6 -X
; I( K' c/ t" m4 A: B  A6 s$IPT6 -t mangle -F
( E& r3 R  g2 S7 u& z( f0 f$IPT6 -t mangle -X) U0 S! Q, u* K4 W: L/ g+ Q3 s& J

/ L* S. `% V, |# F' K2 G: C9 D, U9 K4 k- y4 Y#unlimited access to loopback
/ q$ P! o1 k9 \0 Q* g$IPT6 -A INPUT -i lo -j ACCEPT
! g  R5 c% B! P/ U$IPT6 -A OUTPUT -o lo -j ACCEPT
# K( h2 m, w$ d! J) X% l
' s4 J. `5 g/ b/ D; q. {+ Q# `# DROP all incomming traffic
. f  O: f$ l7 b! m' S% r$IPT6 -P INPUT DROP/ K8 j$ z4 U1 {" }/ ^) I. W% O
$IPT6 -P OUTPUT DROP, O( S! i5 I: |: S$ Y
$IPT6 -P FORWARD DROP5 ~. R- f4 V9 p! w, e
5 E* n$ J9 O' ^5 d+ l: f! f1 ]* p
# Allow full outgoing connection but no incomming stuff
) Q) {/ F5 ]9 F  ~$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT) `$ @: ]) |8 c; e( X
$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT, N2 O/ a& {/ ]7 W+ m6 I1 u# i

$ W& p0 z$ |6 J: R# allow incoming ICMP ping pong stuff& _& f' W0 |) \
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT1 `% l; u0 }7 e/ I/ c$ a/ H! b8 Q- G
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT% B" g8 i4 I( \: u) o! t+ g

$ H& X' f+ E8 B+ k7 @. H' U############# START 在下面添加上自己的特殊规则 ############1 X0 O$ {7 g! J- `; Y. x! A) j* L+ I
### open IPv6  port 80 , z, x) G) U. _
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
; O$ K0 X6 F& k. k### open IPv6  port 22
1 g) a5 W; p3 C" g3 Q2 H#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT! S) e6 s3 c: B! N6 U! F/ C3 ~( a
### open IPv6  port 25
$ a5 Q0 ^) y, `% Q+ x! }9 z#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
; F1 b4 E' o% \2 K7 n9 |) W# D8 s############ END 自己特殊规则结束 ################0 T7 `& s6 q, C2 G2 N; F

+ ^0 S8 O- g2 Z9 \% a% s#### no need to edit below ###
+ A  {) w% C2 U3 v0 Z- ?) y. M# log everything else
( W, j* l5 p+ Z! g$IPT6 -A INPUT -i $PUBIF -j LOG
% v/ G1 ~8 e& F1 p7 F3 x# X( R: O$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-9-14 07:27 , Processed in 0.076692 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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