centos droplog,centos sudo

很多朋友对于centos droplog和centos sudo不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

CentOS系统常规初始化操作详解

环境准备:

1)设置本地国际化语言为en_US.UTF-8

[root@c58~]#sed-i's/^\(LANG=\).*$/\1en_US.UTF-8/'/etc/sysconfig/i18n

[root@c58~]#cat/etc/sysconfig/i18n

LANG=en_US.UTF-8

[root@c58~]#LANG=en_US.UTF-8

2)更新系统软件包

备份默认yum源:

find/etc/yum.repos.d-name'*.repo'-execmv{}{}.bak\;

添加163yum源:

redhat5或centos5:

wget

redhat6或centos6

wget

添加epel yum源:

redhat5.x 32bit:

rpm-ivh

redhat5.x 64bit:

rpm-ivh

redhat6.x 32bit:

rpm-ivh

redhat6.x 64bit:

rpm-ivh

更新证书:

yum-yupgradeca-certificates--disablerepo=epel

更新系统所有软件包:

yumcleanallyummakecacheyum-yupgrade

下文以redhat5/centos5为例

一、服务最小化原则

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

1)关闭所有开机自启动服务

[root@c58~]#foriin`chkconfig--list|awk'{if($1~/^$/){exit0;}else{print$1}}'`;dochkconfig$ioff;done

2)开启基础服务

[root@c58~]#foriinsshdnetworksyslogcrondiptables;dochkconfig$ion;done

3)查看开启的服务

[root@c58~]#chkconfig--list|grep'3:on'

crond0:off1:off2:on3:on4:on5:on6:off

iptables0:off1:off2:on3:on4:on5:on6:off

network0:off1:off2:on3:on4:on5:on6:off

sshd0:off1:off2:on3:on4:on5:on6:off

syslog0:off1:off2:on3:on4:on5:on6:off

二、用户登录限制

1)禁止使用root用户使用远程ssh

[root@c58~]#cd/etc/ssh

[root@c58ssh]#cpsshd_configsshd_config~

[root@c58ssh]#sed-i's/#\(PermitRootLogin\)yes/\1no/'sshd_config

[root@c58ssh]#grep'PermitRoot'/etc/ssh/sshd_config

PermitRootLoginno

2)禁用登录提示信息

[root@c58ssh]#/etc/motd

3)修改ssh的默认监听端口(tcp:22)

#这里修改为tcp的11983端口

[root@c58ssh]#sed-i's/#\(Port\)22/\11983/'sshd_config

[root@c58ssh]#grep'Port'sshd_config

Port11983

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

方法1(使用tcpwrapper):

#只允许192.168.124.0网段的ip使用ssh

echosshd:192.168.124.0/255.255.255.0/etc/hosts.allow

echosshd:ALL/etc/hosts.deny

方法2(使用iptables):

#注意,远程操作时需留心,以免把自己也拒绝而导致无法远程连接。如只允许192.168.1.0网段的所有ip进行ssh,其他所有ip都拒绝#先允许自己的ip,以防被后面的操作误伤

iptables-IINPUT-s10.0.0.1-ptcp--dport22-jACCEPT

#允许192.168.1.0网段

iptables-I2INPUT-s192.168.1.0/24-ptcp--dport22-jACCEPT

#拒绝所有

iptables-I3INPUT-ptcp--dport22-jDROP

#保存iptables的设置:

cp/etc/sysconfig/iptables/etc/sysconfig/iptables~

iptables-save/etc/sysconfig/iptables

最后,重启sshd服务使上面配置生效(不用担心重启时已打开的远程终端连接会断开,重启只会对新开的终端生效)

[root@c58ssh]#/etc/init.d/sshdrestart

Stoppingsshd:[OK]

Startingsshd:[OK]

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

创建一个普通用户tom,将其加入sudo组,该用户作为系统管理员

groupaddsudo#创建sudo组

useradd-Gsudotom#创建tom用户,加入sudo组

passwdtom#设置tom用户的登陆密码

修改sudo配置文件,授权sudo组的用户可以以root身份执行所有命令(可以针对不同用户授予不同的命令执行权限,这里允许执行所有命令,生产环境中系统管理员应该按需为用户分配尽可能少的可执行命令,以实现权限最少化),用户执行的所有sudo操作都将记录在/var/log/sudo.log中,以便日后的安全事件排查。执行命令如下:

[root@cloud~]#cat/etc/sudoersEOF

%sudoALL=(root)ALL

Defaultslogfile=/var/log/sudo.log

EOF

[root@cloud~]#visudo-c

[root@cloud~]#echolocal2.debug/var/log/sudo.log/etc/syslog.conf

[root@cloud~]#/etc/init.d/syslogrestart

注:visudo-c命令用于检查/etc/sudoers文件的语法正确性

四、内核安全参数设置

vim/etc/sysctl.conf#添加如下内容:

#关闭对ping包的响应(可选,一般不建议,因为不方便网络故障时的排查)

net.ipv4.icmp_echo_ignore_all=1

#关闭对广播ping的响应

net.ipv4.icmp_echo_ignore_broadcasts=1

#开启syncookie用于防范synflood攻击,当出现syn等待队列溢出时(syn数量超过tcp_max_syn_backlog的设置值),启用cookie来处理,server在回复syn_ack前会先请求client回复一个序列号,该序列号中要求包含原先syn包中的信息,如果序列号不正确,则server端会忽略此syn连接。

net.ipv4.tcp_syncookies=1

#设置sync_ack的最大重传次数,默认值为5,范围0-255,重传5次的时间大约为180s

net.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#添加如下内容:

#设置syn等待队列的长度,对于内存大于128M的机器,默认值是1024,在并发请求较大时,可以调大该值

net.ipv4.tcp_max_syn_backlog

#开启timewait重用。允许将time_waitsocket重新用于新的tcp连接

net.ipv4.tcp_tw_reuse=1

#开启tcp连接中time_waitsocket的快速回收

net.ipv4.tcp_tw_recycle=1

#TCP发送keepalive探测以确定该连接已经断开的次数,默认值为9

net.ipv4.tcp_keepalive_probes=5

#指定探测消息发送的频率,该值乘以tcp_keepalive_probes就可以得到从开始探测到连接被删除所需的时间。默认值为75,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)

net.ipv4.tcp_keepalive_intvl=15

#表示系统同时保持TIME_WAITsocket的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并输出警告信息。默认为180000,改为5000.对于squid服务器来说,此参数可以控制TIME_WAIT套接字的最大数量,避免squid服务器被大量的TIME_WAITsocket拖死。

net.ipv4.tcp_max_tw_buckets=5000

#表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000

net.ipv4.ip_local_port_range=102465000

保存退出后,执行sysctl-p命令将以上设置加载到内核使其立刻生效

centos系统编译安装nginx+php环境另加独立mysql教程

前端(nginx+php)ip:192.168.10.8

后端(独立mysql)ip:192.168.10.5

软件版本:libiconv-1.14.tar.gz mysql-5.1.63.tar.gz php-5.2.17.tar.gz php-5.2.17-fpm-0.5.14.diff.gz php-5.2.17-max-input-vars.patch

1.先在后端安装mysql

在192.168.10.5上只安装mysql.方法可以去看centos编译安装nginx+php-fpm+mysql里的mysql安装.

2.在前端安装php-fpm nginx和mysql-client

这里只说下安装mysql-client和php的编译安装.

                代码如下   tar zxf mysql-5.1.63.tar.gz cd mysql-5.1.63

./configure--prefix=/usr/local/mysql--without-server           

这里只需要加上--without-server就可以让mysql变成客户端了.

如果出现/bin/rm: cannot remove `libtoolt': No such file or directory,可以去看这篇文章Mysql安装:/bin/rm: cannot remove `libtoolt': No such file or directory.

没有问题后,执行命令:

                代码如下   make make install           

编译php的时候只需要加上--with-mysql=mysql客户端安装目录就可以了.这里我给出编译参数:

                代码如下   ./configure--prefix=/usr/local/php--enable-fastcgi--enable-fpm--with-fpm-log=/var/log/php-fpm.log\

--with-fpm-conf=/etc/php-fpm.conf--with-fpm-pid=/var/run/php-fpm.pid--with-config-file-path=/etc\

--with-config-file-scan-dir=/etc/php.d--with-openssl--with-zlib--enable-bcmath--with-bz2--with-curl\

--enable-ftp--with-gd--enable-gd-native-ttf--with-jpeg-dir--with-png-dir--with-gettext--with-mhash\

--enable-mbstring--with-mcrypt--enable-soap--enable-zip--with-iconv=/usr/local/libiconv\

--with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--without-pear           

nginx的编译没有什么好说的了,我前面centos编译安装nginx+php-fpm+mysql这篇文章里已经有讲过了.

3.进行测试验证

当上面的一切都安装好之后,在后端的mysql里给出远程权限,如下:

                代码如下   GRANT ALL PRIVILEGES ON*.* TO'root'@'%' IDENTIFIED BY'123456';           

然后iptables上只允许192.168.10.8访问mysql端口,其他都拒绝.如:

                代码如下   iptables-A RH-Firewall-1-INPUT-s 192.168.10.8-p tcp-m tcp--dport 3306-j ACCEPT

iptables-A RH-Firewall-1-INPUT-p tcp--dport 3306-j DROP

services iptables save

services iptables restart           

然后在192.168.10.8上进行测试,是否可以远程连上mysql

mysql-h 192.168.10.5-u root-p

如果可以连上,就继续下一步的操作,不能连上的话请检查上面是否有错误的地方.

现在我们加个php页面来测试php是否可以连上mysql,脚本如下:

                代码如下   ?php

$link=mysql_connect("192.168.10.5","root","123456");

if(!$link) echo"bad!";

else echo"ok!";

mysql_close();

?           

成功的话是ok!的输出,失败的话是bad!的输出,我这里是成功的

mysql 5.5.x的只安装客户端.

需要的软件:libiconv-1.14.tar.gz mysql-5.5.25a.tar.gz

1.安装前的准备

安装前的准备,可以去看这篇文章centos编译安装nginx+php-fpm+mysql

2.安装libiconv

                代码如下   ./configure--prefix=/usr/local/libiconv

make make install           

3.只安装mysql客户端

                代码如下   cmake. make mysqlclient libmysql

make install           

这样就只安装了mysql客户端,然后可以输入whereis mysql来查看mysql安装位置.

whereis mysql

好了,可以看到跟yum安装的差不多.

4.安装php

以前mysql是5.1的时候,只需要加上--with-mysql=mysql客户端安装目录就可以了,但在mysql 5.5.x这个参数就要改变下了,下面是php的编译参数:

                代码如下   ./configure--prefix=/usr/local/php--enable-fastcgi--enable-fpm--with-fpm-log=/var/log/php-fpm.log--with-fpm-conf=/etc/php-fpm.conf\

--with-fpm-pid=/var/run/php-fpm.pid--with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d\

--with-openssl--with-zlib--enable-bcmath--with-bz2--with-curl--enable-ftp\

--with-gd--enable-gd-native-ttf--with-jpeg-dir--with-png-dir--with-gettext--with-mhash\

--enable-mbstring--with-mcrypt--enable-soap--enable-zip--with-iconv=/usr/local/libiconv\

--with-mysql=shared,/usr--with-mysqli=shared,/usr/bin/mysql_config           

大家可以看最后一行,--with-mysql=shared,/usr--with-mysqli=shared,/usr/bin/mysql_config这就是跟以前不同的行.好了,剩下的就不写了

如何在 CentOS 中搭建 NTP 服务器

备 CentOS服务器

现在让我们来开始在 CentOS上设置 NTP服务器。

首先,我们需要保证正确设置了服务器的时区。在 CentOS 7中,我们可以使用 timedatectl命令查看和更改服务器的时区(比如,"Australia/Adelaide",LCTT译注:中国可设置为 Asia/Shanghai)

# timedatectl list-timezones| grep Australia

# timedatectl set-timezone Australia/Adelaide

# timedatectl

继续并使用 yum安装需要的软件

# yum install ntp

然后我们会添加全球 NTP服务器用于同步时间。

# vim/etc/ntp.conf

server 0.oceania.pool.ntp.org

server 1.oceania.pool.ntp.org

server 2.oceania.pool.ntp.org

server 3.oceania.pool.ntp.org

默认情况下,NTP服务器的日志保存在/var/log/messages。如果你希望使用自定义的日志文件,那也可以指定。

logfile/var/log/ntpd.log

如果你选择自定义日志文件,确保更改了它的属主和 SELinux环境。

# chown ntp:ntp/var/log/ntpd.log

# chcon-t ntpd_log_t/var/log/ntpd.log

现在初始化 NTP服务并确保把它添加到了开机启动。

# systemctl restart ntp

# systemctl enable ntp

验证 NTP Server时钟

我们可以使用 ntpq命令来检查本地服务器的时钟如何通过 NTP同步。

控制到 NTP服务器的访问

默认情况下,NTP服务器允许来自所有主机的查询。如果你想过滤进来的 NTP同步连接,你可以在你的防火墙中添加规则过滤流量。

# iptables-A INPUT-s 192.168.1.0/24-p udp--dport 123-j ACCEPT

# iptables-A INPUT-p udp--dport 123-j DROP

该规则允许从 192.168.1.0/24来的 NTP流量(端口 UDP/123),任何其它网络的流量会被丢弃。你可以根据需要更改规则。

配置 NTP客户端

1. Linux

NTP客户端主机需要 ntpupdate软件包来和服务器同步时间。可以轻松地使用 yum或 apt-get安装这个软件包。安装完软件包之后,用服务器的 IP地址运行下面的命令。

# ntpdate<server-IP-address>

基于 RHEL和 Debian的系统命令都相同。

2. Windows

如果你正在使用 Windows,在日期和时间设置(Date and Time settings)下查找网络时间(Internet Time)。

3. Cisco设备

如果你想要同步 Cisco设备的时间,你可以在全局配置模式下使用下面的命令。

# ntp server<server-IP-address>

来自其它厂家的支持 NTP的设备有自己的用于网络时间的参数。如果你想将设备和 NTP服务器同步时间,请查看设备的说明文档。

结论

总而言之,NTP是在你的所有主机上同步时钟的一个协议。我们已经介绍了如何设置 NTP服务器并使支持 NTP的设备和服务器同步时间。

阅读剩余
THE END