如何保证Linux服务器的安全.docx

上传人:b****6 文档编号:8488389 上传时间:2023-01-31 格式:DOCX 页数:10 大小:19.71KB
下载 相关 举报
如何保证Linux服务器的安全.docx_第1页
第1页 / 共10页
如何保证Linux服务器的安全.docx_第2页
第2页 / 共10页
如何保证Linux服务器的安全.docx_第3页
第3页 / 共10页
如何保证Linux服务器的安全.docx_第4页
第4页 / 共10页
如何保证Linux服务器的安全.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

如何保证Linux服务器的安全.docx

《如何保证Linux服务器的安全.docx》由会员分享,可在线阅读,更多相关《如何保证Linux服务器的安全.docx(10页珍藏版)》请在冰豆网上搜索。

如何保证Linux服务器的安全.docx

如何保证Linux服务器的安全

如何保证Linux服务器的安全

很少见有人马上为一台新安装的服务器做安全措施,然而我们生活所在的这个社会使得这件事情是必要的。

不过为什么仍旧这么多人把它拖在最后?

我也做过相同的事,这通常可以归结为我们想要马上去折腾那些有趣的东西。

希望这篇文章将向大家展示,确保服务器安全没有你想得那样难。

在攻击开始后,俯瞰你的“堡垒”,也相当享受。

这篇文章为Ubuntu12.04.2LTS而写,你也可以在任何其他Linux分发版上做相同的事情。

我从哪儿开始?

如果服务器已经有了一个公有IP,你会希望立即锁定root访问。

事实上,你得锁定整个ssh访问,并确保只有你可以访问。

增加一个新用户,把它加入admin组(在/etc/sudoers预配置以拥有sudo访问权限)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$sudoaddgroupadmin

Addinggroup'admin'(GID1001)

Done.

$sudoadduserspenserj

Addinguser`spenserj'...

Addingnewgroup`spenserj'(1002)...

Addingnewuser`spenserj'(1001)withgroup`spenserj'...

Creatinghomedirectory`/home/spenserj'...

Copyingfilesfrom`/etc/skel'...

EnternewUNIXpassword:

RetypenewUNIXpassword:

passwd:

passwordupdatedsuccessfully

Changingtheuserinformationforspenserj

Enterthenewvalue,orpressENTERforthedefault

FullName[]:

SpenserJones

RoomNumber[]:

WorkPhone[]:

HomePhone[]:

Other[]:

Istheinformationcorrect?

[Y/n]y

$sudousermod-a-Gadminspenserj

你也将希望在你电脑上创建一个私有key,并且在服务器上禁用讨厌的密码验证。

1

2

$mkdir~/.ssh

$echo"ssh-rsa[yourpublickey]">~/.ssh/authorized_keys

/etc/ssh/sshd_config

1

2

3

4

PermitRootLoginno

PermitEmptyPasswordsno

PasswordAuthenticationno

AllowUsersspenserj

重新加载SSH,使用修改生效,之后尝试在一个新会话中登陆来确保所有事情正常工作。

如果你不能登陆,你将仍然拥有你的原始会话来做修改。

1

2

3

$sudoservicesshrestart

sshstop/waiting

sshstart/running,process1599

更新服务器

既然你是访问服务器的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。

当有一些针对你服务器的更新时,正是修补的机会,所以动手吧,就现在。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

$sudoapt-getupdate

...

Hitprecise-updates/universeTranslation-en_CA

Hitprecise-updates/universeTranslation-en

Hitprecise-backports/mainTranslation-en

Hitprecise-backports/multiverseTranslation-en

Hitprecise-backports/restrictedTranslation-en

Hitprecise-backports/universeTranslation-en

Fetched3,285kBin5s(573kB/s)

Readingpackagelists...Done

$sudoapt-getupgrade

Readingpackagelists...Done

Buildingdependencytree

Readingstateinformation...Done

Thefollowingpackageshavebeenkeptback:

linux-headers-generic-lts-quantallinux-image-generic-lts-quantal

Thefollowingpackageswillbeupgraded:

accountsserviceapportaptapt-transport-httpsapt-utilsaptitudebash...

73upgraded,0newlyinstalled,0toremoveand2notupgraded.

Needtoget61.0MBofarchives.

Afterthisoperation,151kBofadditionaldiskspacewillbeused.

Doyouwanttocontinue[Y/n]?

Y

...

Settinguplibisc83(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settinguplibdns81(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settinguplibisccc80(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settinguplibisccfg82(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settinguplibbind9-80(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settingupliblwres80(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settingupbind9-host(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settingupdnsutils(1:

9.8.1.dfsg.P1-4ubuntu0.6)...

Settingupiptables(1.4.12-1ubuntu5)...

...

安装防火墙

安装现在正最流行的防火墙软件?

好,行动吧。

那就配置一个防火墙。

之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。

Iptables在Ubuntu里预装了,所以去设置一些规则吧。

1

$sudomkdir/etc/iptables

/etc/iptables/rules

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

*filter

:

INPUTDROP[0:

0]

:

FORWARDDROP[0:

0]

:

OUTPUTDROP[0:

0]

#Acceptanyrelatedorestablishedconnections

-IINPUT1-mstate--stateRELATED,ESTABLISHED-jACCEPT

-IOUTPUT1-mstate--stateRELATED,ESTABLISHED-jACCEPT

#Allowalltrafficontheloopbackinterface

-AINPUT-ilo-jACCEPT

-AOUTPUT-olo-jACCEPT

#AllowoutboundDHCPrequest-Somehosts(Linode)automaticallyassigntheprimaryIP

#-AOUTPUT-pudp--dport67:

68--sport67:

68-jACCEPT

#OutboundDNSlookups

-AOUTPUT-oeth0-pudp-mudp--dport53-jACCEPT

#OutboundPINGrequests

-AOUTPUT-picmp-jACCEPT

#OutboundNetworkTimeProtocol(NTP)request

-AOUTPUT-pudp--dport123--sport123-jACCEPT

#SSH

-AINPUT-ieth0-ptcp-mtcp--dport22-mstate--stateNEW-jACCEPT

#OutboundHTTP

-AOUTPUT-oeth0-ptcp-mtcp--dport80-mstate--stateNEW-jACCEPT

-AOUTPUT-oeth0-ptcp-mtcp--dport443-mstate--stateNEW-jACCEPT

COMMIT

通过iptables-apply命令为规则集生效。

如果你丢失连接,修补你的规则,在继续之前再试一下

1

2

3

4

$sudoiptables-apply/etc/iptables/rules

Applyingnewruleset...done.

CanyouestablishNEWconnectionstothemachine?

(y/N)y

...thenmyjobisdone.Seeyounexttime.

创建文件/etc/network/if-pre-up.d/iptables,然后写入下面内容。

当你启动服务器的时候,将自动载入你的iptables规则。

/etc/network/if-pre-up.d/iptables

1

2

#!

/bin/sh

iptables-restore

现在给它执行权限,执行文件,以确保它正常载入

1

2

$sudochmod+x/etc/network/if-pre-up.d/iptables

$sudo/etc/network/if-pre-up.d/iptables

用Fail2ban处理潜在黑客

当谈到安全的时,Fail2ban是我最喜欢的工具之一,它将监控你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web服务器的用户。

InstallFail2ban

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$sudoapt-getinstallfail2ban

[sudo]passwordforsjones:

Readingpackagelists...Done

Buildingdependencytree

Readingstateinformation...Done

Thefollowingextrapackageswillbeinstalled:

gaminlibgamin0python-centralpython-gaminpython-supportwhois

Suggestedpackages:

mailx

ThefollowingNEWpackageswillbeinstalled:

fail2bangaminlibgamin0python-centralpython-gaminpython-supportwhois

0upgraded,7newlyinstalled,0toremoveand2notupgraded.

Needtoget254kBofarchives.

Afterthisoperation,1,381kBofadditionaldiskspacewillbeused.

Doyouwanttocontinue[Y/n]?

y

...

虽然Fail2ban安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在/etc/fail2ban/jail.local写配置,所以把它拷贝到那儿。

1

sudocp/etc/fail2ban/jail.{conf,local}

配置

把ignoreip行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。

你也将希望设置一个destemail,这里我通常输入我自已的email地址,再在后面加上,fail2ban@blocklist.de。

BlockList.de是一个跟踪并且自动报告黑客IP的系统。

/etc/fail2ban/jail.local

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[DEFAULT]

#"ignoreip"canbeanIPaddress,aCIDRmaskoraDNShost

ignoreip=127.0.0.1/8

bantime=600

maxretry=3

#"backend"specifiesthebackendusedtogetfilesmodification.Available

#optionsare"gamin","polling"and"auto".

#yoh:

ForsomereasonDebianshippedpython-gamindidn'tworkasexpected

#ThisissueleftToDo,sopollingisdefaultbackendfornow

backend=auto

#

#Destinationemailaddressusedsolelyfortheinterpolationsin

#jail.{conf,local}configurationfiles.

destemail=root@localhost,fail2ban@blocklist.de

这有一些其他的你想检查的配置,尽管缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。

Actions

Actions允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了iptables。

值得感谢的是,有一个预配置文件action_wml,它恰恰是做这个的。

/etc/fail2ban/jail.local

1

2

3

4

#Choosedefaultaction.Tochange,justoverridevalueof'action'withthe

#interpolationtothechosenactionshortcut(e.g.action_mw,action_mwl,etc)injail.local

#globally(section[DEFAULT])orperspecificsection

action=%(action_mwl)s

Jails监控

为了让Fail2ban工作,需要了解要监控哪些东西。

这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。

既然到目前为止,你仅仅在服务器上启用了SSH访问,那我们就只启用SSH和SSH-DDos监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。

/etc/fail2ban/jail.local

1

2

3

4

5

6

7

8

9

10

11

12

[ssh]

enabled=true

port=ssh

filter=sshd

logpath=/var/log/auth.log

maxretry=6

[ssh-ddos]

enabled=true

port=ssh

filter=sshd-ddos

logpath=/var/log/auth.log

maxretry=6

让变化生效

既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

$sudoservicefail2banrestart

*Restartingauthenticationfailuremonitorfail2ban

...done.

$sudoiptables-L

ChainINPUT(policyDROP)

targetprotoptsourcedestination

fail2ban-ssh-ddostcp--anywhereanywheremultiportdportsssh

fail2ban-sshtcp--anywhereanywheremultiportdportsssh

...

Chainfail2ban-ssh(1references)

targetprotoptsourcedestination

RETURNall--anywhereanywhere

Chainfail2ban-ssh-ddos(1references)

targetprotoptsourcedestination

RETURNall--anywhereanywhere

在任何时间,你都可以使用sudoiptables-L来列出你的规则,随后列出所有当前禁止的IP。

此时,Fail2ban正在处理两个恶意的用户。

BannedIPs

1

2

DROPall--204.50.33.22anywhere

DROPall--195.128.126.114anywhere

保持最新更新

你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。

保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1