找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18772|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。
3 s- X0 f& `1 V" M. _
  x" m) J  S& ~在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:$ o# K% g4 }$ v2 x
ip6tables -nL --line-numbers  ^+ S  \7 O0 Z# x7 z
! J( N3 V# d& g  H1 |
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
4 _6 g9 {" G; ?5 Y3 D: z9 a# i  t) `( |
# vi /etc/sysconfig/ip6tables
: D  @$ I7 c1 n% {5 O可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)) f- B' p$ `6 t" I% W
*filter
- B9 v. @5 ?+ Y. F" s6 |:INPUT ACCEPT [0:0]$ {) h% [6 ^/ y4 A) n, \
:FORWARD ACCEPT [0:0]
5 O2 y: K9 U/ D5 A# z# I:OUTPUT ACCEPT [0:0]
+ ]# Y& p# P+ Y7 _:RH-Firewall-1-INPUT - [0:0]
) S4 }7 J! Z# D1 E! x' r-A INPUT -j RH-Firewall-1-INPUT
4 i; o2 h6 J3 `7 H# E-A FORWARD -j RH-Firewall-1-INPUT' Y# m7 r  \  n7 q
-A RH-Firewall-1-INPUT -i lo -j ACCEPT# Y' ~, ^% r) I- A- s7 g( I
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT9 w* h: f+ e5 }8 w, e
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT/ M* d" `- X8 S0 k! R  y5 _  o
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT: \0 M8 Q9 j/ g0 a3 o" S
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT: l- X) G- C; m
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
: `3 D9 z% v2 j! t. U1 ~3 S-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT4 z( m* R3 ~) s& }! X1 N
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT2 \! N* c5 h2 ?6 n% i4 s; h- T2 G
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
3 m- x7 O! E' B5 x& L" r& R" O-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
" Y1 ^8 d0 P# b* \+ [9 |$ U) a-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited( z/ E; H- z2 I
COMMIT
2 q; S# T. [  T与 IPv4 的 iptables 规则类似,但又不完全相同。3 i. e- t; d7 n7 D( h( |
" _) q7 R! D! k/ A
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
$ p1 ]* A$ }4 f5 Q& r' a9 E1 A! i
) N. j( n& V9 B# h" i-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT+ u3 g4 q- `! }5 t. i( h
-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。
) K1 J1 o0 h3 @3 O1 g
$ n4 Q' P0 V3 I要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:: @9 ?; v' d" M0 G

4 x; s+ U) W- J9 N" b6 E% P-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT5 }% a! L% E$ ~# u% S% U3 z
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
& l2 D  ^7 W9 D- l" |) b9 ^同时针对 tcp 和 udp 协议开启 53 端口。
5 R5 K4 M: F' Z2 o+ M
' ^" j) y% `4 t; s要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
$ G, _/ z( D& {! k' H& v- h% A( f. K6 p  G3 ^+ t; ?/ m* ]. k
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT% l; {4 }: O( }9 s3 F# k
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
) o# T! Z/ n& t, t1 e/ o
3 w8 @3 \1 \( W3 ^0 o$ X) d+ ~-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT! P9 q1 I) U* S  Q% q; c! K
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:4 t( w! m; @0 H4 J& n
5 v' y2 Q' [5 T' }. F. f% {
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited! n3 M9 X7 ^$ Y5 J
COMMIT
& X. ^5 ?8 F8 @! n1 V0 b  b改为:
+ j: ~0 v% L4 }  K, d: y  R- J0 D2 o- l5 f- K
-A RH-Firewall-1-INPUT -j LOG
4 Q$ l, J# ]  o% E9 D; r-A RH-Firewall-1-INPUT -j DROP( E4 R6 Q& B- f  I* y
COMMIT, {9 F0 b$ }' V5 g2 o" `( |7 R  U
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
4 E0 d) }! c  R3 O5 x$ o# x3 C, e1 J- y4 C* h
# service ip6tables restart
& v" K5 R. i0 e9 M9 N* g然后重新查看 ip6tables 规则,可以看到如下所示的输出:
* |+ Z. k2 y+ E7 l/ K' D' G0 ?5 p1 c+ `$ i8 r& L
# ip6tables -vnL --line-numbers
3 G5 i2 n- p& W6 Z+ P; u1 g1 D, m5 J输出示例:$ T0 @( f3 i8 c2 P
$ A! E+ n4 `1 _, K1 f% x
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
& g1 P$ }3 A4 O; g% [num   pkts bytes target     prot opt in     out     source               destination
* T: v$ r* q- v6 F1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/06 X* ^: p/ D4 m2 e
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)! H1 b& e- q  R" t9 m
num   pkts bytes target     prot opt in     out     source               destination
5 D0 d, f; t. h% F' |. e1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
% |7 _! a4 c* O9 R, {! X: `4 EChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes): `- W/ I5 l! B& L4 X& \# }% m3 ~
num   pkts bytes target     prot opt in     out     source               destination5 v, W: E; [. e  U& a4 ]2 l2 P) ~
Chain RH-Firewall-1-INPUT (2 references)/ m0 D5 J1 @) U- u/ s- y
num   pkts bytes target     prot opt in     out     source               destination
2 F' l  `' s" O& ?; ^: S* R9 R4 I1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0
4 l; r- v, ^/ @* v* a$ O2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0' i5 c, H" b  c1 L
3        0     0 ACCEPT     esp      *      *       ::/0                 ::/03 `) @: ]" P$ L6 ~
4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0
# j5 H6 ?7 s& I. c( o* ~5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
7 ^$ Z( l1 C1 v. v$ q4 U6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631/ V$ s  p% B- F5 w4 {( U: X
7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:6319 @3 Z/ S( {7 X- ]# c7 y
8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000" o% M3 D: w# w; h  n
9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
! f4 F, a4 u+ x% ^10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
* s7 \" f) |1 O- U2 @: c/ o- L11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
3 H% z3 S& P& y; p4 R12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:535 u% v( a8 [7 H' U+ J8 S' h
13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53. j$ _# i$ j6 o# }) y* N( g& w2 n
14      18  4196 REJECT     all      *      *       ::/0                 ::/0) Q0 [2 V. `/ r" M# U$ j
IPv6 私有 IP¶
) t9 n0 ]1 t9 @- e& Y8 t  U- UIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
, B, n7 w$ J1 d, X- y0 s
; P4 k5 p: F! K不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
. ]) H9 b+ h. K  P  I; }1 C; Y. q/ e: q0 g" i+ A
自动配置 IPv6 防火墙示例脚本¶( I1 ?  S6 _& L- H( I( i5 f6 k2 N
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。
2 k" r: ~- L% l% ?$ b6 q  {
! z0 `. x& m) a/ W, B" o6 D#!/bin/bash
% `0 N2 @  z0 L3 I# U; J7 g) oIPT6="/sbin/ip6tables"
, e  w9 {; t9 j6 @- p+ V' O' k& APUBIF="eth1"* L" d+ C7 y$ S/ ~8 y' `7 d5 _
echo "Starting IPv6 firewall..."
8 y/ v& ]! P! G9 z1 R' t, W' G$IPT6 -F! s  \4 Q9 N+ H3 E+ z" V5 q
$IPT6 -X
) _8 _( v' C" r& R! R$IPT6 -t mangle -F% d) j0 A- @) i: s
$IPT6 -t mangle -X2 l" N0 _% B: _) a
1 P8 \8 y/ F2 K$ o+ W
#unlimited access to loopback- u  [: F; j1 v; Y, N
$IPT6 -A INPUT -i lo -j ACCEPT
- Z4 i, q0 c  [/ w4 B$IPT6 -A OUTPUT -o lo -j ACCEPT
8 p3 C; A7 I5 P$ v8 B( A$ ?1 i2 q1 j: x. i! I
# DROP all incomming traffic2 k1 c2 ]! D/ M% R, O" m
$IPT6 -P INPUT DROP! ]( n$ G6 n* F% d! a- P
$IPT6 -P OUTPUT DROP
4 s$ _9 i6 |+ z: F! H$IPT6 -P FORWARD DROP) B  N: B1 X5 R! w! N, p

: n) T4 W. U& W7 |0 Q# Allow full outgoing connection but no incomming stuff
* k+ c6 m0 }3 F% [$ [! d! r$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
1 b5 t$ J& K& n& ], c% P6 X$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
0 u9 U6 K" ^+ y8 U* Y+ {. ~$ K" Y: A$ g2 K7 G! a/ @
# allow incoming ICMP ping pong stuff8 g5 z3 A' A$ }8 n$ q8 A) T
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT. p1 l+ T6 K* D
$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT
6 U6 h2 ~) }6 `6 Z! j9 k$ w  i7 m' [" X+ P( B0 E3 [9 |
############# START 在下面添加上自己的特殊规则 ############4 c2 e( I! t- [& a5 q3 d
### open IPv6  port 80 9 a0 I9 r, ^7 d' X
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT
/ R; M3 I: w) \) k$ p& _6 {### open IPv6  port 226 c) ^4 y/ A9 B! T( ^+ y' {0 j
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
! ^& K; R% n8 r" W5 g3 P. l### open IPv6  port 25; d; h" n2 J& w4 R+ |
#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT% s, |" T$ x6 ?+ u/ X; P& t
############ END 自己特殊规则结束 ################
& A$ F4 M3 _1 o- G1 `$ I0 ]
# D; [; D2 k) F. M$ O#### no need to edit below ###" f4 G1 Z, O0 L4 W) |
# log everything else
  `: |& h; e* d! X$IPT6 -A INPUT -i $PUBIF -j LOG# d5 v4 I: Q# {& j( U% m9 X) K4 R
$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-8-6 02:47 , Processed in 0.075225 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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