linux服务器安全配置攻略

引言:

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

所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全。
下面是CentOS服务器安全设置,供大家参考。 一、注释掉系统不需要的用户和用户组 注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。
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: #news:x:9:13: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 700 /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条 文章搜索

 

posted @ 2015-03-19 10:22  @创可贴  阅读(585)  评论(0编辑  收藏  举报