引言:

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

所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全。
下面是CentOS服务器安全设置,供大家参考。 一、注释掉系统不需要的用户和用户组
注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。
cp /etc/passwd /etc/passwdbak #修改之前先备份
vi /etc/passwd #编辑用户,在前面加上#注释掉此行
#adm:x:::adm:/var/adm:/sbin/nologin
#lp:x:::lp:/var/spool/lpd:/sbin/nologin
#sync:x:::sync:/sbin:/bin/sync
#shutdown:x:::shutdown:/sbin:/sbin/shutdown
#halt:x:::halt:/sbin:/sbin/halt
#uucp:x:::uucp:/var/spool/uucp:/sbin/nologin
#operator:x:::operator:/root:/sbin/nologin
#games:x:::games:/usr/games:/sbin/nologin
#gopher:x:::gopher:/var/gopher:/sbin/nologin
#ftp:x:::FTP User:/var/ftp:/sbin/nologin #注释掉ftp匿名账号
cp /etc/group /etc/groupbak #修改之前先备份
vi /etc/group #编辑用户组,在前面加上#注释掉此行
#adm:x::root,adm,daemon
#lp:x::daemon,lp
#uucp:x::uucp
#games:x::
#dip:x:: #news:x:::news:/etc/news: 二、关闭系统不需要的服务
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
####################################################################################################
如果要恢复某一个服务,可以执行下面操作
service acpid start chkconfig acpid on
三、禁止非root用户执行/etc/rc.d/init.d/下的系统命令
chmod -R /etc/rc.d/init.d/*
chmod -R 777 /etc/rc.d/init.d/* #恢复默认设置
系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
四、给下面的文件加上不可更改属性,从而防止非授权用户获得权限
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
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
六、禁止使用Ctrl+Alt+Del快捷键重启服务器
cp /etc/inittab /etc/inittabbak
vi /etc/inittab #注释掉下面这一行
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
七、使用yum update更新系统时不升级内核,只更新软件包 由于系统与硬件的兼容性问题,有可能升级内核后导致服务器不能正常启动,这是非常可怕的,没有特别的需要,建议不要随意升级内核。
cp /etc/yum.conf /etc/yum.confbak
1、修改yum的配置文件 vi /etc/yum.conf 在[main]的最后添加 exclude=kernel*
2、直接在yum的命令后面加上如下的参数:
yum --exclude=kernel* update
查看系统版本 cat /etc/issue
查看内核版本 uname -a
八、关闭Centos自动更新
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:关闭
九、关闭多余的虚拟控制台
我们知道从控制台切换到 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
十、删除MySQL历史记录 用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。
如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。
所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。
另外这两个文件我们也应该不让它记录我们的操作,以防万一。
cd
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
十一、修改history命令记录
cp /etc/profile /etc/profilebak
vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=50
十二、隐藏服务器系统信息
在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。
为了不让这些默认的信息泄露出来,我们要进行下面的操作,让它只显示一个"login:"提示符。
删除/etc/issue和/etc/issue.net这两个文件,或者把这2个文件改名,效果是一样的。
mv /etc/issue /etc/issuebak
mv /etc/issue.net /etc/issue.netbak
十三、优化Linux内核参数
cp /etc/sysctl.conf /etc/sysctl.confbak
vi /etc/sysctl.conf #在文件末尾添加以下内容
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 10024 65535 #(表示用于向外连接的端口范围。缺省情况下很小:32768到61000 注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口! )
/sbin/sysctl -p #使配置立即生效
系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
十四、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 #在文件末尾增加下面这一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all  
参数0表示允许 1表示禁止 十六、防止攻击 1.阻止ping 如果没人能ping通您的系统,安全性自然增加了。为此,可以在/etc/rc.d/rc.local文件中增加如下一行: #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 2.防止IP欺骗 编辑host.conf文件并增加如下几行来防止IP欺骗攻击。
order bind,hosts
multi off
nospoof on 3.防止DoS攻击 对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行: * hard core 0
* hard rss 5000 #( 本行或许没用,man limits.conf 显示 maximum resident set size (KB) (Ignored in Linux 2.4.30 and higher)
* hard nproc 50 然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。 session required /lib/security/pam_limits.so 上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。 经过以上的设置,您的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。 十七、其它一些安全操作 1自动注销帐号的登录,在 Linux 系统中 root 账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销 root 账 户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中 “TMOUT” 参数,可以实现此功能。 TMOUT 按秒计算。编辑你的 profile 文件( vi /etc/profile ) , 在 "HISTSIZE=" 后面加入下面这行: TMOUT = 300 300 ,表示 300 秒,也就是表示 5 分钟。这样,如果系统中登陆的用户在 5 分钟内都没有动作,那么系统会自动注销这 个账户。 . 限制 Shell 命令记录大小 默认情况下, bash shell 会在文件 $HOME/.bash_history 中存放多达 500 条命令记录 ( 根据具体的系统不同,默认记 录条数不同 ) 。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 您可以编辑 /etc/profile 文件,修改其中的选项如下 : HISTFILESIZE=30 或 HISTSIZE=30 #vi /etc/profile HISTSIZE=30 . 注销时删除命令记录 编辑 /etc/skel/.bash_logout 文件,增加如下行 : rm -f $HOME/.bash_history 这样,系统中的所有用户在注销时都会删除其命令记录。 如果只需要针对某个特定用户, 如 root 用户进行设置, 则可只在该用户的主目录下修改 /$HOME/.bash_history 文件, 增加相同的一行即可。 . 用下面的命令加需要的用户组和用户帐号 [root@c1gstudio]# groupadd 例如:增加 website 用户组, groupadd website 然后调用 vigr 命令查看已添加的用户组 用下面的命令加需要的用户帐号 [root@c1gstudio]# useradd username – g website // 添加用户到 website 组(作为 webserver 的普通管理员,而非 root 管理员) 然后调用 vipw 命令查看已添加的用户 用下面的命令改变用户口令(至少输入 8 位字母和数字组合的密码,并将密码记录于本地机的专门文档中,以防遗忘) [root@c1gstudio]# passwd username . 阻止任何人 su 作为 root 如果你不想任何人能够 su 作为 root, 你能编辑 /etc/pam .d/su 加下面的行: #vi /etc/pam.d/su auth sufficient /lib/security/$ISA/pam_rootok.so debug auth required /lib/security/$ISA/pam_wheel.so group=website 意味着仅仅 website 组的用户可以 su 作为 root. . 修改 ssh 服务的 root 登录权限 修改 ssh 服务配置文件,使的 ssh 服务不允许直接使用 root 用户来登录,这样减少系统被恶意登录攻击的机会。 #vi /etc/ssh/sshd_config PermitRootLogin yes 将这行前的#去掉后,修改为: PermitRootLogin no 修改 ssh 服务的 sshd 端口 ssh 默认会监听在 22 端口,你可以修改至 6022 端口以避过常规的扫描。 注意:修改端口错误可能会导致你下次连不到服务器,可以先同时开着 22 和 6022 两个端口,然后再关掉 22 端口; 重启 sshd 不会弹掉你当前的连接,可以另外开一个客户端来测试服务 ; #vi /etc/ssh/sshd_config # 增加修改 #Port 22 # 关闭 22 端口 Port 6022 # 增加 6022 端口 # 重启 sshd 服务 service sshd restart 检查一下 sshd 的监听端口对不对 netstat -lnp|grep ssh #iptables 开放 sshd 的 6022 端口 vi /etc/sysconfig/iptables # 如果使用 redhat 默认规则则增加 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6022 -j ACCEPT # 或 iptables -A INPUT -p tcp --dport 6022 -j ACCEPT iptables -A OUTPUT -p udp --sport 6022 -j ACCEPT 重启 iptables 服务 service iptables restart # 测试两个端口是否都能连上,连上后再将 22 端口删除 详细参考: Linux 操作系统下 SSH 默认 22 端口修改方法 至此,CentOS Linux服务器安全设置基本完成,以上设置经过笔者实战测试(CentOS-5.5-x86)完全可用,更多的安全设置以及服务器优化,还请大家自行测试。
You might like
×
Ever Wondered How Movie Sex Scene Actually Looks On The Set? Feeling Awkward?! | BuzzWok.com | The Best Buzzing Stories Frying In One PlaceEver Wondered How Movie Sex Scene Actually Looks On The Set? Feeling Awkward?!...
Buzzwok
How To Find Long Lasting LoveHow To Find Long Lasting Love
The Daily Western
Shop the latest Trending Products in the Market now!
Alibaba.com
The Best 15 Christmas Presents For Children Under Ten. It’s Gonna Be A Beautiful Christmas.The Best 15 Christmas Presents For Children Under Ten. It’s Gonna...
Buzzwok
15 Of The Most Stunning Natural Waterfalls And Pools. Heaven On Earth.15 Of The Most Stunning Natural Waterfalls And Pools. Heaven On Earth.
The Daily Western
Shop the Latest Fashion Collections!
Alibaba.com
Terrifying Rally Car Crash Almost Crushes Spectators Who Were Unharmed By Miracle! | BuzzWok.com | The Best Buzzing Stories Frying In One PlaceTerrifying Rally Car Crash Almost Crushes Spectators Who Were Unharmed...
Buzzwok
The Healthy Eating Trends Of 2015The Healthy Eating Trends Of 2015
The Daily Western
Here Are 60 Facts That Will Convince You Why The World Is Awesome!Here Are 60 Facts That Will Convince You Why The World Is Awesome!
Buzzwok
Special offer for you
Sponsored
Brought By unisales 上一篇VPS服务器下的centos网卡配置详解……
下一篇ssh远程登录命令简单实例 顶
2 踩
0 主题推荐
服务器安全 linux linux内核 系统管理员 操作系统 猜你在找
linux一句话精彩问答
Linux一句话精彩问答转载来自wwwchinaunixnet
Linux一句话精彩问答
linux一句话精彩问答
学习中LINUX中常见问题
linux一句话精彩问答05年新版
一句话Linux备查
Linux 知识宝典
Linux一句话精彩问答转
Linux一句话精彩问答 准备好了么? 跳吧 !更多职位尽在 CSDN JOB
配置管理员
广州市玄武科技有限公司
|
6-12K/月
我要跳槽
SOFTWARE CONFIGURATION MANAGEMENT ENGINEER配置管理工程师
金雅拓
|
10-15K/月
我要跳槽
配置管理工程师
广州市巴图鲁信息科技有限公司
|
6-10K/月
我要跳槽
运维工程师(网站发布配置)
广州酷旅旅行社
|
5-10K/月
我要跳槽 查看评论 暂无评论 您还没有登录,请[登录]或[注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
核心技术类目
全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap 个人资料 [访问我的空间]
摘取天上星
4 2
访问:367568次
积分:6327
等级:
排名:第1361名
原创:147篇
转载:131篇
译文:96篇
评论:60条 文章搜索
 
 
 

linux服务器安全配置攻略的更多相关文章

  1. (转)linux服务器安全配置攻略

    引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...

  2. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  3. Apache服务器故障排除攻略

    Apache服务器故障排除攻略 应用服务器Apache浏览器配置管理网络应用  随着网络技术的普及.应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一.原有的客户端/服务器模式正 ...

  4. 在Linux服务器上配置phpMyAdmin

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  5. DNS 和 IPv6 配置攻略

    Windows 2003 DNS配置攻略 http://lgzeng2360.blog.51cto.com/275998/161908/ http://ask.zol.com.cn/q/21861.h ...

  6. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  7. 本地Linux服务器上配置Git

    当我们需要拉取远程服务器代码到本地服务器时,我们首先要确定已经配置了正确的Git账号,可以从~/.gitconfig文件(为隐藏文件,需要使用ls -a查看),以及~/.ssh下的id_rsa.pub ...

  8. [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  9. linux服务器上配置多个svn仓库

    linux服务器上配置多个svn仓库 1.在指定目录建立仓库保存总目录,本文示例目录设定为:/usr/local/svn/svnrepos # mkdir -p /usr/local/svn/svnr ...

随机推荐

  1. 在windows下使用Mingw搭建模拟Linux

    1.到官网下载最新版Mingw 2.点击安装,最好选择默认路径,如果不是的话,路径中一定不能有空格. 3.选择安装,mingw-developer-toolkit.mingw32-base.mingw ...

  2. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_05.mybatis环境搭建-前期准备

    视频中右侧没有勾选 直接finish 用下面的sql里面的一些表来实现今天的功能 只需要用到里面的user表. 这是之前已经建好的数据库 把表都删除掉,用sql语句去创建表和表内的记录,最终的结果: ...

  3. web端测试的测试点和注意事项

    工作中接触了不同类型的web端系统,内容不同,需求不同,测试关注点也存在些许的不同,但是总体测试思路和关注的点都类似,下面是总结自己所接触的web端系统测试的一些测试点,不尽全面,以后接触新的业务系统 ...

  4. is_selected()检查是否选中该元素

    is_selected()检查是否选中该元素,一般针对单选框,复选框,返回的结果是bool 值, 以百度登录页面为案例,来验证"下次自动登录"是否勾选,默认是勾选的,返回的结 果应 ...

  5. 【FICO系列】SAP FICO总账余额相关的事务码

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP FICO总账余额相关的事 ...

  6. Java中关于Date等日期类的简单使用

    Date Date类不常用,很多方法被废弃了,常用它的两个构造方法来new一个Date对象. Date d1 = new Date(); //不传任何参数,代表当前时间点 System.out.pri ...

  7. Tensorflow模型保存与载入

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = in ...

  8. pkg-config too old的解决方法

    linux下安装一些库时,会提示pkg-config too old,可以尝试下面的命令 apt-get install pkg-config

  9. 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点

    [Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...

  10. Java String == && equal

    [.net超级群:27921837] Java中equals和==的区别 java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,flo ...