设为首页 收藏本站
查看: 414|回复: 0

[经验分享] CentOS系统常规初始化操作

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-27 08:36:55 | 显示全部楼层 |阅读模式


环境准备:

1)设置本地国际化语言为en_US.UTF-8
1
   
[iyunv@c58 ~]# sed -i 's/^\(LANG=\).*$/\1"en_US.UTF-8"/' /etc/sysconfig/i18n   
[iyunv@c58 ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8"
[iyunv@c58 ~]# LANG=en_US.UTF-8

2)更新系统软件包

备份默认yum源:
1
   
find /etc/yum.repos.d -name '*.repo' -exec mv {} {}.bak \;

添加163yum源:

redhat5或centos5:
1
   
wget -P /etc/yum.repos.d

redhat6或centos6
1
   
wget -P /etc/yum.repos.d

添加epel yum源:

redhat5.x 32bit
1
   
rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-5-4.noarch.rpm

redhat5.x 64bit
1
   
rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-5-4.noarch.rpm

redhat6.x 32bit
1
   
rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm

redhat6.x 64bit
1
   
rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm

更新证书:
1
   
yum -y upgrade ca-certificates --disablerepo=epel

更新系统所有软件包:
1
   
yum clean all
yum makecache
yum -y upgrade

下文以redhat5/centos5为例


一、服务最小化原则

关闭所有开机自启动服务,仅开启sshd、crond、network、iptables、iptables、syslog(redhat5)、rsyslog(redhat6),然后在此基础上按需添加需要开机启动的服务。

1)关闭所有开机自启动服务
1
   
[iyunv@c58 ~]# for i in `chkconfig --list | awk '{if ($1~/^$/) {exit 0;} else {print $1}}'`; do chkconfig $i off; done


2)开启基础服务
1
   
[iyunv@c58 ~]# for i in sshd network syslog crond iptables; do chkconfig $i on; done


3)查看开启的服务
1
   
[iyunv@c58 ~]# chkconfig --list | grep '3:on'crond           0:off   1:off   2:on    3:on    4:on    5:on    6:offiptables         0:off   1:off   2:on    3:on    4:on    5:on    6:offnetwork         0:off   1:off   2:on    3:on    4:on    5:on    6:offsshd            0:off   1:off   2:on    3:on    4:on    5:on    6:offsyslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off

二、用户登录限制

1)禁止使用root用户使用远程ssh
1
   
[iyunv@c58 ~]# cd /etc/ssh
[iyunv@c58 ssh]# cp sshd_config sshd_config~
[iyunv@c58 ssh]# sed -i 's/#\(PermitRootLogin \)yes/\1no/' sshd_config
[iyunv@c58 ssh]# grep 'PermitRoot' /etc/ssh/sshd_config PermitRootLogin no

2)禁用登录提示信息
1
   
[iyunv@c58 ssh]# >/etc/motd


3)修改ssh的默认监听端口(tcp:22)
1
   
[iyunv@c58 ssh]# sed -i 's/#\(Port \)22/\11983/' sshd_config(这里修改为tcp的11983端口)
[iyunv@c58 ssh]# grep 'Port ' sshd_configPort 11983


4)只允许指定的ip可以ssh (可选)

方法1(使用tcpwrapper):
1
   
echo "sshd:192.168.124.0/255.255.255.0" >> /etc/hosts.allow                //只允许192.168.124.0网段的ip使用sshecho "sshd:ALL" >> /etc/hosts.deny

方法2(使用iptables):
1
   
注意,远程操作时需留心,以免把自己也拒绝而导致无法远程连接如只允许192.168.1.0网段的所有ip进行ssh,其他所有ip都拒绝iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT                  //先允许自己的ip,以防被后面的操作误伤iptables -I 2 INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT        //允许192.168.1.0网段iptables -I 3 INPUT -p tcp --dport 22 -j DROP         //拒绝所有保存iptables的设置:cp /etc/sysconfig/iptables /etc/sysconfig/iptables~iptables-save > /etc/sysconfig/iptables


最后,重启sshd服务使上面配置生效(不用担心重启时已打开的远程终端连接会断开,重启只会对新开的终端生效)
1
   
[iyunv@c58 ssh]# /etc/init.d/sshd restartStopping sshd:                                             [  OK  ]Starting sshd:                                             [  OK  ]

三、用户及命令权限最小化

创建一个普通用户tom,将其加入sudo组,该用户作为系统管理员
1
   
groupadd sudo                         //创建sudo组useradd -G sudo tom               //创建tom用户,加入sudo组passwd tom                              //设置tom用户的登陆密码

修改sudo配置文件,授权sudo组的用户可以以root身份执行所有命令(可以针对不同用户授予不同的命令执行权限,这里允许执行所有命令,生产环境中系统管理员应该按需为用户分配尽可能少的可执行命令,以实现权限最少化),用户执行的所有sudo操作都将记录在/var/log/sudo.log中,以便日后的安全事件排查。执行命令如下:
1
   
[iyunv@cloud ~]# cat >> /etc/sudoers <<EOF> %sudo    ALL=(root)    ALL> Defaults    logfile=/var/log/sudo.log> EOFvisudo -c       //该命令用于检查 /etc/sudoers 文件的语法正确性
[iyunv@cloud ~]# echo "local2.debug        /var/log/sudo.log" >> /etc/syslog.conf
[iyunv@cloud ~]# /etc/init.d/syslog restart

四、内核安全参数设置

vim /etc/sysctl.conf                添加如下内容:
1
   
#关闭对ping包的响应(可选,一般不建议,因为不方便网络故障时的排查)net.ipv4.icmp_echo_ignore_all = 1
关闭对广播ping的响应net.ipv4.icmp_echo_ignore_broadcasts = 1
开启syncookie用于防范syn flood攻击,当出现syn等待队列溢出时(syn数量超过tcp_max_syn_backlog的设置值),启用cookie来处理,server在回复syn_ack前会先请求client回复一个序列号,该序列号中要求包含原先syn包中的信息,如果序列号不正确,则server端会忽略此syn连接。net.ipv4.tcp_syncookies = 1 <br>#设置sync_ack的最大重传次数,默认值为5,范围0-255,重传5次的时间大约为180snet.ipv4.tcp_synack_retries =  3
设置当keepalive打开的情况下,keepalive消息的发送间隔,默认为2小时(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,如果两边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间就是2小时,成就了空连接攻击,tcp_keepalive_time就是预防此情形的.)net.ipv4.tcp_keepalive_time = 1200 保存退出后,执行"sysctl -p"命令将以上设置加载到内核使其立刻生效

五、 内核性能相关参数设置(可选)

vim /etc/sysctl.conf                添加如下内容:
1
   
#设置syn等待队列的长度,对于内存大于128M的机器,默认值是1024,在并发请求较大时,可以调大该值net.ipv4.tcp_max_syn_backlog
#开启timewait重用。允许将time_wait socket重新用于新的tcp连接net.ipv4.tcp_tw_reuse = 1
#开启tcp连接中time_wait socket的快速回收  net.ipv4.tcp_tw_recycle = 1
#TCP发送keepalive探测以确定该连接已经断开的次数,默认值为9net.ipv4.tcp_keepalive_probes = 5
#指定探测消息发送的频率,该值乘以tcp_keepalive_probes就可以得到从开始探测到连接被删除所需的时间。默认值为75,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)net.ipv4.tcp_keepalive_intvl = 15
表示系统同时保持TIME_WAIT socket的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并输出警告信息。默认为180000,改为5000.对于squid服务器来说,此参数可以控制TIME_WAIT套接字的最大数量,避免squid服务器被大量的TIME_WAIT socket拖死。net.ipv4.tcp_max_tw_buckets = 5000
表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000net.ipv4.ip_local_port_range=1024 65000




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60951-1-1.html 上篇帖子: linux中权限对文件和目录的意义 下篇帖子: 轻量级SSH服务器dropbear 的安装使用指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表