LINUX操作系统配置

创建用户

  • 建工作组xxxx

#groupadd xxxx

  • 添加用户

#adduser -g xxxx xxxx

  • 修改用户密码

#passwd xxxx

输入2次密码

  • 查看用户属性

#id xxxx

 

  • 安全整改要求,将用户加入wheel组,即允许su到root用户

#usermod -G wheel xxxx

修改主机名和HOSTS文件

  •  

主机名字不要为localhosts

编辑/etc/sysconfig/network 文件,给主机启用一个全网唯一的名字

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=xxx

 

  • 将整个集群的名字加入到Hosts文件

vi /etc/hosts

字符集配置(可选)

#vi /etc/sysconfig/i18n

替换为以下内容:

LANG="zh_CN.GB18030"

LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

 

以下是执行让其生效

#source /etc/sysconfig/i18n

 

 

 

修改SSH端口

此步骤参考openssh升级

#vi /etc/ssh/sshd_config

#port 22

去掉#号,改为port 30022

#service sshd restart //重启ssh服务

/etc/init.d/sshd stop && /etc/init.d/sshd start

 

 

打开文件数配置

  • 编辑vi /etc/rc.d/rc.local,在最后插入以下内容:

#vi /etc/rc.d/rc.local

插入以下内容:

echo 655360 > /proc/sys/fs/file-max

 

  • 编辑vi /etc/security/limits.conf,在最后插入以下内容:

 

#vi /etc/security/limits.conf

添加如下的行

root soft nproc 65536

root hard nproc 65536

root soft nofile 65536

root hard nofile 65536

ccssoft soft nproc 65536

ccssoft hard nproc 65536

ccssoft soft nofile 65536

ccssoft hard nofile 65536

 

说明:* 代表针对所有用户

noproc 是代表最大进程数

nofile 是代表最大文件打开数

修改后重新连ssh

 

#vi /etc/security/limits.d/90-nproc.conf

#添加以下行

ccssoft soft nproc unlimited

vi /etc/pam.d/login

加入:

session required /lib64/security/pam_limits.so

注意核实是否存在:/lib64/security/pam_limits.so 这个文件

  • 注:rhel7的修改还可能需要修改:

#vi /etc/systemd/system.conf

DefaultLimitNOFILE=1024000

DefaultLimitNPROC=1024000

 

NTP时钟同步

  • 方法1,启用ntpd服务,缺点是启用后有安全漏洞的风险,需要不断升级整改

vi /etc/ntp.conf

添加

server 132.122.132.33

--手工校正

ntpdate 132.122.132.33

--服务打开

chkconfig ntpd on

--服务重启

/etc/init.d/ntpd restart

--查看服务情况

/usr/sbin/ntpq -p

  • 方法2 使用crontab任务同步时钟,建议采取此方式

#crontab –e

编辑如下:

0 12 * * * /usr/sbin/ntpdate -u 132.122.132.33

 

关闭SELINUX和防火墙

  • 关闭防火墙(视情况而定)

ptables -F

service iptables stop

chkconfig iptables off

  • 关闭selinux 服务

编辑selinux配置文件/etc/selinux/config修改 为SELINUX=disabled

setenforce 0

getenforce (查看是否已经关闭)

 

 

 

 

  • 修改telnet回显信息,
  • 修改文件/etc/issue 和/etc/issue.net中的内容,执行如下两条命令:

#echo " Authorized users only. All activity may be monitored and reported " > /etc/issue

#echo " Authorized users only. All activity may be monitored and reported " > /etc/issue.net

可根据实际需要修改该文件的内容,但是不要出现系统敏感信息,如redhat,suse等。

  • 重启服务(注意,本来没有启动的,不需要启动该服务)

#/etc/init.d/xinetd restart

卸载红帽订阅服务

  • 没有购买服务的情况下,可以卸载红帽的订阅服务

#rpm -e subscription-manager-firstboot

# rpm -e subscription-manager-gui-1.16.8-8.el6.x86_64

# rpm -e subscription-manager

关闭和卸载X窗口模式

  • 关闭X窗口

此设置可以减少操作系统本身内存和CPU的占用

vi /etc/inittab

改成命令行模式:

id:3:initdefault:

执行 init 3即可关闭桌面

 

  • 回退可以修改配置id:5:initdefault:

执行指令 init 5 ;start x 即可

 

  • 卸载相关的组

查看安装的组,卸载

#yum grouplist

# yum groupremove "打印客户端

# yum groupremove “打印服务器”

# yum groupremove "X Window System"

#...

TCP内核参数调整

加大TCP并发连接数

vi /etc/sysctl.conf 

//在文件最后追加如下类容:

net.core.rmem_default = 256960

net.core.rmem_max = 513920

net.core.wmem_default = 256960 net.core.wmem_max = 513920

 

net.core.netdev_max_backlog = 262144 net.core.somaxconn = 3240000

net.ipv4.tcp_max_orphans = 65536

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 5

net.ipv4.tcp_keepalive_time =15

net.ipv4.tcp_keepalive_probes=3

net.ipv4.tcp_keepalive_intvl=5

 

net.ipv4.tcp_max_tw_buckets=6000

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_retries2=5

 

# for 8G

#net.ipv4.tcp_mem = 524288     699050  1048576

net.ipv4.tcp_mem = 786432 2097152 3145728

net.ipv4.tcp_rmem = 4096 4096 16777216

net.ipv4.tcp_wmem = 4096 4096 16777216

net.ipv4.ip_local_port_range = 1024 65535

fs.file-max = 2390251

 

kernel.pid_max=655350

kernel.threads-max=6553500

vm.max_map_count= 655350

 

#使配置立即生效可使用如下命令: #/sbin/sysctl -p

 

 

关闭部份不用到的服务

报未识别的服务为正常,可能未安装此服务,可忽略

  • 打印服务

service cups stop

chkconfig cups off

  • ftp服务

/etc/rc.d/init.d/vsftpd stop

chkconfig vsftpd off

  • snmp服务

service snmpd stop

chkconfig snmpd off

  • apache服务

service httpd stop

chkconfig httpd off

  • 蓝牙服务

/etc/init.d/bluetooth stop

chkconfig bluetooth off

  • 邮件服务

service sendmail stop

chkconfig sendmail off

  • firstboot服务

service firstboot stop

chkconfig firstboot off

  • IPV6防火墙服务

service ip6tables stop

chkconfig ip6tables off

service cups stop

chkconfig cups off

/etc/rc.d/init.d/vsftpd stop

chkconfig vsftpd off

service snmpd stop

chkconfig snmpd off

service httpd stop

chkconfig httpd off

/etc/init.d/bluetooth stop

chkconfig bluetooth off

service sendmail stop

chkconfig sendmail off

service firstboot stop

chkconfig firstboot off

service ip6tables stop

chkconfig ip6tables off

service rpcbind stop

chkconfig rpcbind off

service postfix stop

chkconfig postfix off

service nfslock stop

chkconfig nfslock off

service ntpd stop

chkconfig ntpd off

----------------------

vnc服务

一般情况下不建议使用VNC服务,使用完需要及时关掉服务

  • 优化界面

#cd /root/.vnc

#vi xstartup

//把最后一行改为: gnome-session&

  • 启动VNC服务

#vncserver

第一次要设置密码;可以重复开多个server,可以在不同用户下启动属于特定用户的VNC

#vncpasswd //修改vnc密码

停止VNC服务

#vncserver -kill :1 (注意kill后面有空格)

#vncserver -kill :2

…………

  • vnc客户端

vnc客户端可以用IE登陆IP:5801或IP:5802,……

 

 

路由配置

  • 可以指定默认走设备网络,DCN段才走DCNIP

 

 

 

Yum源安装

  • 方法1 本地yum源配置

1、确保所使用的ISO文件是安装系统时所使用的,保持版本一致

2、挂载ISO文件

1)建立一个空目录,如yum

#mkdir /yum

2)执行挂载指令(确保ISO文件名与路径正确)

#mount -o loop /root/XXXX.iso /yum

3、修改repo文件

1)找到repo文件

#/etc/yum.repos.d

2)一般是默认的一个文件,如rhel-source.repo

#vi rhel-source.repo

[rhel-source]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=file:///yum

enabled=1

gpgcheck=0

4、保存配置文件后,执行清理操作

#yum clean all

5、查看软件包列表

#yum list

  • 方法1 http源配置

优点是不用每台都挂载iso,节省空间。

  1. 配置主服务器的httpd服务(参考1.16)
  2. 将ISO文件拷贝到指定httpd目录
  3. 其他服务器配置文件参考如下:

#vi /etc/yum.repos.d/rhel-source.repo

编辑以下内容:

[rhel-source]

name=Red Hat Enterprise Linux $releaserver - $basearch - Source

baseurl=http://ip:端口/rhel6.8/

enabled=1

gpgcheck=0

 

Openssh升级以及安全加固

  • 安装Telnet服务,防止ssh升级失败

yum install telnet-server

vi /etc/xinetd.d/telnet

将 disable = yes

改为 disable = no

启动Telnet服务: /etc/init.d/xinetd start

netstat -tnlp | grep 23 查看telnet服务是否启动

chkconfig xinetd on ( 设置telnet服务开机启动)

确认服务器可以Telnet且登录上,保持长连

telnet 服务器ip

注意,默认Telnet用户为非root用户

 

  • 安装zlib

tar -xvf zlib-1.2.11.tar.gz                 

cd zlib-1.2.11

./configure --shared

make              make install

  • 源码安装目录拷贝

#cp zutil.h /usr/local/include

#cp zutil.c /usr/local/include

  • 查看版本是否换了

ls /usr/local/lib

应该包含以下文件:

libz.a

libz.so -> libz.so.1.2.11

libz.so.1 -> libz.so.1.2.11

libz.so.1.2.11

  • /usr/local/include 包含以下文件

zconf.h

zlib.h

zutil.c

zutil.h

 

  • 安装openssl-fips-2.0.16

tar -xvf openssl-fips-2.0.16.tar.gz

cd openssl-fips-2.0.16

./config

make

make install

  • 安装openssl-1.0.2p

tar -xvf openssl-1.0.2p.tar.gz

cd openssl-1.0.2p

./config fips --shared

(注意fips参数,shared参数)

make

make install

---备份((文件存在的话就执行)

mv /usr/bin/openssl /usr/bin/opensslbak

mv /usr/include/openssl /usr/include/openssl.bak

---设置软连接

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

查看新安装的openssl版本

openssl version –a

 

#vi /etc/ld.so.conf

将以下这段加入到第一行

/usr/local/ssl/lib

 

#ldconfig

  • 安装openssh-7.8p1

#tar -xvf openssh-7.8p1.tar.gz

#cd openssh-7.8p1

修改openssh版本(可选)

# vi version.h

修改版本和补丁号,解决被扫描探测问题

#define SSH_VERSION "OpenSSH201810"

#define SSH_PORTABLE "p1"

编译

#./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening

#make

#make install

备份sshd文件,重命名为sshdbak

mv /etc/init.d/sshd /etc/init.d/sshdbak

复制配置文件

cd /root/openssh-7.8p1/contrib/redhat

cp sshd.init /etc/init.d/sshd

chmod u+x /etc/init.d/sshd

chkconfig --add sshd

chkconfig sshd on

#备份配置文件

mv /etc/ssh/ssh_config /etc/ssh/ssh_config_bak

mv /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

复制文件

cp /root/openssh-7.8p1/ssh_config /etc/ssh/ssh_config

cp -p /root/openssh-7.8p1/sshd_config /etc/ssh/sshd_config

修改配置文件

/etc/ssh/sshd_config 如端口,参考1.4的配置

  • 查看升级后的ssh版本

ssh –V

  • Ssh安全配置

#vi /etc/ssh/sshd_config

升级后的ssh默认关闭root直接登陆,满足安全要求

#PermitRootLogin prohibit-password

(如果想开启root直接登陆,需要在35行增加:PermitRootLogin yes 不建议这样操作)

端口修改:13行可以修改为其他端口

Port 30022

绑定ip修改:18行可以修改绑定的ip

对于双ip的网络,建议只绑定维护用的ip

 

PermitEmptyPasswords no

ListenAddress 绑定的IP

 

最后加上这句限定加密算法:

注意此处有坑,目前只在6.8配置后重启服务没有问题

Ciphers [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]

 

 

  • 重启SSH

service sshd restart

  • 停止telnet服务

待确认新升级的OpenSSH版本可以正常使用时,然后停止telnet服务

 

(修改配置文件将vi /etc/xinetd.d/telnet文件中的

disable = no

修改为 disable = yes

)

重启服务

/etc/init.d/xinetd restart

 

关闭telnet服务【安全要求】

出于安全需求,所有操作完毕后,需要关闭telnet服务

  • 方法1:停止telnet服务

(修改配置文件将vi /etc/xinetd.d/telnet文件中的

disable = no

修改为 disable = yes

)

重启服务(xinetd本来就是停止的不用执行这个)

/etc/init.d/xinetd restart

方法2 彻底卸载telnet服务

#yum remove telnet-server

 

Httpd 服务升级【按需】

注:yum源服务以及zabbix ui才需要安装,其他服务器均不用安装该包

安装编译依赖包

#yum install gcc gcc-c++

 

  • expat安装

# tar jxf expat-2.2.6.tar.bz2 #cd expat-2.2.6/ # ./configure --prefix=/usr/local/expat

# make && make install

  • --apr安装

#tar zxvf apr-1.6.5.tar.gz

#cd apr-1.6.5

#./configure --prefix=/usr/local/apr

#make && make install

  • apr-util安装

# tar zxvf apr-util-1.6.1.tar.gz

#cd apr-util-1.6.1

#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-expat=/usr/local/expat

#make && make install

  • pcre安装

# tar zxvf pcre-8.42.tar.gz

#cd pcre-8.42

#./configure --prefix=/usr/local/pcre

#make && make install

  • httpd安装:

#tar -xzvf httpd-2.4.35.tar.gz

#cd tar -xzvf httpd-2.4.35

#./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-ssl=/usr/local/ssl/ --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre/ --enable-mpms-shared=all --with-mpm=prefork --enable-mods-shared=most --enable-deflate --enable-expires --enable-headers

#make && make install

  • 配置:

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

赋予执行权限

chmod 755 /etc/init.d/httpd

// 修改htppd不支持chkconfig命令

vi /etc/init.d/httpd

第二行添加

# chkconfig: 35 85 15

# description: Apache Web Server

 

// 添加服务

chkconfig --add httpd

// 随机启动

chkconfig httpd on

 

// 启动服务

service httpd start

 

安全修改:

将 #Options Indexes FollowSymLinks

改为: Options FollowSymLinks

取消注释

Include /etc/httpd/extra/httpd-default.conf

 

编辑/etc/httpd/extra/httpd-default.conf

ServerTokens Full

ServerSignature On

修改为:

ServerTokens Prod

ServerSignature off

 

#禁用WWW服务对TRACE请求的支持

TraceEnable off

 

注:

如果有php,需要修改

#vi php.ini

将expose_php = On修改为:

expose_php = Off

Vsftp安装以及安全加固【按需】

  1. 需要新建用户

#id nobody

如果没有,建立下用户

#useradd -M -s /sbin/nologin nobody

建立VSFTPD用户,非登陆

# groupadd vsftpd

# mkdir -p /data/vsftpd/pub

# mkdir -p /data/vsftpd/soc

# useradd -g vsftpd -d /data/vsftpd -s /sbin/nologin vsftpd

# id vsftpd

 

  1. 卸载原有服务

# rpm -qa |grep vsftp

#service vsftpd stop

#rpm -e vsftpd-2.2.2*(查出得包名字)

  1. 安装依赖包

#yum install gcc gcc-c++ db4-utils pam-devel libcap libcap-devel

  1. 安装程序

注意,是不用configuer的,默认

# tar xvfz vsftpd-3.0.3.tar.gz

# cd vsftpd-3.0.3

#make

# make install

  1. 配置文件拷贝

安装后,程序默认的配置文件在/etc/vsftpd.conf 这里不采用

#cd 源码目录

#mkdir -p /etc/vsftpd/

# cp vsftpd.conf /etc/vsftpd/vsftpd.conf (这一步可以不做)

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default

  1. 虚拟用户配置

1:创建虚拟用户文本文件,添加虚拟用户和密码

#vi /etc/vsftpd/vuser.txt

奇数行是用户名,偶数是密码,比如:

test

1234

生成虚拟数据库文件

#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

 

  1. 配置PAM文件,对客户端进行验证

vi /etc/pam.d/vsftpd

auth required pam_userdb.so db=/etc/vsftpd/vuser

account required pam_userdb.so db=/etc/vsftpd/vuser

修改虚拟数据库文件vuser.db的权限为 700

#chmod 700 /etc/vsftpd/vuser.db

  1. 配置文件(参考119)

#/etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

idle_session_timeout=300

data_connection_timeout=30

chroot_local_user=YES

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=YES

listen=YES

guest_enable=YES

guest_username=vsftpd

pam_service_name=vsftpd

allow_writeable_chroot=YES

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

max_per_ip=50

local_max_rate=50000000

anon_max_rate=50000000

max_clients=100

listen_port=4509

use_localtime=YES

ftpd_banner=” Authorized users only. All activity may be monitored and reported.”

 

  1. 虚拟用户配置

控制虚拟用户的访问,虚拟用户的主配置文件输入(见上面配置文件)

#user_config_dir=/etc/vsftpd/vsftpd_user_conf(当然可以建立在其他的地方哦!)

  1. 建立vsftpd_user_conf

#mkdir /etc/vsftpd/vsftpd_user_conf

  1. 设置虚拟用户配置文件,与虚拟账户同名,以具体为准

#vi /etc/vsftpd/vsftpd_user_conf/test

allow_writeable_chroot=YES

anon_world_readable_only=NO ###浏览FTP目录和下载

anon_upload_enable=YES ###允许上传

anon_mkdir_write_enable=YES ###建立和删除目录

anon_other_write_enable=YES ####改名和删除文件

local_root=/path/ #### 指定虚拟用户在系统

  1. 添加vsftpd服务:

# vi /etc/init.d/vsftpd

 

#!/bin/bash

#

# vsftpd This shell script takes care of starting and stopping

# standalone vsftpd.

#

# chkconfig: - 60 50

# description: Vsftpd is a ftp daemon, which is the program

# that answers incoming ftp service requests.

# processname: vsftpd

# config: /etc/vsftpd/vsftpd.conf

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -x /usr/local/sbin/vsftpd ] || exit 0

RETVAL=0

prog="vsftpd"

start() {

# Start daemons.

if [ -d /etc/vsftpd ] ; then

for i in `ls /etc/vsftpd/*.conf`; do

site=`basename $i .conf`

echo -n $"Starting $prog for $site: "

/usr/local/sbin/vsftpd $i &

RETVAL=$?

[ $RETVAL -eq 0 ] && {

touch /var/lock/subsys/$prog

success $"$prog $site"

}

echo

done

else

RETVAL=1

fi

return $RETVAL

}

stop() {

# Stop daemons.

echo -n $"Shutting down $prog: "

killproc $prog

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog

return $RETVAL

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart|reload)

stop

start

RETVAL=$?

;;

condrestart)

if [ -f /var/lock/subsys/$prog ]; then

stop

start

RETVAL=$?

fi

;;

status)

status $prog

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

exit 1

esac

exit $RETVAL

  1. 修改执行权限

# chmod +x /etc/init.d/vsftpd

  1. 卸载回退方法

vsftpd的卸载用于没有给vsftpd-3.0.3的安装指定安装目录,所以在卸载的时候需要把以下对应的文件删除:

# rm /usr/local/sbin/vsftpd

# rm /usr/local/man/man5/vsftpd.conf.5

# rm /usr/local/man/man8/vsftpd.8

# rm /etc/xinetd.d/vsftpd

# rm -rf /etc/vsftpd

# rm -rf /var/ftp

# rm -rf /data/vsftpd

Keepalived安装配置

  • 安装依赖包

#yum install libnl-devel libnl3-devel libnfnetlink libnfnetlink-devel

  • 注:上传libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm(rhel6.8无此包)

# yum -y install libnfnetlink-devel*

  • 上传keeplive编译包keepalived-2.0.6.tar.gz
  • 解压编译包

# tar -xzvf /root/keepalived-2.0.6.tar.gz

# chown -R root:root /root/keepalived-2.0.6

  • 编译安装(注意编译参数)

#cd /root/keepalived-2.0.6

#LDFLAGS="$LDFLAGS -L/usr/local/ssl/lib" CFLAGS="$CFLAGS -I/usr/local/ssl/include" ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/`uname -r`

#make

(注: Keealived2.0.X支持IPV6版本,keepalived-2.0.7在RHEL6.8下编译有问题,故采用keepalived-2.0.6版本)

#make install

  • 将keepalived加入到系统服务

# mkdir /etc/keepalived/

注:/root/keepalived-2.0.6/ 为源码解压目录

# cp /root/keepalived-2.0.6/keepalived/etc/init.d/keepalived /etc/init.d/

# cp /root/keepalived-2.0.6/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# cp /root/keepalived-2.0.6/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

# chmod u+x /etc/init.d/keepalived

#服务开机启动

#chkconfig keepalived on

  • 服务启动 停止 查看状态

# service keepalived start|stop|status

  • 配置说明

使用service keepalived start命令启动服务时,默认会将/etc/sysconfig/keepalived文件中KEEPALIVED_OPTIONS参数作为keepalived服务启动时的参数,并从/etc/keepalived/目录下加载keepalived.conf配置文件,或用-f参数指定配置文件的位置。日志默认输出在/var/log/message文件中。

运行keepalived --help可以查看启动时的可选参数,这些可选参数都可以配置在/etc/sysconfig/keepalived文件中的KEEPALIVED_OPTIONS选项中,作为服务启动时的参数。 

keepalived正常运行后,会启动3个进程,其中一个是父进程,负责监控其子进程。一个是vrrp子进程,另外一个是checkers子进程。

 

主备配置

Ip

角色

172.51.234.79

主机1(主)

172.51.234.80

主机2(备)

172.51.234.200

浮动ip(VIP)

 

配置文件:

# /etc/keepalived/chk_nginx_keepalived.sh(nginx检测脚本)

# /etc/keepalived/keepalived.conf(nginx配置,这里用主备配置)

 

配置参考文件如下:

 

重启服务

#service keepalived restart

验证:

主备服务部署后

#ping 浮动IP地址 通则代表绑定成功

#主机停掉keepalived服务,浮动ip仍通证明主备切换成功

#如此类推

 

注意:

  • 配置同一个网段的其他主备实例配置文件需要修改virtual_router_id值

virtual_router_id 51

  • 不同的主备需要修改浮动IP

 

 

Nginx安装配置

  • 建立nginx运行用户组和用户

# groupadd nginx

# useradd -g nginx -s /sbin/nologin nginx

  • 安装pcre,实际上是不需要安装,只需要

#yum install gcc gcc-c++

#tar zxvf pcre-8.42.tar.gz

#cd pcre-8.42

#./configure --prefix=/usr/local/pcre

#make && make install

  • 同理openssl zlib
  • 解压第三方包, nginx_upstream_check_module来检查后端服务器的健康情况

# unzip ginx_upstream_check_module-master.zip

#unzip

  • 编译,注意下面的编译参数带路径的编译参数基本是源码解压目录

# ./configure --prefix=/usr/local/nginx18001 --user=nginx --group=nginx --with-openssl=/root/openssl-1.0.2p/ --with-http_ssl_module --with-zlib=/root/zlib-1.2.11/ --with-pcre=/root/pcre-8.42/ --with-pcre-jit --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_gunzip_module --with-http_gzip_static_module --with-threads --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_degradation_module --add-module=/root/nginx_upstream_check_module-master --with-file-aio --add-module=/root/

 

(备注:./configure --prefix=/usr/local/nginx \ --安装目录

--user=nginx --group=nginx \ --指定程序运行时的非特权用户和组

--with-openssl=/usr/local/ssl/ --指定OpenSSL库源的路径

--with-http_ssl_module \

--with-zlib=/usr/local/ \ --指定zlib library源的路径

--with-pcre=/usr/local/pcre-8.42\ --指定PCRE库源代码的路径

--with-pcre-jit --开启此选项能够显著提高正则表达式的处理效率,需要8.20或更新版本的PCRE。

--with-http_realip_module \ --启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

--with-http_addition_module \ --启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)

--with-http_sub_module \ --启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)

--with-http_gunzip_module \ --开启gzip方式传输模式,gzip方式传输数据能够大大减少带宽消耗,提升网页的响应速度,这也需要客户端的支持。

--with-http_gzip_static_module\ --开启预压缩功能,此功能主要是针对静态文件请求后,自动预压缩为.gz文件,返回给客户

--with-http_random_index_module\ --启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)

--with-http_secure_link_module \ --开启安全链接功能。通过认证文件的配置,限制用户访问权限。

--with-http_stub_status_module \ --启用nginx的NginxStatus功能,用来监控 Nginx的当前状态。

--with-http_auth_request_module \ --它允许您的nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者php等)进行请求, 并且根据请求决定是验证通过或者不通过。后端返回200 验证通过, 后端返回401或者403验证不通过。

--with-threads \ --线程池

--with-stream \ --tcp udp代理

--with-stream_ssl_module \

--with-file-aio\ --开启文件异步io,如果网站涉及到大量的io操作(例如图片站),使用这个选项会大大提高性能(linux内核需要在2.6.22之后)

--with-ipv6\ --启用ipv6支持

--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

--with-http_degradation_module --内存不足时,nginx将返回204或444给客户端。)

 

#make

#make install

 

  • Nginx 配置

 

 

安全基线加固

  • 文件属性权限修改:

#chmod 644 /etc/passwd #chmod 400 /etc/shadow #chmod 644 /etc/group

#chmod 640 /var/log/messages

  • 口令复杂度设置

编辑文件/etc/pam.d/system-auth,在文件中找到如下内容: #vi /etc/pam.d/system-auth password requisite pam_cracklib.so 将其修改为: password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 备注:至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8

 

  • 口令生存期配置

(1)、执行备份:

#cp -p /etc/login.defs /etc/login.defs_bak

(2)、修改策略设置,编辑文件/etc/login.defs(vi /etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加): PASS_MAX_DAYS 90 PASS_MIN_DAYS 10 PASS_WARN_AGE 7

 

  • 删除无关帐号参考步骤: (1).如果以下用户(lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody)没有被删除或锁定,可以使用如下命令对其进行操作: 删除用户 #userdel username 锁定用户: 1)修改配置文件锁定用户 修改/etc/shadow文件,用户名后密码字段列开头加*LK*,例如: nobody:*LK*:6445:::::: 2)使用命令锁定用户 #passwd -l username #锁定用户,只有具备超级用户权限的使用者方可使用 #passwd –d username #解锁用户,解锁后原有密码失效,登录设置新密码才能登录. #passwd -u username #解锁用户后,原密码仍然有效. (2)修改用户shell域为/bin/false #usermod -s /bin/false username #命令来更改相应用户的shell为/bin/false,其中[name]为要修改的具体用户名.
  • 登陆超时和文件权限设置

#vi /etc/profile

编辑以下放在文件最后:

 

TMOUT=300

#TMOUT按秒计算

export TMOUT

#以下这段放最后

umask 027

 

 

  • 检查是否使用PAM认证模块禁止wheel组之外的用户su为root

加固参考步骤:

第一步:编辑su文件(vi /etc/pam.d/su) Redhat系统适用、CentOs系统供参考) 1)redhat5.x和redhat6.x在文件开头加入如下两行(有则修改,没有则添加): auth sufficient pam_rootok.so auth required pam_wheel.so use_uid 注意:auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开 第二步:将用户添加到wheel组 注意:(第一步加固表明只有wheel组中的用户才能使用su命令切换到root用户,因此必须将需要切换到root的用户添加到wheel组,以使它可以使用su命令成为root用户) 添加方法:

#usermod -G wheel username

(username为需要添加至wheel组的用户名称)

备注:如果系统不存在wheel组,则新增,新增方法:groupadd wheel。

 

 

#keytool -genkey -v -alias ccssoft -keyalg RSA -keysize 2048 -keystore /root/ssl/jboss.keystore -validity 36500

 

#keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keysize 2048 -keystore /root/ssl/my.p12 -validity 36500

 

#keytool -export -alias client -keystore /root/ssl/my.p12 -storetype PKCS12 -storepass ccssoft -rfc -file /root/ssl/my.cer

 

#keytool -import -v -file /root/ssl/my.cer -keystore /root/ssl/jboss.keystore

 

#keytool -list -keystore /root/ssl/jboss.keystore

 

#keytool -keystore /root/ssl/jboss.keystore -export -alias ccssoft -file /root/ssl/CA.cer

【重要】防止文件夹误删除操作

防止粗心删库跑路

 

  • 解压

#tar zxvf safe-rm-0.12.tar.gz

  • 替换rm 路径:/bin/rm /usr/bin/rm

#mv safe-rm-0.12/safe-rm /usr/local/bin/rm -f

#chown root:root /usr/local/bin/rm

  • 设置环境变量

#vi /etc/profile

加入以下内容:

PATH=/usr/local/bin:/bin:/usr/bin:$PATH

  • 文件和文件夹保护白名单

#vi /etc/safe-rm.conf

加入以下参考的白名单,具体情况以实际主机部署和需求为准

/etc/safe-rm.conf

/

/bin

/boot

/dev

/etc

/home

/initrd

/lib

/lib64

/proc

/root

/sbin

/sys

/usr

/usr/bin

/usr/include

/usr/lib

/usr/local

/usr/local/bin

/usr/local/include

/usr/local/sbin

/usr/local/share

/usr/sbin

/usr/share

/usr/src

/var

/usr/lib64

/usr/java

 

  • 配置生效

#source /etc/profile

Syslog/ rsyslog配置

  • 编辑文件 /etc/syslog.conf 或者 /etc/rsyslog.conf,增加如下内容:

#vi /etc/rsyslog.conf *.* @Syslog日志服务器IP (注意:*和@之间存在的是tab键,非空格。)

*.err;kern.debug;daemon.notice /var/log/messages

redhat5.x之前编辑文件/etc/syslog.conf、redhat6.x编辑文件/etc/rsyslog.conf,在文件新增一行(如果存在则无需新增)如下内容:

cron.* /var/log/cron

其中/var/log/cron为日志文件.如果该文件不存在,则创建该文件,命令为:

#touch /var/log/cron

同时修改其权限为640.命令为:

#chmod 640 /var/log/cron

  • 重启syslog或rsyslog服务:

#service syslog restart 或 /etc/init.d/syslog restart #service rsyslog restart 或 /etc/init.d/rsyslog restart

#chmod 640 /var/log/messages

JDK安装

  • 卸载openJDK

# rpm -qa|grep jdk

java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64

java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64

将查出的包卸载

# rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64

# rpm -e java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64

  • JDK 1.8的安装

上传文件

建立文件夹

#mkdir /usr/java

解压

#tar –xzvf jdk-8u74-linux-x64.tar.gz

建立软连接

#ln -s /usr/java/jdk1.8.0_181/ /usr/java/j2sdk1.8

编辑/etc/profile,

#vi /etc/profile

加入以下

JAVA_HOME=/usr/java/j2sdk1.8

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH

SNMP客户端安装

#yum install net-snmp-utils

执行snmpwalk命令查看是否安装成功

#snmpwalk

yum安装之后,任意目录下都可随时执行snmpwalk,不用再进入snmp工具目录

Linux系统防火墙策略

一般的策略是默认filter 进来的请求丢弃,然后按照白名单开放,以保证系统安全和躲开漏洞扫描。

CDH集群防火墙参考策略

#vi /etc/sysconfig/iptables

 

*filter

#默认IN策略都是drop

:INPUT DROP [0:0]

#默认出的策略都是accept

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#允许ICMP

-A INPUT -p icmp -j ACCEPT

#信任本机

-A INPUT -i lo -j ACCEPT

-A INPUT -s 127.0.0.1/32 -j ACCEPT

-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

-A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#开放高位端口,这里部分端口由于是CDH开放的端口,这些端口不允许外部服务器访问,所以拆除多个ip段,这个按照扫描结果整改

-A INPUT -p tcp --dport 9000:10999 -j ACCEPT

-A INPUT -p tcp --dport 11001:65500 -j ACCEPT

-A INPUT -p udp --dport 9000:10999 -j ACCEPT

-A INPUT -p udp --dport 11001:65500 -j ACCEPT

#ssh 30022 kafka:9092 远程访问端口,实际上可以去掉不必要的端口

-A INPUT -p tcp -m multiport --dports 30022,22,23,21,9092,10050,10051,10052 -j ACCEPT

#以下都是备注,实际是不开放端口,否则失去防火墙意义

#CM端口

#-A INPUT -p tcp -m multiport --dports 8087,9999,9998,10101,7184,7185,8084,8091,9995,9994,8086,9997,9996,10001 -j ACCEPT

#HDFS

#-A INPUT -p tcp -m multiport --dports 50020,1004,1006,50475,8020,8022,50070,50470,8485,8480 -j ACCEPT

#-A INPUT -p tcp -m multiport --dports 8481,2049,4242,111,50079,50579,14000,14001,50090,50495 -j ACCEPT

#YARN

#-A INPUT -p tcp -m multiport --dports 8032,8030,8031,8033,8088,8090,8042,8044,8041,8040,10020,19888,19890,10033 -j ACCEPT

#hive

#-A INPUT -p tcp -m multiport --dports 3306,9083,10000,10002,50111 -j ACCEPT

#habse

#-A INPUT -p tcp -m multiport --dports 8085,9090,9095,60000,60010,60020,60030 -j ACCEPT

#cdh集群互相信任可以访问,将集群所有的ip都写进来

-A INPUT -s ip/32 -j ACCEPT

#以下这些参考上面的,按照白名单开放ip地址列表

-A INPUT -s ip/32 -j ACCEPT

COMMIT

 

修改后重启防火墙

#service iptables restart

注意rhel7.x的命令不一样

 

Oracle数据库防火墙策略

# Generated by iptables-save v1.4.7 on Thu Dec 28 16:56:39 2017

*filter

:INPUT DROP [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -s 127.0.0.1/32 -j ACCEPT

#开放端口列表 52632 1521 数据库 30022 22 23 远程访问端口

-A INPUT -p tcp -m multiport --dports 30022,22,23,10050,52632,1521 -j ACCEPT

-A INPUT -p udp -m multiport --dports 30022,22,23,10050,52632,1521 -j ACCEPT

#-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT

#-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 52632 -j ACCEPT

--开放高位端口

-A INPUT -p tcp --dport 9000:65500 -j ACCEPT

-A INPUT -p udp --dport 9000:65500 -j ACCEPT

#ip地址白名单

-A INPUT -s ip/32 -j ACCEPT

 

#集群内的所有ip允许访问

-A INPUT -s ip/32 -j ACCEPT

#注意修改eth1:1的IP(169.254.98.194)

-A INPUT -s ip/32 -j ACCEPT

COMMIT

数据库相关

待补充

Oracle11g客户端安装

方法1 rpm包安装

  • Root用户下建立oracle用户,#oracle用户在安装时已经创建好,该步骤忽略

#groupadd -g 701 oinstall

#groupadd -g 702 dba

#useradd -g oinstall -G dba oracle

#passwd oracle

  • 传文件
  • #2、root用户进行包安装

#rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

#rpm -ivh oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm

#rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

#rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

#rpm -ivh oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm

#rpm -ivh oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm

  • #3、root用户创建一条软连接:

#ln -s /usr/lib/oracle/11.2/client64/bin/sqlplus /usr/bin/sqlplus

  • #4、root用户创建tnsame文件夹路径

#mkdir -p /usr/lib/oracle/11.2/network/admin

#chown -R oracle:oinstall /usr/lib/oracle/11.2/network

  • Oracle用户配置环境变量,

#vi ~/.bash_profile

增加以下内容:

LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/oracle/11.2/client64/lib

export ORACLE_HOME=/usr/lib/oracle/11.2

export TNS_ADMIN=/usr/lib/oracle/11.2/network/admin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

执行让修改生效

#source ~/.bash_profile

 

  • root用户

#vi /etc/ld.so.conf

加入以下内容

/usr/lib/oracle/11.2/client64/lib

执行让修改生效

#/sbin/ldconfig

备注,解决问题:

#sqlplus /nolog 系统报错

sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

 

  • 验证

Oracle用户,执行sqlplus命令,配置/usr/lib/oracle/11.2/network/admin测试连接,例如:

#vi /usr/lib/oracle/11.2/network/admin/tnsnames.ora

输入链接串,注意test

test=

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 端口))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = SID)

)

)

 

你可能感兴趣的:(运维)