52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
5 B* p! p7 D" f- n6 D6 K
. R! I) @& q0 K0 e; O
我的環境:
3 F3 _: C& q8 V" {, _0 V# t8 g
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
2 N; Y$ m( ^( ]0 Q S% c& |9 @
1.用yum安裝fail2ban
1 t/ z8 S" |4 o, |% _* t$ w( |0 s
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
( T& [% P0 I8 ?& O. Q+ \4 y4 N$ T
% ^0 I" n! I8 @7 F/ I
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
: D0 c7 M6 O- I# }# k6 Q
! R9 E7 X, `0 y1 x" O
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
8 E/ C# V( O: k$ O1 n) O, r
" F* O( S) p& R4 @( C- A g7 P4 g
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
5 W* p* m3 \- q7 o: l1 T' p7 G
+ Y' J+ ^2 q8 x& f
vi /etc/yum.repos.d/CentOS-Base.repo
. Y: |% W* F" o7 g; K
在最後加入以下設定:
4 n; F8 Z0 F9 ~# ~1 D
! \' R8 E- {* b6 X3 I. l( B
[atrpms]
5 g- t5 l$ j: [
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
5 l1 u; d& \. f0 @
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
- U- d: l" L. v# ~( D- q
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
4 [0 b. P/ d5 U, ?$ r& n* @
gpgcheck=1
2 K; g- Q; {$ [9 e- c: _2 G1 z& g
enabled=1
% F/ p9 t! K2 q$ x4 Y- x) s* J1 c+ e
/ N4 F7 ?8 H+ x
2. 設定fail2ban
X& I9 j& H7 ^7 r
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
+ e5 R0 y8 K* p1 X' _
vi
/etc/fail2ban/fail2ban.conf
& ^1 k; \* N* L- Y
修改 logtarget 的參數:
! E- }$ L, W$ W6 I7 N2 V
#預設的參數
- V1 t6 ?! Z% m% J
#logtarget = SYSLOG
( F* E R) K" D' H' t6 F% C! f2 R
#調整後的參數
O8 l6 }. }/ u) B
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
5 [ o) F: n, e) B3 ~2 o
#預設的參數
) p6 l/ l9 `) v! m$ y* ^3 o
#backend = auto
9 O- s, _5 @! v, ~ U e6 z
#調整後的參數
3 K# I8 ~% x' R
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
2 s+ R% j) U' W+ O
[ssh-iptables]
. n/ @: j( [6 N+ c) p2 c& D
#是否啟用
7 k. E; y P+ ?. ? x# j6 _, K) T y
enabled = true
C b" w) o$ m$ d% A+ X/ [2 ^/ M
#過濾名稱,使用預設的即可
0 ^+ L z1 g9 ?* }+ R, y, Q
filter = sshd
+ x& C/ j- D" P8 P' A
#iptables設定
2 s* J# u/ D2 Y: O y
action = iptables[name=SSH, port=22022, protocol=tcp]
+ y6 T! g% q6 `
#發生阻擋時的寄信設定
3 H* ?- ?3 o# Q7 \/ a& x. |( G
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
& Q# e5 } K; w7 q# ]( v- d e
. F5 s4 ?# j7 D, o1 q+ S5 l
#需要掃描的記錄檔
- A% q! t) L) n4 X6 A
logpath = /var/log/secure
: V, p' T1 n# D9 a0 N( Y9 `0 w0 [
#最高嘗試錯誤次數
$ h. ~0 ^1 ~, c+ p3 |1 a3 f5 G
maxretry = 2
$ O6 r& T1 }! L" L# k0 A" \
#阻擋的時間,-1表示永久阻擋
4 M7 W0 j& `& s! v, l t @
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
8 s4 X3 m6 H) |' ?$ v& u6 V
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
* D$ G1 N! [7 j
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
3 O, s4 v3 o3 \8 _& `
vi /etc/init.d/fail2ban
+ P% ]* F+ r4 c" k; {; I) M9 @: q
找到start()的區塊,加入以下有#註解的設定:
6 o8 B: F3 r2 H, s
start() {
/ g) b( c) K5 t
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
; y- N& W2 T+ T+ b
getpid
I, p% F) v) j6 N( }$ D
if [ -z "$pid" ]; then
) q7 c J- V0 ?% G$ D* J
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
' C q U* V! H5 } G4 Q" G" W
$FAIL2BAN -x start > /dev/null
6 Q$ V+ g% g, Y3 V3 J+ F0 m
RETVAL=$?
, R, a* T. ?2 F2 O6 s
fi
- b' X# b4 v" v4 v
if [ $RETVAL -eq 0 ]; then
7 z- i% }9 e9 o. J* p9 {
touch /var/lock/subsys/fail2ban
. o7 O% O( V- E* V X$ a! e
echo_success
! [+ u9 Q# ~+ ?1 F# W
/sbin/service iptables restart # reloads previously banned ip's
- i9 }' L. v- `
else
! N) \" ]" c8 i
echo_failure
5 m w5 s) r+ G4 S8 P* A
fi
! b6 C8 x* m; ?+ L
* v7 a9 e4 D9 {+ Q
echo
7 Q0 O3 d5 W' ?4 K
return $RETVAL
* X! l9 r. r! }' T+ ~% F
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
) Q5 }2 x' N, V- J. `: B% J
stop() {
" ]# Y6 p1 A& }* w& O1 m
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
& G7 M/ F2 ?( w- ^
getpid
1 A+ ~! b% D- p1 \5 _
RETVAL=$?
1 \( ~3 | Z. _" z
if [ -n "$pid" ]; then
8 T W: W) h, S: Z; `- w
/sbin/service iptables save # saves banned ip's
' g1 r. h9 F' m0 y
$FAIL2BAN stop > /dev/null
0 _: V7 }" |& o$ s+ Q
sleep 1
B L$ o4 a4 w( q
getpid
6 i! [6 J7 b$ O/ w2 z
if [ -z "$pid" ]; then
$ T: d! `9 i8 K
rm -f /var/lock/subsys/fail2ban
( E9 m5 S, m" q3 k9 A$ s; q4 ]
echo_success
& u3 ?% U9 S) a. b5 C9 l* J
else
1 [) ~) c9 k% o; t+ a1 u' U/ N
echo_failure
" q e! K- g- n) K: c0 ]
fi
9 _0 K& w& j$ ?' E2 R
else
6 {+ c7 E, c- ]2 U3 j# @& k8 w
echo_failure
7 ^0 v1 `9 E. ~8 [1 r) p: _
fi
1 a) Q, ?$ j& `/ o
echo
2 R, e' g- d7 I) f
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
- q8 _) P: \. L/ b O
8 q j- t& ]* g+ W! u$ I
chkconfig --add fail2ban
- p4 ?* ?: |- ^! d& q
6 V9 k" q" M& h8 T2 Z/ {7 z7 O0 n) }$ E
2 {' W$ N; e; A4 p3 y5 v, n
p.s
9 a, X( H9 [! q) I
以上參考 :
: T9 u' c( c9 \+ }/ G
http://blog.pulipuli.info/2011/07/centosfail2ban.html
3 c& Y. S1 c# Z2 ~. B0 |" @
http://www.vixual.net/blog/archives/252
0 b# k' T) j! B) x
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2