(本文刊发于《网络安全和信息化》2019年第5期) CentOS是Community Enterprise Operating System(社区企业操作系统)的缩写,它是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本,其最新版本为 CentOS 7.6。CentOS 7在内核层面支持Docker容器技术,可以提高Docker稳定性和可靠性,也正是因此CentOS 7成了服务器系统的最佳首选。
我们都知道配置任何服务器,都必须把不用的服务关闭、把系统权限设置到最小化,这样才能保证服务器最大的安全,CentOS 7服务器安全设置也是如此。
一、 修改ssh默认的22端口
用以下命令修改防火墙设置:
# firewall-cmd --zone=public --add-port=2019/tcp –permanent
# semanage port -a -t ssh_port_t -p tcp 2019
# semanage port -l | grep ssh
再修改sshd_config
# vi /etc/ssh/sshd_config
在文件中加入一行:
Port=2019 #即把默认的22端口改成2019
保存文件后,执行下面命令:
# systemctl restart sshd
# systemctl restart sshd.service
# systemctl restart firewalld.service
二、 修改root用户名
以root身份登录终端,执行以下命令:
# cp /etc/passwd /etc/passwdbak #修改之前先备份
# cp /etc/shadow /etc/shadowbak
# cp /etc/group /etc/groupbak
# vi /etc/passwd # 修改第1行第1个root为新的用户名
# vi /etc/shadow # 修改第1行第1个root为新的用户名
# vi /etc/group # 在这个文件中还可以修改用户组名
三、 限制用户 SSH 登录
1.只允许指定用户进行登录(白名单):
在/etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项,(配置完成需要重启 SSHD 服务)格式如下:
AllowUsers qhdedu test@192.168.1.1
#允许qhdedu和从192.168.1.1登录的test帐户通过SSH登录系统。
2.只拒绝指定用户进行登录(黑名单):
在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:
DenyUsers qhdedua qhdedub #拒绝CentOs系统账户qhdedua、qhdedub通过SSH登录系统
四、 限制 IP SSH 登录
除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,CentOs 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件来进行控制,hosts.allow许可大于hosts.deny,可以限制或者允许某个或者某段IP地址远程SSH登录服务器。方法比较简单,具体如下:
# vi /etc/hosts.allow
sshd: 192.168.1.10:allow #允许192.168.1.10这个IP SSH登录
sshd:192.168.2.:allow #允许192.168.2 这个IP段 SSH登录
sshd:all:deny #全部禁止
如果写入:sshd:ALL #允许全部的 ssh 登录
五、 设置系统口令策略
# vi/etc/login.defs
PASS_MAX_DAYS 99999 #密码最大有效天数
PASS_MIN_DAYS 0 #两次修改密码的最小间隔天数
PASS_MIN_LEN 12 #密码最小长度为12位,对于root无效
PASS_WARN_AGE 7 #密码过期前多少天开始提示
六、 防止IP SPOOF(欺骗):
# vi/etc/host.conf
添加:nospoof on 不允许服务器对IP地址进行欺骗。
七、 注释掉系统不需要的用户和用户组
# 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:FTPUser:/var/ftp:/sbin/nologin #注释掉ftp匿名账号
# vi /etc/group #编辑用户组,在前面加上#注释掉此行,建议关闭的用户组有:
# adm:x:4:root,adm,daemon
# lp:x:7:daemon,lp
# uucp:x:14:uucp
# games:x:20:
# dip:x:40:
八 根据实际需要,关闭系统一些不需要的服务
# serviceacpid stop chkconfig acpid off #停止服务,取消开机启动电源进阶设定
# serviceautofs stop chkconfig autofs off #停用自动挂载档按系统与周边装置
# servicebluetooth stop chkconfig bluetooth off #停用Bluetooth蓝牙
# servicecpuspeed stop chkconfig cpuspeed off #停用控制CPU速度主要用来省电
# servicecups stop chkconfig cups off #停用Common UNIX Printing System 使系统支援印表机
# serviceip6tables stop chkconfig ip6tablesoff #禁止IPv6
若想恢复某个服务,可以使用service servicename start命令,如启用蓝牙服务:
#service Bluetooth start chkconfig Bluetooth on
九 修改别名文件
# vi/etc/aliases #建议注释掉不要的
# games:root
# ingres:root
# system:root
# toor:root
# uucp:root
# manager:root
# dumper:root
# operator:root
# decode:root
# root:marc
修改后执行/usr/bin/newaliases
十、 禁止使用Ctrl+Alt+Del快捷键重启服务器
# cp /usr/lib/systemd/system/ctrl-alt-del.target /usr/lib/systemd/system/ctrl-alt-del.target.bak #修改前备份
直接编辑/usr/lib/systemd/system/ctrl-alt-del.targe这个文件,按以往设置关闭这个功能的方式去操作:全部注释掉文件中的内容即可。但是由于此文件是/usr/lib/systemd/system/reboot.target的软链接文件,这样的话会使reboot命令失效,因此要想解决这个问题只需要删除文件:/usr/lib/systemd/system/ctrl-alt-del.target即可,同时执行#init q重新加载配置文件使配置生效,此时Ctrl+Alt+Del失效,同时reboot也能用,恢复ctrl+ALt+Del只需将reboot.target文件软链接成ctrl-alt-del.target即可。即
# ln -s /usr/lib/systemd/system/reboot.target/usr/lib/systemd/system/ctrl-alt-del.target
十一、 服务器禁止ping
# cp /etc/rc.d/rc.local /etc/rc.d/rc.localbak #修改前备份
# vi /etc/rc.d/rc.local #修改文件,在文件末尾增加下面这一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #参数0表示允许,1表示禁止
十二、 修改history命令记录
# cp/etc/profile /etc/profilebak #修改前备份
# vi/etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=50
十三、 隐藏服务器系统信息
在缺省情况下,当你登陆到CentOS系统,它会告诉你该CentOS发行版的名称、版本、内核版本、服务器的名称。
为了不让这些默认的信息泄露出来,我们要进行下面的操作,让它只显示一个"login:"提示符。
删除/etc/issue和/etc/issue.net这两个文件,或者把这2个文件改名,效果是一样的。
# mv /etc/issue /etc/issuebak
# mv /etc/issue.net /etc/issue.netbak
十四、 禁止非root用户执行/etc/rc.d/init.d/下的系统命令
# chmod-R 700 /etc/rc.d/init.d/*
# chmod-R 777 /etc/rc.d/init.d/* #恢复默认设置
十五、 给下面的文件加上不可更改属性,从而防止非授权用户获得权限
# 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 #取消系统服务端口列表文件加锁
现在可以进行添加删除用户了,操作完之后再锁定目录文件
十六、 限制不同文件的权限
# chattr+a .bash_history #避免删除.bash_history或者重定向到/dev/null
# chattr+i .bash_history
# chmod700 /usr/bin #对应恢复语句 chmod 555 /usr/bin
# chmod700 /bin/ping #对应恢复语句 chmod 4755 /bin/ping
# chmod700 /usr/bin/vim #对应恢复语句 chmod 755 /usr/bin/vim
# chmod700 /bin/netstat #对应恢复语句 chmod 755 /bin/netstat
# chmod700 /usr/bin/tail #对应恢复语句 chmod 755 /usr/bin/tail
# chmod700 /usr/bin/less #对应恢复语句 chmod 755 /usr/bin/less
# chmod700 /usr/bin/head #对应恢复语句 chmod 755 /usr/bin/head
# chmod700 /bin/cat #对应恢复语句 chmod 755 /bin/cat
# chmod700 /bin/uname #对应恢复语句chmod 755 /bin/uname
# chmod500 /bin/ps #对应恢复语句 chmod 755 /bin/ps
(本文刊发于《网络安全和信息化》2019年第5期)