找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16267|回复: 1

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

[复制链接]
发表于 2013-3-25 21:39:59 | 显示全部楼层 |阅读模式
Ip6tables 是 Linux 核心中用于设置、维护和检测 IPv6 包的过滤规则的程序。使用中请注意 IPv4 版的是 iptables,而 IPv6 版的是 ip6tables。' \4 j6 `  a  Y5 `  i  ]4 y

$ q) ]6 j; ?6 ~1 G5 ~% @5 l) r/ I' T在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:; r* r4 F& ]- y2 w& f' E: i* B
ip6tables -nL --line-numbers5 N' O% x0 _2 U/ Z
, \) |6 T6 C) g" N+ J7 d0 ~) p4 [
使用编辑器编辑 /etc/sysconfig/ip6tables 文件:
0 q5 v0 I6 Q5 ]
& }2 @- z4 L/ S# vi /etc/sysconfig/ip6tables
$ u$ \0 e' `: T3 j, P# L  [! Y可能会看到下面的默认 ip6tables 规则:(不同ip6table版本RH-Firewall-1-INPUT可能不通用请用INPUT替换)
8 m) [1 S5 u  d, y  X*filter5 J* Z' z! Q  M% B
:INPUT ACCEPT [0:0]
5 u  o" E1 V( N# q( a! a:FORWARD ACCEPT [0:0]
8 j, a" n4 J- V0 a8 O& \$ X7 g:OUTPUT ACCEPT [0:0]; s9 e$ M% G- t& T% ^% W
:RH-Firewall-1-INPUT - [0:0]
9 M7 S$ L" z+ W; j% b7 G0 G1 F3 k-A INPUT -j RH-Firewall-1-INPUT1 r& u# y' s3 m  a3 e
-A FORWARD -j RH-Firewall-1-INPUT
' C8 e; P# D- z: J, G  V/ }4 U, }. I-A RH-Firewall-1-INPUT -i lo -j ACCEPT% \- J1 I6 T1 ^
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
- Q. M0 v! |6 [) J-A RH-Firewall-1-INPUT -p 50 -j ACCEPT: L" Y3 A  z4 C( o9 ?% ^
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT- C' S8 ^* k2 ]4 ]2 K1 x' K
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
! I# a' ?5 P) M7 k9 u-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
& a2 |) V9 L. `/ _" x% m2 z-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
) x6 d* N9 L" ?-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT( v. E7 Y3 B2 F  Z  d; ?- T
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT1 u+ T: \$ X7 j; D& ^# W
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
7 T! e7 u% D& w! A7 ~1 q-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited/ B: ]! ^5 y4 f. g- f- D) L+ l
COMMIT" H! b; C8 s' E, U
与 IPv4 的 iptables 规则类似,但又不完全相同。
; p, V2 K6 X; i* k6 }. C) g0 T3 t, J, V
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前(准确说应该是在默认操作之前,下同)添加如下规则:
5 O/ G, h% p: a# u  o4 e- w# x0 Y
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
9 f' O- d! b# U: {& `2 V8 `-p tcp 表示仅针对 tcp 协议的通信。–dport 指定端口号。& p1 x, W$ a. Q' n

% z0 u! ]. W( V; n( K: t要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
/ \# i) O0 Y  z: j& \0 R  `* k  `( ^
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT& g- C, |' H% X; Y$ p
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT* ^( s( p  s9 C
同时针对 tcp 和 udp 协议开启 53 端口。
, f: `) ^, Q) N6 o, X
; n2 i# g; V$ }) |% A要开启 443 端口(HTTPS 加密连接服务器端口),在 COMMIT 一行之前添加如下规则:
) V" g, r( B; f9 K2 b! [  q: J& I- q, `
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
2 l2 W7 ^, t# N0 P要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:0 Y* r- U" ~9 _- N6 r! Q8 e: n

  f. s" e" `7 y-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
+ t6 ~) A7 s% d1 G对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:( L/ c& N/ T- z# W4 l1 X6 d$ w
/ f. g6 v" c' R3 Q8 {$ W
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
0 X5 I5 C/ |) I% T. _3 XCOMMIT
" V4 I  V) \5 h1 n改为:# n# C3 F# S' P6 a! x; H1 ?0 C

+ G- Q/ W& D) C9 E-A RH-Firewall-1-INPUT -j LOG9 x( D" g8 M' A- k$ y& x- ]
-A RH-Firewall-1-INPUT -j DROP" M. q; K2 @0 K) i+ {
COMMIT1 i7 B+ p8 W0 D, r/ A6 t
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
9 T0 t8 K* \# v- I. N4 Y- r; _0 p7 Q1 E. C% n9 o6 K" ~5 V% F% V
# service ip6tables restart
2 r# r9 E$ W& t) c然后重新查看 ip6tables 规则,可以看到如下所示的输出:& K- d* _+ H) m; W! v; H" J
$ F* {. n) g3 N4 r0 p) i- o& S) {
# ip6tables -vnL --line-numbers/ Z, z# U* C/ ^
输出示例:% U$ c% o: A/ `" ?9 M

: O  T8 x7 I& [- q, v6 M$ XChain INPUT (policy ACCEPT 0 packets, 0 bytes)
" [" q: O2 b1 Wnum   pkts bytes target     prot opt in     out     source               destination
7 _, t6 q* v; z6 |; N1    42237 3243K RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
1 m1 o% N0 Q. s' NChain FORWARD (policy ACCEPT 0 packets, 0 bytes): a, ?5 F" @6 E7 W+ q
num   pkts bytes target     prot opt in     out     source               destination, ~: f4 F9 W4 \; f+ x* [- Y' a" g% C- `
1        0     0 RH-Firewall-1-INPUT  all      *      *       ::/0                 ::/0
( F: j: j6 Z' |7 d! U: g3 AChain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
. S4 g) g3 N+ ?+ nnum   pkts bytes target     prot opt in     out     source               destination, g3 O( c5 f$ n% \  \& f1 ~
Chain RH-Firewall-1-INPUT (2 references)
. S: \- w2 V$ ^) Unum   pkts bytes target     prot opt in     out     source               destination5 p; K+ J% E' M" {3 I
1        6   656 ACCEPT     all      lo     *       ::/0                 ::/0+ @* e! ^' P% c4 ^+ ^( g: Z" @# j
2    37519 2730K ACCEPT     icmpv6    *      *       ::/0                 ::/0
/ z% t4 _( s- R6 U1 `" `' a3        0     0 ACCEPT     esp      *      *       ::/0                 ::/0
" h+ a$ [3 M$ n3 ^+ L. P' w4        0     0 ACCEPT     ah       *      *       ::/0                 ::/0) g! K+ s0 ^- v, w
5      413 48385 ACCEPT     udp      *      *       ::/0                 ff02::fb/128       udp dpt:5353
3 f9 p+ D; _4 x, q: W: T  T% l+ H6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:631
' P# G2 w( |6 |) X7        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:631
) U" |; o6 I) k8      173 79521 ACCEPT     udp      *      *       ::/0                 ::/0               udp dpts:32768:61000
6 V3 s$ I2 u/ f: l2 j9        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpts:32768:61000 flags:!0x16/0x02
+ _% M  i  U* n# D+ b10       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:22
( o0 Z0 ^$ u" `11       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:80
' J# S+ a0 u4 z- F12       0     0 ACCEPT     tcp      *      *       ::/0                 ::/0               tcp dpt:53
/ Q  V; J: G8 c4 Z( S13    4108  380K ACCEPT     udp      *      *       ::/0                 ::/0               udp dpt:53
% G* k. I( D2 P14      18  4196 REJECT     all      *      *       ::/0                 ::/04 l6 A+ k$ ^, |( J1 \( Y* O+ M
IPv6 私有 IP¶
& P, J% w1 |; y! N# dIPv4 通常默认即可保护内部局域网私有 IP 上的主机(RFC 1918)。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?
  y( r3 B0 c* P  Z/ ?* S3 J8 D0 j" l+ A0 t2 b' q8 O5 W" P
不过,可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
8 H4 S* S' z% g' q! @
# W3 q: x8 H) V自动配置 IPv6 防火墙示例脚本¶4 ^+ d$ h% W2 S& U+ r8 n- f, T9 y$ p
与处理 IPv4 防火墙类似,我们除了可以通过直接编辑 ip6tables 的保存文件来配置防火墙之外,还可以使用类似下面的脚本来自动执行配置过程。- m' ^7 w" s, T$ E. Z

' \7 G7 B! |& x#!/bin/bash6 q6 D/ G0 o2 v, K4 A+ J
IPT6="/sbin/ip6tables"4 h: }8 g5 d8 }2 }
PUBIF="eth1"
3 m! c0 T% C, |+ ^1 ]9 a+ techo "Starting IPv6 firewall..."
5 R1 e! L& ~( \* d$IPT6 -F1 d' n. Y, D7 a  q/ Y
$IPT6 -X
' w  {, K9 G5 L$IPT6 -t mangle -F
  `( }2 s' ?# Z% s+ S1 d' X$IPT6 -t mangle -X4 X1 j( ~, e6 [# s- F8 ~
6 }3 O; [" B- U
#unlimited access to loopback- c2 W- B1 L- @; Q' c
$IPT6 -A INPUT -i lo -j ACCEPT# w- q. k; D! K! T! @4 E
$IPT6 -A OUTPUT -o lo -j ACCEPT! r% g6 m* |8 m' |: t$ N

  X: {; q. x0 I; d# DROP all incomming traffic  W2 z/ \, |- A- u: a. d
$IPT6 -P INPUT DROP$ `3 m# x, ?# {0 [5 h
$IPT6 -P OUTPUT DROP
0 Z. Z$ S: w. X1 t7 T$IPT6 -P FORWARD DROP# e" H" r* J$ x& m. M, E9 }$ f# d

- `4 ?- _/ B1 l* f( \; W' r/ B9 @4 S# Allow full outgoing connection but no incomming stuff
/ f, {: p$ Y  u$IPT6 -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
' @0 e# S  b& S+ v$IPT6 -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT1 F, Z3 P8 x1 Q5 @' u( h

; b( R: z! G( u8 z$ m( j( `# allow incoming ICMP ping pong stuff# A" A. o, [  h( V6 K4 C! s
$IPT6 -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT
( H1 u/ J. m8 J7 P8 A5 L$IPT6 -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT4 U& C6 H  C% @7 d3 a

( ]8 S2 W6 C! @: y4 g4 Y6 u, m############# START 在下面添加上自己的特殊规则 ############4 d& j; H! l% K  U. \1 H
### open IPv6  port 80
& q) r$ U) o; w5 B) ^#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 80 -j ACCEPT) S9 p$ A8 v+ Q4 F0 A* t% _
### open IPv6  port 22
1 O. X" c+ D1 X5 s0 g+ h#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 22 -j ACCEPT
+ B8 q% `1 X# O/ M/ N: c### open IPv6  port 25
* b4 ]! R) A" ~6 r' F#$IPT6 -A INPUT -i $PUBIF -p tcp --destination-port 25 -j ACCEPT
0 M, S( ~, y7 p  z2 {############ END 自己特殊规则结束 ################) v1 ], o: q. m. h8 q
2 B  N/ ?/ n" q5 C2 h& d
#### no need to edit below ###
+ j0 f4 c7 c* `0 `: W* d& K# log everything else9 ]# ^( ~' o# e/ S
$IPT6 -A INPUT -i $PUBIF -j LOG! m. v: a5 C/ E* q6 h! Q
$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-11-7 16:35 , Processed in 0.081422 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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