linux下CentOS的系统安全配置详细教程

本文以CentOS 5.4为例进行说明,对于5.x版本应该都是适用的,其他版本的话主要是命令的路径不同,思路是一致的。

第一步、账户安全管理
1. 修改密码长度

 代码如下 复制代码
#vi /etc/login.defs
PASS_MIN_LEN 18

2. 创建一个普通用户账号并设置密码,这样所有的操作都使用该普通账号进行

 代码如下 复制代码
#useradd ru
#passwd ru

3. Linux默认提供了很多账号,账号越多,系统就越容易受到攻击,所以应该禁止所有默认的被操作系统本身启动的并且不必要的账号。
可以使用 vi /etc/passwd 查看系统账号,使用 vi /etc/group 查看系统的用户组。

 代码如下 复制代码

#userdel adm
#userdel lp
#userdel sync
#userdel shutdown
#userdel halt
#userdel news
#userdel uucp
#userdel operator
#userdel games
#userdel gopher
#userdel ftp
 
#groupdel adm
#groupdel lp
#groupdel news
#groupdel uucp
#groupdel games
#groupdel dip
#groupdel pppusers

4. 使用chattr命令将下面的文件加上不可更改属性,从而防止非授权用户获得权限。

 代码如下 复制代码
#chattr +i /etc/passwd
#chattr +i /etc/shadow
#chattr +i /etc/group
#chattr +i /etc/gshadow

这样操作之后也无法创建账号和修改密码,后面可以使用chattr -i命令恢复之后再进行操作。

5. 禁止Ctrl+Alt+Delete重启命令
修改 /etc/inittab 文件,将下面一行注释掉

 代码如下 复制代码
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

然后重新设置 /etc/rc.d/init.d/ 目录下所有文件的许可权限,仅root账号可以读、写和执行其中的所有脚本文件:

 代码如下 复制代码
#chmod -R 700 /etc/rc.d/init.d/*

6. 限制su命令
限制只有特定用户组的用户才能使用su命令作为root权限,可以编辑 /etc/pam.d/su 文件,修改或增加下面的内容

 代码如下 复制代码
# 这一行默认是有的
auth sufficient pam_rootok.so
# 确认wheel用户组是存在的
auth required pam_wheel.so group=wheel

这样设置之后只有wheel用户组的用户可以使用su切换为root。如果系统用户ru能够su切换为root,可以运行如下命令:

 代码如下 复制代码
#usermod -G10 ru

这里注意,使用 su - 命令可以切换为root用户并将root的环境变量信息进行切换,而 su 命令仅仅是切换角色但还是原来用户的环境变量。

第二步、SSH安全配置
SSH作为系统登录的入口,其安全性好比城楼的城门,重要性不言而喻。
首先查看系统中是否安装了SSH:

#chkconfig --list |grep sshd

如果出现内容则说明安装了sshd服务,否则使用 yum install ssh 命令进行安装。

接下来先备份原来的配置文件

 代码如下 复制代码

#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

然后修改 /etc/ssh/sshd_config 文件:

# 修改SSH的端口,默认为22
Port 5028
# 将#protocol 2,1改为
protocol 2
# 不允许root用户直接登录
PermitRootLogin no
# 不允许空密码登录
PermitEmptyPasswords no
# 不适用DNS
UseDns no

最后使用 service sshd restart 重启SSH服务

第三步、关闭系统中不需要的服务和端口
1. 系统中少开一个服务就少一个危险,以下仅列出需要启动的服务,未列出的服务一律关闭,如果没有下面的服务则直接忽略:

 代码如下 复制代码

#setup
acpid
anacron
cpuspeed
crond
iptables
irqbalance \仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
random
sendmail
sshd
syslog
yum-updatesd

2. 使用iptables防火墙只打开指定的端口
首先创建如下的sh文件:

下载: closeports.sh#!/bin/bash
iptables -F INPUT
iptables -P INPUT DROP

 代码如下 复制代码
# 打开80端口
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 打开SSH端口,这一点很重要,否则无法使用SSH了,注意将5028修改为你的SSH端口
/sbin/iptables -A INPUT -p tcp --dport 5028 -j ACCEPT

然后保存为closeports.sh文件,使用下面的命令执行该文件:

 代码如下 复制代码
#chmod +x closeports.sh
#./closeports.sh

详细的iptables配置信息存放在 /etc/sysconfig/iptables 文件中。

第四步、防止攻击
1. 阻止ping
将 /proc/sys/net/ipv4/icmp_echo_ignore_all 文件的内容修改为1,不过这样的话如果服务器重启之后就会恢复为0了。
可以将下面的内容加入到 /etc/rc.d/rc.local 文件中:

 代码如下 复制代码
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

2. 防止IP欺骗攻击
编辑 /etc/host.conf 文件,在下面增加如下几行:

 代码如下 复制代码
#vi /etc/host.conf
order bind,hosts
multi off
nospoof on

3. 防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。对 /etc/security/limits.conf 文件添加如下内容:

 代码如下 复制代码
# 禁止调试文件
* hard core 0
# 限制内存使用为5MB
* hard rss 5000
# 限制进程数为20
* hard nproc 20

接下来必须编辑 /etc/pam.d/login 文件确认下面一行是否存在,如果不存在的话添加上:

 代码如下 复制代码
session required /lib/security/pam_limits.so

对于DDos攻击可以使用DDoS deflate脚本,详细介绍见下面的参考资料。

第五步、系统配置及性能调优
1. 修改系统默认字符集
如果使用英文安装系统之后,如果系统中有中文会显示乱码,这个时候需要修改系统默认的字符集:

 代码如下 复制代码
#vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
 
#source /etc/sysconfig/i18n

将系统的编码修改为zh_CN.UTF-8,后面一句命令是让修改立即生效。

2. 使用ntp服务更新服务器时间
首先检查系统中是否安装了ntp服务:

#chkconfig --list |grep ntp

如果没有安装的话使用yum进行安装并更新时间

 代码如下 复制代码
#yum install ntp
#ntpdate time.windows.com

也可以将更新命令加入到cron中进行自动更新时间:

 代码如下 复制代码
#crontab -e
* */12 * * * ntpdate time.windows.com
 
#service crond restart

以上操作是每隔12小时自动更新一次时间,可以通过 crontab -l 命令进行查看。

3. 加大服务器文件描述符
当系统服务开启后,访问量变大,会使用到更多的文件描述符。使用 ulimit –n 命令显示当前的文件描述符数(需要使用 su – 命令切换到root账号)。可以使用如下方法加大文件描述符数:

 代码如下 复制代码
#vi /etc/security/limits.conf
*   -   nofile  65536   #在文本的最后一行添加

重新登录之后,可以使用 ulimit –n 命令再次查看文件描述符会看的已经发生了变化。

4. 调整内核参数

 代码如下 复制代码
#cp /etc/sysctl.conf /etc/sysctl.conf.bak
#vi /etc/sysctl.conf
 
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

最后,使用 sysctl –p 命令让上述设置立即生效。

时间: 2024-08-14 17:27:31

linux下CentOS的系统安全配置详细教程的相关文章

Linux下Nagios的安装与配置

Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态,并在状态异常时发出警告音或邮件报警通知运维人员.监控的类型和警报定时器是完全可定制的. Nagios的另一强大功能是它能同时监测主机和服务.例如,它可以同时监测到IP地址和TCP/UDP端口号.为进一步阐述此功能,我们假定有台需要监测的web服务器,Nagios可运用在服务器上基于IP/服务器名运行ping命令的方法检测服务器是否在线,同时当服务器的RTT(往返时延)增加时,Nagios会随时告警.另外,

Linux下源码编译安装配置SVN服务器的步骤分享_Linux

说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

linux下mysql允许外部远程访问配置

  mysql远程访问我们在网上看到最多的就是直接给mysql数据库授权了,但有一些朋友发现按此教程还是无法连接mysql了,下文小编为各位详细介绍一篇在linux下mysql允许外部远程访问配置 设置mysql 的配置文件 /etc/mysql/my.cnf 找到 bind-address =127.0.0.1 将其注释掉;//作用是使得不再只允许本地访问; 重启mysql:/etc/init.d/mysql restart; 进入mysql 数据库 mysql -u root -p mysq

求大神 如何在vmware虚拟机下centos操作系统搭建交叉编译环境 详细一点 急需!!!

问题描述 求大神 如何在vmware虚拟机下centos操作系统搭建交叉编译环境 详细一点 急需!!! centos操作系统下如何安装交叉编译环境 专业基础较差 望解释的详细一下 万分感谢!!! 解决方案 http://www.cnblogs.com/ngnetboy/archive/2013/06/01/3113140.html 解决方案二: VMware虚拟机中安装redhat9.0 操作系统(初学linux,很详细) 解决方案三:

Linux下vsftp的重新安装和配置虚拟用户

Linux下vsftp的重新安装和配置虚拟用户 重新安装和配置虚拟用户 以下都是在root用户下进行的 #tar zxvf vsftpd-2.0.5.tar.gz --解压 #cd vsftpd-2.0.5.tar.gz --解压后进入vsftpd-2.0.5.tar.gz目录 # mkdir /usr/share/empty/ --VSFTPD默认设置需要一个空目录:/usr/share/empty # mkdir /var/ftp/ --如果容许匿名用户(anonymous),那么你将需要一

Linux下ffmpeg安装与开发配置

Linux下ffmpeg安装与开发配置   1. ffmpeg安装 安装环境: ubuntu 12.04 (1)删除已安装的文件,避免冲突 sudo apt-get remove ffmpeg x264 sudo apt-get autoremove (2)安装需要的支持 sudo apt-get install make automake g++ bzip2 python unzip patch subversion ruby build-essential git-core checkins

Linux下如何查看系统启动时间和运行时间

Linux下如何查看系统启动时间和运行时间 1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00 2.查看/proc/uptime文件计算系统启动时间cat /proc/uptime输出: 5113396.94 575949.85第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间 代码: 全选 date -d "$(awk -F. '{print

Linux下安装MySql+Apache2+PHP5.3.1教程

Linux下安装MySql+Apache2+PHP5.3.1教程 请先下载下面三个安装必要的软件   01-04php-5.3.1.tar.gz.html">php-5.3.1.tar.gz安装包下载 01-04httpd-2.2.14.tar.gz 安装包下载 01-04mysql-5.1.42-linux-i686-glibc23.tar.gz.html">mysql-5.1.42-linux-i686-glibc2   一.安装apache2-------------

Linux系统安全配置详细解析

  1.为LILO增加开机口令 在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性.具体设置如下: boot=/dev/hdamap=/boot/mapinstall=/boot/boot.btime-out=60 #等待1分钟promptdefault=linuxpassword=#口令设置image=/boot/vmlinuz-2.2.14-12label=linuxinitrd=/boot/initrd-2.2.14-12.img root=