|
|
1、安装iptables防火墙
, p1 f( n. c h7 `( ^# u' qCentOS执行:yum install iptables
7 j" d, k8 k: v Debian/Ubuntu执行:apt-get install iptables; M z/ m9 ?: T) ~: I$ k m
0 `9 v9 ]! Z4 `, v2、清除已有iptables规则
, h: F5 `: `7 V& o+ `. j3 xiptables -F
& C/ o0 c% g& K5 W7 _6 Z1 C0 ` iptables -X
. ~/ @; r1 S9 o+ w. q iptables -Z/ R# ^/ z0 R$ s) n* ?. N
* U) J6 p n% ]
3、开放指定的端口
+ `7 g7 H4 J$ ]1 U3 d0 V7 k#允许本地回环接口(即运行本机访问本机)
; ]4 k* |6 b5 Z2 e! I _0 b% qiptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT* ?. j1 ^: Z, L7 N7 m2 ^# a
# 允许已建立的或相关连的通行
. a3 _; S# t1 }8 M5 P2 w5 y( L( qiptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
" A( V) |. S' h0 R' [- S/ ?1 o9 i #允许所有本机向外的访问" C5 E( Q5 q2 s% c6 N6 D
iptables -A OUTPUT -j ACCEPT
' b, T, `9 b% _) h# _/ ? # 允许访问22端口- Z7 w& y5 {, r0 y3 J
iptables -A INPUT -p tcp –dport 22 -j ACCEPT+ D& y) d+ N0 V# l3 h
#允许访问80端口
. @2 i$ w. }. [: liptables -A INPUT -p tcp –dport 80 -j ACCEPT
. K8 W- ^0 o1 a( \ #允许FTP服务的21和20端口
3 O* p# D7 ?4 ?9 d9 Fiptables -A INPUT -p tcp –dport 21 -j ACCEPT
& U: I7 J5 m$ I! Z# _7 m) M' V$ r iptables -A INPUT -p tcp –dport 20 -j ACCEPT. [/ L, O- [% g. l* H
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
" M" i2 P4 q/ Z#禁止其他未允许的规则访问
! H) Y: ^3 o1 w3 u( `% xiptables -A INPUT -j REJECT# N! a- w/ A: ?0 \9 M
iptables -A FORWARD -j REJECT% d7 s6 u) n" z9 b
3 g2 A' i3 A/ q' x' d
4、屏蔽IP3 r1 Y; J$ f' L! C9 W
#如果只是想屏蔽IP的话3、“开放指定的端口”可以直接跳过。 {" z9 e" M/ Q3 n0 a
#屏蔽单个IP的命令是, }! a8 L' s+ r) m0 t
iptables -I INPUT -s 123.45.6.7 -j DROP
- ?8 S) k$ X) i9 O1 s: A) ^7 y #封整个段即从123.0.0.1到123.255.255.254的命令
# v& S0 G! h* k8 I. z- L- F. Y% t: Ciptables -I INPUT -s 123.0.0.0/8 -j DROP
+ } j" p0 n; T& J4 } #封IP段即从123.45.0.1到123.45.255.254的命令6 P+ j$ m! N& M4 x% J
iptables -I INPUT -s 124.45.0.0/16 -j DROP* M# }. Z/ U8 a; }' f: j' x+ l
#封IP段即从123.45.6.1到123.45.6.254的命令是5 V/ l( I! z# d& Z$ N! n
iptables -I INPUT -s 123.45.6.0/24 -j DROP
! B+ z+ c8 _! }$ d6 n
, s, E% j) _6 y7 E. k. W9 d$ a/ L4、查看已添加的iptables规则) C1 X" M/ w$ x, S- N! }
iptables -L -n
6 @4 ]7 c: u9 t {8 y* N v:显示详细信息,包括每条规则的匹配包数量和匹配字节数- @" [9 y7 N( { S
x:在 v 的基础上,禁止自动单位换算(K、M)
2 Y$ o2 V$ w2 T3 fn:只显示IP地址和端口号,不将ip解析为域名. m, ]9 n, F1 @: u
% k2 K* {3 J1 f. l; |5、删除已添加的iptables规则- }2 @3 T2 m. w0 C$ l* \8 I
将所有iptables以序号标记显示,执行:
& l5 i- c2 y0 j) |! [5 eiptables -L -n –line-numbers2 \ J7 p9 L+ C5 G9 a/ d! }
比如要删除INPUT里序号为1的规则,执行:
9 l8 s6 C/ m: miptables -D INPUT 1
( |$ u. _3 ^1 x" h: g8 ]! {
. u+ j* H1 f. c6 Y, P2 j6、iptables的开机启动及规则保存/ i3 {: }( C c% l) G5 F3 O) _7 q
chkconfig –level 345 iptables on
( m( k' }/ G7 \1 e8 Z: H* z CentOS上可以执行:service iptables save保存规则* L! v% H: ~1 F8 X+ ^
linux下使用iptables封ip段的一些常见命令:+ m. s6 y" K# a% Y
封单个IP的命令是:
& _" K1 x5 G- f6 b L, N0 iiptables -I INPUT -s 211.1.0.0 -j DROP
`0 f% Y6 B- O' A0 e封IP段的命令是:& ?2 A0 Q6 D* `8 N2 p/ [$ S
iptables -I INPUT -s 211.1.0.0/16 -j DROP
/ u% E/ J* l- o0 ]/ E iptables -I INPUT -s 211.2.0.0/16 -j DROP9 ~( J2 D8 L n
iptables -I INPUT -s 211.3.0.0/16 -j DROP
' Z2 F/ H9 T, X" O7 Q7 E2 x a: k& @! N5 X6 f% k6 c: ]( P1 I7 ?
封整个段的命令是:% R( I, {$ j- Q R
iptables -I INPUT -s 211.0.0.0/8 -j DROP
" e4 F0 s& z3 }: S2 o1 {
& A' N: P, ?! d0 x1 `+ ^3 I封几个段的命令是:2 R6 n0 b) ?# \8 G% M
iptables -I INPUT -s 61.37.80.0/24 -j DROP
" ]* L* O1 z# S& f8 ~ iptables -I INPUT -s 61.37.81.0/24 -j DROP9 k( ?9 p( I6 {2 l' @' H& K
+ ]3 O" q! [. E$ ~4 ~
解封的话:
; t2 m8 J$ m6 g2 h! g0 q( I+ xiptables -D INPUT -s IP地址 -j REJECT
- w5 J$ s* V! I3 z3 w6 F3 Q iptables -F 全清掉了
5 d) ]$ r- j& z. q0 K+ V3 a
2 z) o. e3 c0 |: u. K关闭: /etc/rc.d/init.d/iptables stop
+ @+ r3 W& L/ Z) u4 e启动: /etc/rc.d/init.d/iptables start
) E, J+ e" t' _5 l i) v重启: /etc/rc.d/init.d/iptables restart2 Q. o$ t& S8 ~* M9 f# R
|) v5 Q+ U& @) e1、重启后生效! O% M- P: M0 y9 ]- V
开启:chkconfig iptables on
/ g$ P- |3 b! B5 b* y关闭:chkconfig iptables off$ Q' x5 p7 j4 U, ~6 R% y0 }
2、即时生效,重启后失效! [1 V0 D- P' i
开启:service iptables start7 c( z8 l( c( | Y& ~) L
关闭:service iptables stop |
|