创建用户
#groupadd xxxx
#adduser -g xxxx xxxx
#passwd xxxx
输入2次密码
#id xxxx
#usermod -G wheel xxxx
修改主机名和HOSTS文件
主机名字不要为localhosts
编辑/etc/sysconfig/network 文件,给主机启用一个全网唯一的名字
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xxx
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
插入以下内容:
echo 655360 > /proc/sys/fs/file-max
#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 这个文件
#vi /etc/systemd/system.conf
DefaultLimitNOFILE=1024000
DefaultLimitNPROC=1024000
NTP时钟同步
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
#crontab –e
编辑如下:
0 12 * * * /usr/sbin/ntpdate -u 132.122.132.33
关闭SELINUX和防火墙
ptables -F
service iptables stop
chkconfig iptables off
编辑selinux配置文件/etc/selinux/config修改 为SELINUX=disabled
setenforce 0
getenforce (查看是否已经关闭)
#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窗口模式
此设置可以减少操作系统本身内存和CPU的占用
vi /etc/inittab
改成命令行模式:
id:3:initdefault:
执行 init 3即可关闭桌面
执行指令 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
/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 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&
#vncserver
第一次要设置密码;可以重复开多个server,可以在不同用户下启动属于特定用户的VNC
#vncpasswd //修改vnc密码
停止VNC服务
#vncserver -kill :1 (注意kill后面有空格)
#vncserver -kill :2
…………
vnc客户端可以用IE登陆IP:5801或IP:5802,……
路由配置
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
优点是不用每台都挂载iso,节省空间。
#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升级以及安全加固
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用户
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
zconf.h
zlib.h
zutil.c
zutil.h
tar -xvf openssl-fips-2.0.16.tar.gz
cd openssl-fips-2.0.16
./config
make
make install
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
#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 –V
#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]
service sshd restart
待确认新升级的OpenSSH版本可以正常使用时,然后停止telnet服务
(修改配置文件将vi /etc/xinetd.d/telnet文件中的
disable = no
修改为 disable = yes
)
重启服务
/etc/init.d/xinetd restart
关闭telnet服务【安全要求】
出于安全需求,所有操作完毕后,需要关闭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++
# tar jxf expat-2.2.6.tar.bz2 #cd expat-2.2.6/ # ./configure --prefix=/usr/local/expat
# make && make install
#tar zxvf apr-1.6.5.tar.gz
#cd apr-1.6.5
#./configure --prefix=/usr/local/apr
#make && make install
# 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
# tar zxvf pcre-8.42.tar.gz
#cd pcre-8.42
#./configure --prefix=/usr/local/pcre
#make && make install
#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安装以及安全加固【按需】
#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
# rpm -qa |grep vsftp
#service vsftpd stop
#rpm -e vsftpd-2.2.2*(查出得包名字)
#yum install gcc gcc-c++ db4-utils pam-devel libcap libcap-devel
注意,是不用configuer的,默认
# tar xvfz vsftpd-3.0.3.tar.gz
# cd vsftpd-3.0.3
#make
# make install
安装后,程序默认的配置文件在/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:创建虚拟用户文本文件,添加虚拟用户和密码
#vi /etc/vsftpd/vuser.txt
奇数行是用户名,偶数是密码,比如:
test
1234
生成虚拟数据库文件
#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
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
#/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.”
控制虚拟用户的访问,虚拟用户的主配置文件输入(见上面配置文件)
#user_config_dir=/etc/vsftpd/vsftpd_user_conf(当然可以建立在其他的地方哦!)
#mkdir /etc/vsftpd/vsftpd_user_conf
#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/ #### 指定虚拟用户在系统
# 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
# chmod +x /etc/init.d/vsftpd
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
# yum -y install libnfnetlink-devel*
# 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
# 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 51
Nginx安装配置
# groupadd nginx
# useradd -g nginx -s /sbin/nologin nginx
#yum install gcc gcc-c++
#tar zxvf pcre-8.42.tar.gz
#cd pcre-8.42
#./configure --prefix=/usr/local/pcre
#make && make install
# 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
安全基线加固
#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
#vi /etc/profile
编辑以下放在文件最后:
TMOUT=300
#TMOUT按秒计算
export TMOUT
#以下这段放最后
umask 027
加固参考步骤:
第一步:编辑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
#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配置
#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
#service syslog restart 或 /etc/init.d/syslog restart #service rsyslog restart 或 /etc/init.d/rsyslog restart
#chmod 640 /var/log/messages
JDK安装
# 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
上传文件
建立文件夹
#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包安装
#groupadd -g 701 oinstall
#groupadd -g 702 dba
#useradd -g oinstall -G dba oracle
#passwd oracle
#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
#ln -s /usr/lib/oracle/11.2/client64/bin/sqlplus /usr/bin/sqlplus
#mkdir -p /usr/lib/oracle/11.2/network/admin
#chown -R oracle:oinstall /usr/lib/oracle/11.2/network
#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
#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)
)
)