如何保证Linux服务器的安全Word格式文档下载.docx
《如何保证Linux服务器的安全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《如何保证Linux服务器的安全Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
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,并且在服务器上禁用讨厌的密码验证。
$mkdir~/.ssh
$echo"
ssh-rsa[yourpublickey]"
>
~/.ssh/authorized_keys
/etc/ssh/sshd_config
PermitRootLoginno
PermitEmptyPasswordsno
PasswordAuthenticationno
AllowUsersspenserj
重新加载SSH,使用修改生效,之后尝试在一个新会话中登陆来确保所有事情正常工作。
如果你不能登陆,你将仍然拥有你的原始会话来做修改。
$sudoservicesshrestart
sshstop/waiting
sshstart/running,process1599
更新服务器
既然你是访问服务器的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。
当有一些针对你服务器的更新时,正是修补的机会,所以动手吧,就现在。
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
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:
Settinguplibisccc80(1:
Settinguplibisccfg82(1:
Settinguplibbind9-80(1:
Settingupliblwres80(1:
Settingupbind9-host(1:
Settingupdnsutils(1:
Settingupiptables(1.4.12-1ubuntu5)...
安装防火墙
安装现在正最流行的防火墙软件?
好,行动吧。
那就配置一个防火墙。
之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。
Iptables在Ubuntu里预装了,所以去设置一些规则吧。
$sudomkdir/etc/iptables
/etc/iptables/rules
*filter
:
INPUTDROP[0:
0]
FORWARDDROP[0:
OUTPUTDROP[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命令为规则集生效。
如果你丢失连接,修补你的规则,在继续之前再试一下
$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
#!
/bin/sh
iptables-restore<
/etc/iptables/rules
现在给它执行权限,执行文件,以确保它正常载入
$sudochmod+x/etc/network/if-pre-up.d/iptables
$sudo/etc/network/if-pre-up.d/iptables
用Fail2ban处理潜在黑客
当谈到安全的时,Fail2ban是我最喜欢的工具之一,它将监控你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web服务器的用户。
InstallFail2ban
$sudoapt-getinstallfail2ban
[sudo]passwordforsjones:
Thefollowingextrapackageswillbeinstalled:
gaminlibgamin0python-centralpython-gaminpython-supportwhois
Suggestedpackages:
mailx
ThefollowingNEWpackageswillbeinstalled:
fail2bangaminlibgamin0python-centralpython-gaminpython-supportwhois
0upgraded,7newlyinstalled,0toremoveand2notupgraded.
Needtoget254kBofarchives.
Afterthisoperation,1,381kBofadditionaldiskspacewillbeused.
y
虽然Fail2ban安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在/etc/fail2ban/jail.local写配置,所以把它拷贝到那儿。
sudocp/etc/fail2ban/jail.{conf,local}
配置
把ignoreip行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。
你也将希望设置一个destemail,这里我通常输入我自已的email地址,再在后面加上,fail2ban@blocklist.de。
BlockList.de是一个跟踪并且自动报告黑客IP的系统。
/etc/fail2ban/jail.local
[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,它恰恰是做这个的。
#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监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。
[ssh]
enabled=true
port=ssh
filter=sshd
logpath=/var/log/auth.log
maxretry=6
[ssh-ddos]
filter=sshd-ddos
让变化生效
既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。
$sudoservicefail2banrestart
*Restartingauthenticationfailuremonitorfail2ban
...done.
$sudoiptables-L
ChainINPUT(policyDROP)
targetprotoptsourcedestination
fail2ban-ssh-ddostcp--anywhereanywheremultiportdportsssh
fail2ban-sshtcp--anywhereanywheremultiportdportsssh
Chainfail2ban-ssh(1references)
RETURNall--anywhereanywhere
Chainfail2ban-ssh-ddos(1references)
在任何时间,你都可以使用sudoiptables-L来列出你的规则,随后列出所有当前禁止的IP。
此时,Fail2ban正在处理两个恶意的用户。
BannedIPs
DROPall--204.50.33.22anywhere
DROPall--195.128.126.114anywhere
保持最新更新
你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。
保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。