Linux系统安全防护大全.pdf
《Linux系统安全防护大全.pdf》由会员分享,可在线阅读,更多相关《Linux系统安全防护大全.pdf(8页珍藏版)》请在冰点文库上搜索。
Linux安全文档关闭sendmail服务:
rootsample#/etc/rc.d/init.d/sendmailstop关闭sendmail服务Shuttingdownsendmail:
OKShuttingdownsm-client:
OKrootsample#chkconfigsendmailoff关闭sendmail自启动rootsample#chkconfig-listsendmail确认sendmail自启动已被关闭(都为off就OK)sendmail0:
off1:
off2:
off3:
off4:
off5:
off6:
off一、帐号与口令帐号与口令1删除系统臃肿多余的账号:
userdellp、userdelsync、userdelshutdown、userdelhalt、userdelnews、userdeluucp、userdeloperator、userdelgames、userdelgopher、userdelftp(如果你不允许匿名FTP,就删掉这个用户帐号)groupdellp、groupdelnews、groupdeluucp、groupdelgames、groupdeldip、groupdelpppusers。
2口令的安全性:
口令的长度最少在10位或以上,由数字,大小写字母和特殊字符组合而成,口令的字符组合要具有无规律性,不要用电话,生日,名字等有特殊意义的容易猜测的数字或字母。
3Linux中的帐号和口令是依据/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow这四个文档的,所以需要更改其权限提高安全性:
chattr+i/etc/passwdchattr+i/etc/shadowchattr+i/etc/groupchattr+i/etc/gshadow如果还原,把+i改成-i,再执行一下上面四条命令。
注:
i属性:
不允许对这个文件进行修改,删除或重命名,设定连结也无法写入或新增数据!
只有root才能设定这个属性二、二、SSH的安全设定的安全设定11设定设定sshdsshd服务器服务器vi/etc/ssh/sshd_configPort10000#更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降。
防火墙要开放配置好的端口号。
Protocol2#禁用版本1协议,因为其设计缺陷,很容易使密码被黑掉。
PermitRootLoginno#尝试任何情况先都不允许Root登录.生效后我们就不能直接以root的方式登录了,我们需要用一个普通的帐号来登录,然后用su来切换到root帐号,注意su和su-是有一点小小区别的。
关键在于环境变量的不同,su-的环境变量更全面。
PermitEmptyPasswordsno禁止空密码登陆。
UseDNSno#SSH的连接登录延时一般来说是因为sshd默认打开了反向DNS解析的问题。
servicesshdrestart使得SSH生效。
2.2.限制限制sshssh使用者名单,只允许某些用户帐号使用使用者名单,只允许某些用户帐号使用sshssh连接连接:
#vi/etc/pam.d/sshd增加一条命令authrequiredpam_listfile.soitem=usersense=allowfile=/etc/ssh/allow_listonerr=failvi/etc/ssh/allow_list添加您想允许使用ssh登入主机的帐号,一行一个帐号。
或者:
echooracle/etc/ssh/allow_list3.3.使用使用DenyHostsDenyHosts阻止阻止SSHSSH暴力破解暴力破解(同时可以保护(同时可以保护FTPFTP)DenyHosts是Python语言写的一个程序,它会分析SSHD的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽IP的功能。
以下是安装记录:
#tar-zxvfDenyHosts-2.6.tar.gz#cdDenyHosts-2.6#pythonsetup.pyinstall默认是安装到/usr/share/denyhosts/目录的。
#cd/usr/share/denyhosts/#cpdenyhosts.cfg-distdenyhosts.cfg#cpdaemon-control-distdaemon-control#vidaemon-controlDENYHOSTS_BIN=/usr/bin/denyhosts.pyDENYHOSTS_LOCK=/var/lock/subsys/denyhostsDENYHOSTS_CFG=/usr/share/denyhosts/denyhosts.cfg#chownrootdaemon-control#chmod700daemon-control完了之后执行daemon-contronstart就可以了。
#./daemon-controlstart如果要使DenyHosts每次重起后自动启动还需做如下设置:
#cd/etc/init.d#ln-s/usr/share/denyhosts/daemon-controldenyhosts#chkconfig-adddenyhosts#chkconfig-level2345denyhostson或者修改/etc/rc.local文件:
#vi/etc/rc.local加入下面这条命令/usr/share/denyhosts/daemon-controlstartDenyHosts配置文件说明:
#videnyhosts.cfg这里根据自己需要进行相应的配置SECURE_LOG=/var/log/secure#sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不同。
HOSTS_DENY=/etc/hosts.deny#控制用户登陆的文件PURGE_DENY=5m#过多久后清除已经禁止的BLOCK_SERVICE=sshdBLOCK_SERVICE=vsftpd(如果启用FTP服务,务必加上这一行)#禁止的服务名DENY_THRESHOLD_INVALID=1#允许无效用户失败的次数DENY_THRESHOLD_VALID=10#允许普通用户登陆失败的次数DENY_THRESHOLD_ROOT=5#允许root登陆失败的次数HOSTNAME_LOOKUP=NO#是否做域名反解DAEMON_LOG=/var/log/denyhosts#DenyHosts的日志文件三三、网络安全选项网络安全选项的设定的设定编辑/etc/sysctl.conf档案,并加入下面几行,#Enableignoringbroadcastsrequest(让系统对广播没有反应)net.ipv4.icmp_echo_ignore_broadcasts=1#DisablesIPsourcerouting(取消IPsourcerouting)net.ipv4.conf.all.accept_source_route=0#EnableTCPSYNCookieProtection(开启TCPSYNCookie保护)net.ipv4.tcp_syncookies=1#DisableICMPRedirectAcceptance(取消ICMP接受Redirect)net.ipv4.conf.all.accept_redirects=0#EnablebaderrormessageProtection(开启错误讯息保护)net.ipv4.icmp_ignore_bogus_error_responses=1#EnableIPspoofingprotection,turnonSourceAddressVerification(开启IP欺骗保护)net.ipv4.conf.all.rp_filter=1#LogSpoofedPackets,SourceRoutedPackets,RedirectPackets(记录SpoofedPackets,SourceRoutedPackets,RedirectPackets)net.ipv4.conf.all.log_martians=1最后重新启动networkrootdeep/#/etc/rc.d/init.d/networkrestart或者sysctlp生效echo1/proc/sys/net/ipv4/icmp_echo_ignore_all四、防火墙的设定四、防火墙的设定根据不同的服务器使用已定义好的相应的防火墙规则。
假设防火墙的文件为:
firewall.sh用法:
shfirewall.sh如果想开机即启动防火墙,则可以在/etc/rc.d/rc.local加上一句:
shfirewall.sh以下是iptables的简单说明:
查看规则iptables-L-n参数说明:
-L:
列出目前的table的规则-n:
不进行IP与HOSTNAME的转换,屏幕显示讯息的速度会快很多清除规则iptables-F参数说明:
-F:
清除所有的已订定的规则;定义政策当封包不在设定的规则之内时,则该封包的通过与否,以Policy的设定为准语法:
iptables-PINPUT,OUTPUT,FORWARDACCEPT,DROP参数说明:
-P:
定义政策(Policy)。
注意,这个P为大写啊!
INPUT:
封包为输入主机的方向;OUTPUT:
封包为输出主机的方向;FORWARD:
封包为不进入主机而向外再传输出去的方向;范例:
roottestroot#/sbin/iptables-PINPUTDROProottestroot#/sbin/iptables-POUTPUTACCEPTroottestroot#/sbin/iptables-PFORWARDACCEPT增加与插入规则范例:
1.只要通过eth0进入本机的21端口的封包就丢弃iptablesAINPUTieth0ptcpdport21jDROP2.来自192.168.1.25的封包都丢弃iptablesAINPUTieth0ptcps192.168.1.25jDROP3.来自192.168.0.24这个IP的封包,想要到本机的137,138,139端口的都接受iptablesAINPUTieth0ptcps192.168.1.25dport137:
139jACCEPT参数说明:
-A:
新增加一条规则,该规则增加在最后面,例如原本已经有四条规则,使用-A就可以加上第五条规则!
-I:
插入一条规则,如果没有设定规则顺序,预设是插入变成第一条规则,例如原本有四条规则,使用-I则该规则变成第一条,而原本四条变成25-i:
设定封包进入的网络卡接口-p:
请注意,这是小写!
封包的协议!
tcp:
封包为TCP协定的封包;upd:
封包为UDP协定的封包;icmp:
封包为ICMP协定、all:
表示为所有的封包!
-s:
来源封包的IP或者是Network(网域);-sport:
来源封包的port号码,也可以使用port1:
port2如21:
23同时通过21,22,23的意思-d:
目标主机的IP或者是Network(网域);-dport:
目标主机的port号码;-j:
动作,可以接底下的动作;ACCEPT:
接受该封包DROP:
丢弃封包五、五、系统文件和日志的安全系统文件和日志的安全1更改各种服务启动脚本目录的访问权限:
chmod-R700/etc/rc.d/更改系统文件的访问权限:
chmod700/etc/serviceschmod700/etc/xinetd.confchmod700/etc/inittab2更改日志的访访权限:
chmod700/var/log/secure*chmod700/var/log/messages*六、系统登陆的设定六、系统登陆的设定1每次登陆退出时,清除所用过命令的历史纪:
在.bash_logout文档中增加一行:
historyc2设置系统全局环境变量文件/etc/profile增加一行TMOUT=600单位为秒,表示如果在600秒(10分钟)之内没有做任何的操作,登陆终端将自动注销。
3资源限制编辑/etc/security/limits.conf加入*hardcore0*hardrss5000*hardnproc20同时必须编辑/etc/pam.d/login文件加/检查下面这一行的存在。
sessionrequired/lib/security/pam_limits.so上面的命令分别是禁止创建core文件,其他用户(除root)最多使用5M内存,限制最多进程数为204只开启一个登录终端,修改/etc/inittab文件,注释下面的这几行:
#ca:
ctrlaltdel:
/sbin/shutdown-t3-rnow#2:
2345:
respawn:
/sbin/mingettytty2#3:
2345:
respawn:
/sbin/mingettytty3#4:
2345:
respawn:
/sbin/mingettytty4#5:
2345:
respawn:
/sbin/mingettytty5#6:
2345:
respawn:
/sbin/mingettytty6然后用initq生效,使服务器热重启失效。
七、七、vsftp配置配置vsftpd的配置文件有三个,分别是:
/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.ftpusers/etc/vsftpd/vsftpd.user_list其中,/etc/vsftpd.conf是主配置文件。
/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。
/etc/vsftpd.user_list中指定的用户默认情况下(即在/etc/vsftpd.conf中设置了userlist_deny=YES)不能访问FTP服务器,当在/etc/vsftpd.conf中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器。
请在/etc/vsftpd.conf中设置userlist_deny=NO,通过/etc/vsftpd.user_list严格控制FTP用户。
配置基本的性能和安全选项/禁止匿名登陆anonymous_enable=NO(默认为YES)/设置空闲的用户会话的中断时间例如下面的配置:
idle_session_timeout=600将在用户会话空闲10分钟后被中断。
/设置空闲的数据连接的的中断时间例如下面的配置:
data_connection_timeout=120将在数据连接空闲2分钟后被中断。
/设置客户端空闲时的自动中断和激活连接的时间例如下面的配置:
accept_timeout=60connect_timeout=60将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接/设置最大传输速率限制例如下面的配置:
(传输速率可根据实际情况自行修改)local_max_rate=50000anon_max_rate=30000将使本地用户的最大传输速率为50kbytes/sec,匿名用户的传输速率为30kbytes/sec。
/设置客户端连接时的端口范围例如下面的配置:
pasv_min_port=50000pasv_max_port=60000将使客户端连接时的端口范围在50000和60000之间。
这提高了系统的安全性1截短历史命令/.bash_history文件,这个文件中保存着以前使用的命令列表。
截短这个文件可以使您以前执行过的命令暴露在别人眼光下的机会减小.(在您的命令中很可能包括象密码信息这样的保密信息)。
通过编辑/etc/profile的下面两项可以做到这一点:
HISTFILESIZE=20HISTSIZE=202通过下面的措施可以防止任何人都可以su为root:
编辑su文件(vi/etc/pam.d/su)在文件的头部加入下面两行:
authsufficient/lib/security/pam_rootok.sodebugauthrequired/lib/security/pam_wheel.sogroup=wheel3使Control-Alt-Delete软关机无效编辑inittab文件(vi/etc/inittab)把这一行:
ca:
ctrlaltdel:
/sbin/shutdown-t3-rnow改为:
#ca:
ctrlaltdel:
/sbin/shutdown-t3-rnow用下面的命令使改变生效:
rootsound#/sbin/initq