52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
% k5 D$ n# ?! v `
8 C$ d) E* f n: {
我的環境:
7 R- \& S, \. B4 h9 z3 A3 R
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
2 ~( j- T# j, K
1.用yum安裝fail2ban
: n V) o3 X- X/ Z7 x( [' D
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
9 ^. v2 F& Y) T7 a2 U) H# J
& w) A& U3 B/ _, D
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
- ^2 [: [5 h+ T8 s
% d7 |# z! O1 k, y0 M- j) @) [
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
. ]; }' c- ]9 D
8 F; o, ^3 C, @5 ^+ p" i# ^/ `
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
) Q5 _" [! }0 X6 J2 U
1 d2 n% f; l, T
vi /etc/yum.repos.d/CentOS-Base.repo
; }7 O5 C8 O. G+ C, T( \! f c- h
在最後加入以下設定:
5 Z, w7 K% p$ N. i5 f
/ c4 y, M. x8 O( x
[atrpms]
) {- o3 t+ `: g! ]2 x
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
1 ]2 |4 j6 Q0 n3 r9 d6 q% d1 I
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
2 [' Z) g6 c( p( ^
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
. n6 x0 L9 k( R+ V% q6 T$ j
gpgcheck=1
0 Z" B. y! S; T
enabled=1
4 _6 ~+ a7 m( C; r" F
4 H, b! ~) o$ O6 ?3 h! E4 n. f2 A4 x
2. 設定fail2ban
" n$ H$ @$ O$ m' [/ m( G
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
* m, T1 r$ v' `% u! a
vi
/etc/fail2ban/fail2ban.conf
, p, i0 |4 S) S. @, K5 X. u
修改 logtarget 的參數:
3 n$ r# q" k- P: ?4 p8 M( v. w
#預設的參數
( ~ B2 ]/ ~, N+ g& ~$ `0 U& c
#logtarget = SYSLOG
/ B7 a$ Y/ p/ q4 k
#調整後的參數
9 d/ \# E4 X. }7 ]
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
o# z5 A8 v9 K5 B
#預設的參數
+ v/ @$ M+ t$ N0 j
#backend = auto
- A k$ T) n5 H/ {
#調整後的參數
- Z- r- O: c. w, ~! S
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
* x, R- B5 b# T: t! N5 I4 F# l
[ssh-iptables]
6 K& L& b/ H+ u1 A7 N- G( Q
#是否啟用
# i2 X) O! {% D/ Z0 q( s3 x
enabled = true
L- C. e/ d( K( O+ ^2 f! Y* w0 g) p
#過濾名稱,使用預設的即可
/ e% ^. g9 ^" m& F; ^5 L
filter = sshd
% K; I* |2 A7 ? q$ Y
#iptables設定
5 ~+ J: v& A8 O- K& f& j( T1 U
action = iptables[name=SSH, port=22022, protocol=tcp]
6 p( K+ T9 H7 y2 N# |: I% f" ]
#發生阻擋時的寄信設定
- J. |8 I* }: L6 N0 q! R# ~2 S. T
sendmail-whois[name=SSH,
[email protected]
,
[email protected]
]
0 y `3 q4 U h; K" T h
# x; C" q. b1 n+ d
#需要掃描的記錄檔
' C0 Z6 H5 a3 L9 J9 O8 @
logpath = /var/log/secure
3 \ Q! W }2 I P4 @" d
#最高嘗試錯誤次數
+ ?* X v) `0 e0 m2 \
maxretry = 2
. g: ^/ I3 m" q
#阻擋的時間,-1表示永久阻擋
: ]5 B3 V7 ~. r: {* Z% E8 B0 D
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
0 L, ^ o7 F% P- G1 W2 f# ?
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
. M+ l- M5 t2 a8 B5 u
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
& d+ O" a G( T
vi /etc/init.d/fail2ban
5 [; Y# @$ m1 Q6 ~
找到start()的區塊,加入以下有#註解的設定:
7 i# L5 @3 j" U0 N
start() {
! W1 v$ ]! C7 U7 ^) u! Y5 z+ w
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
5 K6 w2 i& k' t
getpid
( I- T I* n1 R6 G/ E8 G& O
if [ -z "$pid" ]; then
# D0 k5 D# R2 i" X7 e: i
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
* v" P$ q. X- q. n2 ?6 t5 s# X
$FAIL2BAN -x start > /dev/null
. y- S9 E9 ? x6 c
RETVAL=$?
- `8 }, r; d) x# L4 p
fi
: q- l5 y0 B1 z% P5 t
if [ $RETVAL -eq 0 ]; then
/ q( I' I& P, B+ ~2 d$ ?0 b4 E
touch /var/lock/subsys/fail2ban
' A' I# Z6 `9 k. M9 \
echo_success
5 F5 s& ]: }: C; j0 G8 K Z, N( Z
/sbin/service iptables restart # reloads previously banned ip's
% D' i* x) W0 ?/ O4 V
else
C: ]% Y* S6 [# L. c& F8 I
echo_failure
- G) b. _$ A1 V3 M4 [, x# a; Y
fi
, \; F0 f$ ?4 \& E
0 Q( ?* ?/ s/ f: Z8 s3 F2 v
echo
z% L+ T. Y) |/ J* v
return $RETVAL
% X2 R- k' ~5 T8 [0 p$ d
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
0 m4 B& s' d% D7 {/ o. T9 W8 j
stop() {
' m& R. S" V+ u
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
8 X; ^ k8 { {
getpid
; M- Z% N$ o! s/ c6 \3 Q" G
RETVAL=$?
6 c# R% r9 e/ T8 i; m* C G
if [ -n "$pid" ]; then
7 T) I9 H f7 r% }. p" f
/sbin/service iptables save # saves banned ip's
* c9 O5 I6 I( q8 x
$FAIL2BAN stop > /dev/null
{9 @6 v# Y9 L! E& r. U. r
sleep 1
( _9 y0 Q% p2 R6 E
getpid
8 k. D. y/ ~/ e8 H8 \% c! w& T
if [ -z "$pid" ]; then
; i0 {8 b) N7 F: M
rm -f /var/lock/subsys/fail2ban
0 v9 \0 M3 X$ {
echo_success
9 e% s. V: Q) k5 R" m
else
4 z% d& w$ E. p8 X3 U! b; K
echo_failure
& g" K# B1 @: a+ L& _
fi
) c- Z6 O; i1 r7 e4 o# H f3 @; c! V
else
& d: r$ r* u8 x6 c
echo_failure
3 F8 r+ w2 q; i# b% m0 [
fi
1 Z# A7 F# j" `+ Z. x
echo
7 K5 b% |8 M8 g, j+ f
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
F0 ~+ @" C- N
) i8 N6 M6 Z8 [& D6 ^7 a. V1 \6 [* l* w
chkconfig --add fail2ban
H: _0 U6 K9 q1 x8 }) b/ s8 }
6 Z+ `% w; s" u5 c7 x8 _: D
6 s- w) i! y G& y7 {7 M: x
p.s
3 U; C& w: N8 |; L+ q& A
以上參考 :
x5 y' S( K3 M4 _) z
http://blog.pulipuli.info/2011/07/centosfail2ban.html
( c J8 j' c/ ], j
http://www.vixual.net/blog/archives/252
% L1 Y5 v% D& ~1 V9 \
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/)
Powered by Discuz! X3.2