书犹药也,善读可以医愚;久尝其味,便可心如止水

    

Linux下常用的安全优化

1. 禁止系统响应任何从外部/内部来的ping

请求攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态 ,如果能够ping通 某个主机或者IP,那么攻击者就认为此系统处于活动状态,继而进行攻击或破坏。如果没有人能ping通机器并收到响应,那么就可以大大增强服务器的安全性,linux下可以执行如下设置,禁止ping请求:

[root@localhost ~]#echo “1”> /proc/sys/net/ipv4/icmp_echo_ignore_all

默认情况下“icmp_echo_ignore_all”的值为“0”,表示响应ping操作。

可以加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系统重启后自动运行。

2. 限制Shell记录历史命令大小

默认情况下,bash shell会在文件$HOME/.bash_history中存放多达1000条命令记录(根据系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。

这么多的历史命令记录,肯定是不安全的,因此必须限制该文件的大小。

可以编辑/etc/profile文件,修改其中的选项如下:

HISTSIZE=30

表示在文件$HOME/.bash_history中记录最近的30条历史命令。如果将“HISTSIZE”设置为0,则表示不记录历史命令,那么也就不能用键盘的上下键查找历史命令了。

1.png

3.注释掉系统不需要的用户和用户组

注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。

cp /etc/passwd /etc/passwdbak #修改之前先备份
vi /etc/passwd #编辑用户,在前面加上#注释掉此行 
 #adm:x:3:4:adm:/var/adm:/sbin/nologin
 #lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 #sync:x:5:0:sync:/sbin:/bin/sync
 #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 #halt:x:7:0:halt:/sbin:/sbin/halt
 #uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
 #operator:x:11:0:operator:/root:/sbin/nologin
 #games:x:12:100:games:/usr/games:/sbin/nologin
 #gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
 #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin #注释掉ftp匿名账号
 cp /etc/group /etc/groupbak #修改之前先备份
 vi /etc/group #编辑用户组,在前面加上#注释掉此行
 #adm:x:4:root,adm,daemon
 #lp:x:7:daemon,lp
 #uucp:x:14:uucp
 #games:x:20:
 #dip:x:40:

4. 关闭系统不需要的服务

 service acpid stop chkconfig acpid off #停止服务,取消开机启动 #电源进阶设定,常用在 Laptop 上
 service autofs stop chkconfig autofs off #停用自动挂载档桉系统与週边装置
 service bluetooth stop chkconfig bluetooth off #停用Bluetooth蓝芽
 service cpuspeed stop chkconfig cpuspeed off #停用控制CPU速度主要用来省电
 service cups stop chkconfig cups off #停用 Common UNIX Printing System 使系统支援印表机
 service ip6tables stop chkconfig ip6tables off #禁止IPv6

5. 禁止非root用户执行/etc/rc.d/init.d/下的系统命令

chmod -R 700 /etc/rc.d/init.d/*

6. 给下面的文件加上不可更改属性,从而防止非授权用户获得权限

 chattr +i /etc/passwd
 chattr +i /etc/shadow
 chattr +i /etc/group
 chattr +i /etc/gshadow
 chattr +i /etc/services #给系统服务端口列表文件加锁,防止未经许可的删除或添加服务

 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/services #显示文件的属性

注意:执行以上权限修改之后,就无法添加删除用户了。

如果再要添加删除用户,需要先取消上面的设置,等用户添加删除完成之后,再执行上面的操作

chattr -i /etc/passwd #取消权限锁定设置
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
chattr -i /etc/services #取消系统服务端口列表文件加锁

现在可以进行添加删除用户了,操作完之后再锁定目录文件

7. 限制不同文件的权限

 chattr +a .bash_history #避免删除.bash_history或者重定向到/dev/null
 chattr +i .bash_history
 chmod 700 /usr/bin 恢复 chmod 555 /usr/bin
 chmod 700 /bin/ping 恢复 chmod 4755 /bin/ping
 chmod 700 /usr/bin/vim 恢复 chmod 755 /usr/bin/vim
 chmod 700 /bin/netstat 恢复 chmod 755 /bin/netstat
 chmod 700 /usr/bin/tail 恢复 chmod 755 /usr/bin/tail
 chmod 700 /usr/bin/less 恢复 chmod 755 /usr/bin/less
 chmod 700 /usr/bin/head 恢复 chmod 755 /usr/bin/head
 chmod 700 /bin/cat 恢复 chmod 755 /bin/cat
 chmod 700 /bin/uname 恢复 chmod 755 /bin/uname
 chmod 500 /bin/ps 恢复 chmod 755 /bin/ps

8. 禁止使用Ctrl+Alt+Del快捷键重启服务器

 cp /etc/inittab /etc/inittabbak
 vi /etc/inittab #注释掉下面这一行
 #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

9. 使用yum update更新系统时不升级内核,只更新软件包

由于系统与硬件的兼容性问题,有可能升级内核后导致服务器不能正常启动,这是非常可怕的,没有特别的需要,建议不要随意升级内核。

 cp /etc/yum.conf /etc/yum.confbak

1、修改yum的配置文件 vi /etc/yum.conf 在[main]的最后添加 exclude=kernel*

2、直接在yum的命令后面加上如下的参数:

 yum --exclude=kernel* update

10. 关闭Centos自动更新

查看系统版本 cat /etc/issue
查看内核版本 uname -a
chkconfig --list yum-updatesd #显示当前系统状态
yum-updatesd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
service yum-updatesd stop #关闭 开启参数为start
停止 yum-updatesd: [确定]
service yum-updatesd status #查看是否关闭
yum-updatesd 已停
chkconfig --level 35 yum-updatesd off #禁止开启启动(系统模式为3、5)
chkconfig yum-updatesd off #禁止开启启动(所有启动模式全部禁止)
chkconfig --list yum-updatesd #显示当前系统状态
yum-updatesd 0:关闭 1:关闭 2:启用 3:关闭 4:启用 5:关闭 6:关闭

11. 关闭多余的虚拟控制台

我们知道从控制台切换到 X 窗口,一般采用 Alt-F7 ,为什么呢?因为系统默认定义了 6 个虚拟控制台,

所以 X 就成了第7个。实际上,很多人一般不会需要这么多虚拟控制台的,修改/etc/inittab ,注释掉那些你不需要的。

cp /etc/inittab /etc/inittabbak
vi /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

12. 删除MySQL历史记录

用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。

如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。

所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。

另外这两个文件我们也应该不让它记录我们的操作,以防万一。

cp .bash_history .bash_historybak #备份
cp .mysql_history .mysql_historybak
rm .bash_history .mysql_history
ln -s /dev/null .bash_history
ln -s /dev/null .mysql_history

13. 隐藏服务器系统信息

在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。

为了不让这些默认的信息泄露出来,我们要进行下面的操作,让它只显示一个"login:"提示符。

删除/etc/issue和/etc/issue.net这两个文件,或者把这2个文件改名,效果是一样的。

mv /etc/issue /etc/issuebak
mv /etc/issue.net /etc/issue.netbak

14. 优化Linux内核参数

cp /etc/sysctl.conf /etc/sysctl.confbak
vi /etc/sysctl.conf #在文件末尾添加以下内容
net.ipv4.ip_forward = 1 #修改为1
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.netfilter.ip_conntrack_max = 131072
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.ipv4.route.gc_timeout = 20
net.ipv4.ip_conntrack_max = 819200
net.ipv4.ip_local_port_range = 10024 65535
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 94500000 915000000 927000000

/sbin/sysctl -p #使配置立即生效

15. CentOS 系统优化

cp /etc/profile /etc/profilebak2
vi /etc/profile #在文件末尾添加以下内容
ulimit -c unlimited
ulimit -s unlimited
ulimit -SHn 65535
ulimit -S -c 0
export LC_ALL=C
source /etc/profile #使配置立即生效
ulimit -a #显示当前的各种用户进程限制

16. Linux SSH安全

1). 修改ssh的默认端口号22,提高安全系数,降低ssh破解登录的可能性

2). 设置只有wheel组里的用户有su的权限,开启配置

vi /etc/pam.d/su
auth required pam_wheel.so use.uid 去掉前边的#

3).Linux登录超时

用户在线5分钟无操作则超时断开连接,在/etc/profile中添加:

export TMOUT=300
readonly TMOUT

4). 限制超级管理员远程登录,只能通过普通用户切换到root用户

修改/etc/ssh/sshd_config文件,将

PermitRootLogin yes

改为

PermitRootLogin no

,重启sshd服务

5).linux限制登录失败次数并锁定

在/etc/pam.d/login和/etc/pam.d/sshd第二行添加

auth required pam_tally2.so deny=6 unlock_time=180 even_deny_root root_unlock_time=180

登录失败5次锁定180秒,根据需要设置是否包括root

(a)、查看用户登录失败次数

pam_tally2 --user root

(b)、解锁指定用户

pam_tally2 -r -u root

17.Linux增强特殊文件权限

给下面的文件加上不可更改属性,从而防止非授权用户获得权限

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services
chattr +i /etc/pam.d/su
chattr +i /etc/ssh/sshd_config

显示文件的属性

lsattr /etc/passwd /etc/shadow /etc/services /etc/ssh/sshd_config

注意:执行以上 chattr 权限修改之后,就无法添加删除用户了

如果再要添加删除用户,需要先取消上面的设置,等用户添加删除完成之后,再执行上面的操作,例如取消只读权限 chattr –i /etc/passwd。(记得重新设置只读)

18. Linux防止DoS攻击

对系统所有的用户设置资源限制可以防止DoS类型攻击,如最大进程数和内存使用数量等。

可以在/etc/security/limits.conf中添加如下几行:

* soft core 0
* soft nproc 2048
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

core 0 表示禁止创建core文件;nproc 128 把最多的进程数限制到20;nofile 64 表示把一个用户同时打开的最大文件数限制为64;* 表示登录到系统的所有用户,不包括root

然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。

session required pam_limits.so

limits.conf参数的值需要根据具体情况调整。

19. Linux定期做日志安全检查

将日志移动到专用的日志服务器里,这可避免入侵者轻易的改动本地日志。下面是常见linux的默认日志文件及其用处:

/var/log/message – 记录系统日志或当前活动日志。
/var/log/auth.log – 身份认证日志。
/var/log/cron – Crond 日志 (cron 任务).
/var/log/maillog – 邮件服务器日志。
/var/log/secure – 认证日志。
/var/log/wtmp 历史登录、注销、启动、停机日志和,lastb命令可以查看登录失败的用户
/var/run/utmp 当前登录的用户信息日志,w、who命令的信息便来源与此
/var/log/yum.log Yum 日志。

20. Linux安装logwatch

Logwatch是使用 Perl 开发的一个日志分析工具。能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员,可定制需求。

Logwatch的mail功能是借助宿主系统自带的 mail server 发邮件的,所以系统需安装mail server , 如sendmail,postfix,Qmail等。


所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

添加新评论

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif

  关于博主

既见君子,云胡不喜,浅喜如苍狗,深爱似长风

  近期评论

  •  Admin: 已更新,再去试试吧
  •  茉莉花开: 可以更新一下吗?账号都失效了
  •  杰米: 真的可以用,谢谢博主
  •  tzc: 写的好,金总
  •  Admin: 对,将4项全部复制粘贴进去就可以用,如果连不上就可能是这个节点挂了 你尝试换其他的试试,如果都...
  •  明: 是直接复制过去就可以用了吗?
  •  卡杜:
  •  YJLAugus: 博主你好~我是在gayhub上找到你的!是因为那么图书馆预约的python脚本..我不是很懂p...
  •  404not: free-ss.site 这个网访问不了啊。

  分类目录

只有脚踏实地的人,才能够说:路,就在我的脚下。

无论你选择做什么,追求完美的程度决定你成就的高度。

这个世界最脆弱的是生命,身体健康,很重要。

上帝说:你要什么便取什么,但是要付出相当的代价。

现在站在什么地方不重要,重要的是你往什么方向移动。