CentOS Linux是被很多企业广泛应用的OS,本文总结了一些常见的加固方法。

基本原则:

·        最小的权限+最小的服务=最大的安全

·        操作之前先备份;

·        为避免配置错误无法登录主机,请始终保持有一个终端已用root登录并不退出,在另一个终端中做配置修改。这样即使改错,也不至于因系统无法登录导致永远无法登录或恢复配置。

操作项:

一、注释掉系统不需要的用户和用户组

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

  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


perator:/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:

二、关闭系统不需要的服务

关闭不必要的服务

  service acpidstop;chkconfig acpid off    #电源进阶设定,常用在 Laptop 上

  servicecpuspeed stop;chkconfig  cpuspeed  off   #停用控制CPU速度主要用来省电

  service cupsstop;chkconfig cups off    #停用 Common UNIX Printing System 使系统支援印表机

  serviceip6tables stop;chkconfig ip6tables off   #禁止IPv6

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

  chmod -R 700/etc/rc.d/init.d/* (chmod -R 755 /etc/rc.d/init.d/*    #恢复默认设置)

四、修改history命令记录

   cp/etc/profile   /etc/profilebak

   vi/etc/profile

   找到 HISTSIZE=1000 改为 HISTSIZE=50

五、调整文件描述符大小

   echo"ulimit -SHn 65535" >> /etc/rc.local

   /etc/security/limits.conf

   *    soft    nofile          65535 

   *    hard    nofile          65535

   *    soft    stack           unlimited

   *    hard    stack           unlimited

六、同步系统时间

  cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  crontab -e

      0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org |logger -t NTP

      chkconfig --list | grep ntp #看下服务情况

      chkconifg ntpd on

      service ntpd start 

七、内核参数优化

vi /etc/sysctl.conf   #末尾添加如下参数  (备注:内核不够熟,加上注解大家谨慎选择使用)

net.ipv4.tcp_syncookies= 1           #1是开启SYN Cookies,当出现SYN 等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,默认是0关闭 net.ipv4.tcp_tw_reuse = 1             #1是开启重用,允许将TIME_AIT sockets重新用于新的TCP连接,默认是0关闭                                                    

net.ipv4.tcp_tw_recycle= 5            #TCP失败重传次数,默认是15,减 少次数可释放内核资源                                                                            

net.ipv4.tcp_max_syn_backlog= 10240    #进入SYN包的最大请求队列,默认 1024                                                                                        

net.core.netdev_max_backlog=  10240  #允许送到队列的数据包最大设备队 列,默认300                                                                                    

net.core.somaxconn =2048              #listen挂起请求的最大数量,默认 128                                                                                           

net.core.wmem_default =8388608        #发送缓存区大小的缺省值                                                                                                      

net.core.rmem_default =8388608        #接受套接字缓冲区大小的缺省值 (以字节为单位)                                                                                

net.core.rmem_max =16777216           #最大接收缓冲区大小的最大值                                                                                                   

net.core.wmem_max =16777216           #发送缓冲区大小的最大值                                                                                                      

net.ipv4.tcp_synack_retries= 2        #SYN-ACK握手状态重试次数,默认5                                                                                               

net.ipv4.tcp_syn_retries= 2           #向外SYN握手重试次数,默认4                                                                                                  

net.ipv4.tcp_max_orphans= 3276800     #系统中最多有多少个TCP套接字不 被关联到任何一个用户文件句柄上,如果超出这个数字,孤儿连接将立即复位并打印警告信息                

net.ipv4.tcp_mem =94500000 915000000 927000000   

#net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;                                                                                                                    

#net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段;                                                                                                                    

#net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。内存单位是页,可根据 物理内存大小进行调整,如果内存足够大的话,可适当往上调。上述内存单位是页,而不是字节。            

net.ipv4.ip_local_port_range= 20480  65535  #(表示用于向外连接的端口范围。缺省情况下很小:3276861000  注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口! 

八、CentOS 系统优化    

     cp  /etc/profile  /etc/profilebak2

     vi /etc/profile      #在文件末尾添加以下内容

     ulimit -c unlimited

     ulimit -s unlimited

     ulimit -SHn 65535   

     source  /etc/profile    #使配置立即生效

     ulimit -a    #显示当前的各种用户进程限制

九、服务器禁止PING

     cp  /etc/rc.d/rc.local  /etc/rc.d/rc.localbak    

     vi  /etc/rc.d/rc.local        #在文件末尾增加下面这一行

      echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all       

      参数0表示允许   1表示禁止

十、去除系统相关信息    

  事先备份到安全的地方哈:) 

  echo "Welcometo Server" >/etc/issue 

  echo "Welcometo Server" >/etc/issue.NET  

  echo "Welcometo Server" >/etc/redhat-release

十一、SSH服务安全配置

     vi /etc/ssh/sshd_config   

     1. 禁用root远程登录 

  PermitRootLoginno

 PermitEmptyPasswords no #禁止空密码登录 

  2.不要支持闲置会话,并配置 Idle LogOut Timeout 间隔:

  ClientAliveInterval600 # (Set to 600 seconds = 10 minutes)

  ClientAliveCountMax0 

  3.禁用用户的 .rhosts 文件:

  IgnoreRhosts yes

 4.PasswordAuthentication no

  5.配置 iptables,以便在 30 秒内仅允许在端口 2022 上有三个连接尝试:

  Redhat iptablesexample (Update /etc/sysconfig/iptables): 

  -I INPUT -p tcp--dport 2022 -i eth0 -m state --state NEW -m recent --set

  -I INPUT -p tcp--dport 2022 -i eth0 -m state --state NEW -m recent --update --seconds 30--hitcount 3 -j DR

  6.ssh安全技巧之更改 SSH 端口

  建议改成 10000 以上,以降低扫描到端口的机率。

  Port 18439

  7.使用iptables允许特定的主机连接

  作为TCP wrappers的一个代替品,你可以使用iptables来限制SSH访问(但可以同时使用这个两个的),这里有一个简单的例子,指出了如何允许一个特定的主机连接到你的SSH服务:

  iptables -A INPUT-p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT

  保存后重启ssh服务。    

十二、添加普通用户并进行sudo授权管理  

  useradd -d /home/goal user (指定home目录与用户名不同)

  passwd user  #设置密码  

  vi /etc/sudoers #或visudo打开,添加user用户所有权 限  

  root   ALL=(ALL)       ALL

  user   ALL=(ALL)       ALL 

十三、安装安全补丁(经常更新为好)

yum install yum-security

检查安全更新

yum –security check-update

只安装安全更新

yum update –security

检查特定软件有无安全更新

yum list-security software_name

列出更新的详细信息

yum info-security software_name

十四、将 SSH 程序包和需要的库保持为最新:

    yum updateopenssh-server openssh openssh-clients -y 

十五、清空防火墙并设置规则

    iptables -F  #清楚防火墙规则

iptables -L   #查看防火墙规则

iptables -A INPUT -p tcp--dport 80 -j ACCEPT  

iptables -A INPUT -p tcp--dport 22 -j ACCEPT  

iptables -A INPUT -p tcp--dport 53 -j ACCEPT  

iptables -A INPUT -p udp--dport 53 -j ACCEPT  

iptables -A INPUT -p udp--dport 123 -j ACCEPT  

iptables -A INPUT -p icmp-j ACCEPT  

iptables -P INPUT DROP 

/etc/init.d/iptables save

十六、配置防火墙以接受仅来自已知网段的 SSH 连接:(慎用:如果那台主机挂了就惨了,这个真是比较安全的)

Update/etc/sysconfig/iptables (Redhat specific file) to accept connection only 

from 192.168.100.0/24and 209.64.100.5/27, enter:

-A RH-FW-1-INPUT -s192.168.100.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

-A RH-FW-1-INPUT -s209.64.100.5/27 -m state --state NEW -p tcp --dport 22 -j ACCEPT 

十七、配置iptables,以便在 30 秒内仅允许在端口 2022 上有三个连接尝试:(不是每个版本都可以,使用时需确认)

Redhat iptables example(Update /etc/sysconfig/iptables): 

-I INPUT -p tcp --dport2022 -i eth0 -m state --state NEW -m recent --set

-I INPUT -p tcp --dport2022 -i eth0 -m state --state NEW -m recent --update --seconds 30--hitcount 3 -j DR

十八、锁定关键文件系统

chattr +i /etc/passwd chattr +i /etc/inittab chattr +i /etc/group chattr+i /etc/shadow chattr +i /etc/gshadow


十年磨一剑,厚积薄发!

1.网站具有丰富的数据库实战方案,系统运维方案,高价值精品视频教程等;

2.注册会员可以发布自己的文章资源,赚取稿费!详情请访问并关注PC端:  https://dbs-service.cn/

会员QQ群:532272497    

手机/微信:13926108245

按左上角首页图标返回获得更多内容!

点赞(70) 打赏

评论列表 共有 0 条评论

暂无评论

企业微信号

微信扫一扫咨询

微信公众号

关注我们,定期优惠

立即
投稿
发表
评论
返回
顶部
展开