nginx访问selinux权限问题
今天在服务器上面安装phpcms,安装过程中提示不可写,于是设置了权限,但是依然是不可写的状态,想了下可能是selinux的问题
设置了下
sudo chcon -R -t httpd_sys_content_t phpcmstest
ok
今天在服务器上面安装phpcms,安装过程中提示不可写,于是设置了权限,但是依然是不可写的状态,想了下可能是selinux的问题
设置了下
sudo chcon -R -t httpd_sys_content_t phpcmstest
ok
1.新建用户
useradd xxx
#设置密码
passwd xxx
2.设置sudo
visudo
root ALL=(ALL) ALL#找到这行添加如下行
xxx ALL=(ALL) ALL
安装两个软件,bash-completion(命令补全),dos2unix(dos格式文件转换成unix格式)
3.修改ssh
vi /etc/ssh/sshd_config
#禁用root远程登录
PermitRootLogin no
PermitEmptyPasswords no #禁止空密码登录
#不要支持闲置会话,并配置 Idle Log Out Timeout 间隔:
ClientAliveInterval 600 # (Set to 600 seconds = 10 minutes)
ClientAliveCountMax 0
#禁用用户的 .rhosts 文件:
IgnoreRhosts yes
Port 22#这个先留着免得配置错误导致的错误
Port 22155
4.设置防火墙,放开刚刚设置的ssh端口,和需要开放的端口
防火墙设置可以看http://blog.csdn.net/scchary/article/details/46482777
5.消除登陆信息,在登陆的时候会提示是什么系统之类的信息,隐藏起来
sudo cp /etc/issue /etc/issue.bak#备份下
sudo cp /etc/issue.net /etc/issue.net.bak
sudo cp /etc/redhat-release /etc/redhat-release.bak
sudo echo "Welcome" > /etc/issue#权限不足,用root直接改应该可以,直接vi编辑算了
sudo vi /etc/issue
sudo vi /etc/issue.net
sudo vi /etc/redhat-release
6.关闭不需要的服务,就剩下这几个了,就关了几个
auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #与selinux有关
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #定时任务
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #防火墙
iscsi 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 #一种新存储技术
iscsid 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 #一种新存储技术
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:关闭 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #网络基础服务
nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
php-fpm 0:关闭 1:关闭 2:启用 3:启用 4:关闭 5:启用 6:关闭
restorecond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #与selinux相关
rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #系统日志关键服务
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭 #设备管理
7.同步系统时间
sudo yum install ntpdate#安装更新时间软件
sudo ntpdate cn.pool.ntp.org;sudo hwclock --systohc#更新时间并写入bios
sudo crontab -e
11 11 * * * /usr/sbin/ntpdate cn.pool.ntp.org;/usr/sbin/hwclock --systohc#设置每天的11:11更新时间
8.注释不需要的用户和组
#注销用户
sudo 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
#注销用户
sudo vi /etc/group
#adm:x:4:adm,daemon
#lp:x:7:daemon
#uucp:x:14:
#games:x:20:
#dip:x:40:
#ftp:x:50:
9.调整文件描述大小
echo "ulimit -SHn 65535" >> /etc/rc.local
cp /etc/profile /etc/profilebak2
ulimit -c unlimited
ulimit -s unlimited
ulimit -SHn 65535
source /etc/profile #使配置立即生效
ulimit -a #显示当前的各种用户进程限制
#配置完成之后普通用户登录会报错 -bash: ulimit: open files: cannot modify limit: 不允许的操作
可以/etc/security/limits.conf在加上
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535
10.调整记录历史命令的条数
vi /etc/profile #在文件末尾添加以下内容
找到 HISTSIZE=1000 改为 HISTSIZE=50
11.禁止使用Ctrl+Alt+Del快捷键重启服务器
sudo vi /etc/init/control-alt-delete.conf
#注释下面两行
#start on control-alt-delete
#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
12.禁止用户su到root,只允许wheel组用户su到root
sudo vi /etc/pam.d/su
#找到下面这句,去掉注释
auth required pam_wheel.so use_uid
13.系统参数优化
vi /etc/sysctl.conf #末尾添加如下参数 (备注:内核不够熟,加上注解大家谨慎选择使用)
net.ipv4.tcp_syncookies = 1 #1是开启SYN Cookies,当出现SYN 等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,默认是0关闭 net.ipv4.tcp_tw_reuse = 1 #1是开启重用,允许将TIME_AIT sockets重新用于新的TCP连接,默认是0关闭
net.ipv4.tcp_tw_recycle = 5 #TCP失败重传次数,默认是15,减 少次数可释放内核资源
net.ipv4.tcp_max_syn_backlog = 10240 #进入SYN包的最大请求队列,默认 是1024
net.core.netdev_max_backlog = 10240 #允许送到队列的数据包最大设备队 列,默认300
net.core.somaxconn = 2048 #listen挂起请求的最大数量,默认 128
net.core.wmem_default = 8388608 #发送缓存区大小的缺省值
net.core.rmem_default = 8388608 #接受套接字缓冲区大小的缺省值 (以字节为单位)
net.core.rmem_max = 16777216 #最大接收缓冲区大小的最大值
net.core.wmem_max = 16777216 #发送缓冲区大小的最大值
net.ipv4.tcp_synack_retries = 2 #SYN-ACK握手状态重试次数,默认5
net.ipv4.tcp_syn_retries = 2 #向外SYN握手重试次数,默认4
net.ipv4.tcp_max_orphans = 3276800 #系统中最多有多少个TCP套接字不 被关联到任何一个用户文件句柄上,如果超出这个数字,孤儿连接将立即复位并打印警告信息
net.ipv4.tcp_mem = 94500000 915000000 927000000
#net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;
#net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段;
#net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。内存单位是页,可根据 物理内存大小进行调整,如果内存足够大的话,可适当往上调。上述内存单位是页,而不是字节。
net.ipv4.ip_local_port_range = 20480 65535 #(表示用于向外连接的端口范围。缺省情况下很小:32768到61000 注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!
14.自动注销
vi /etc/profile
#在"HISTSIZE="后面加入下面这行:
TMOUT=300 #300秒
source /etc/profile#立即生效
15.锁定系统重要的文件
主要作用:防止未经许可的删除或添加用户和分组
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow
16.给系统服务端口列表文件加锁
主要作用:防止未经许可的删除或添加服务
chattr +i /etc/services
17.修改init目录文件执行权限
chmod -R 700 /etc/init.d/*
18.修改部分系统文件的SUID和SGID的权限:
chmod a-s /usr/bin/chage
chmod a-s /usr/bin/gpasswd
chmod g-s /usr/bin/wall
chmod a-s /usr/bin/chfn
chmod a-s /usr/bin/chsh
chmod a-s /usr/bin/newgrp
chmod g-s /usr/bin/write
chmod a-s /usr/sbin/usernetctl
chmod a-s /usr/sbin/traceroute#这个在6.6里面没有
chmod a-s /bin/mount
chmod a-s /bin/umount
chmod g-s /sbin/netreport
wall,write,netreport三个是SGID,这几个命令只用过mount和umount.....
参考:http://www.jb51.net/article/29873.htm
http://blog.csdn.net/zqtsx/article/details/9344709
http://blog.csdn.net/yunweigege/article/details/42002651
http://blog.csdn.net/knight_zhen/article/details/46444451
1.配置虚拟机
[webserver@webserver6602 ~]$ sudo vi /etc/nginx/conf.d/webserver.conf
server {
listen 80;
server_name webserver.com;
#charset koi8-r;
access_log /var/log/nginx/webserver.access.log main;
error_log /var/log/nginx/webserver.error.log warn;
root /home/webserver/html;
location / {
#root /usr/share/nginx/html;
index index.html index.htm index.php;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
#root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
2.打开selinux
参考:http://blog.csdn.net/qidizi/article/details/41291397
setsebool -P httpd_read_user_content 1 #只设置这个就好了
setsebool -P httpd_enable_homedirs 1
3.设置文件权限
chmod o+x /home/webserver
chmod o+x /home/webserver/html
4.重启nginx就ok了
今天在自己电脑上新装了centos6.6虚拟机,然后装了nginx,没有进行任何其他设置,然后就发现只能在centos上面可以访问nginx,看了下iptable的规则
[root@centos6 ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sun Jul 26 15:53:13 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5819:366868]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sun Jul 26 15:53:13 2015
看上去好像没有问题啊,默认策略也是接受,看到最后的两句,不明白是什么意思,搜了下原来是
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。
记录下,参考http://zhidao.baidu.com/link?url=1bwvdaSb6sKL_FzefyzVFd5GYoZOE4LMNiSG6Oe4WTGQb4ygdzWXVAlitJqLqQcjG1Zwg_xC1_6-Iflwq69il_
之前都是把服务器搭好,在用php输出一个phpinfo就算是搭建成功了,要搭的环境是要实际运行的,所以出现了一些问题,主要是selinux,虽说直接关掉selinux就可以,但是感觉还是开着好一点,于是。。。。
要共享的是test用户家目录家的www文件夹(/home/test/www)
1.环境都搭好之后,开始共享文件,因为是共享家目录,所以不需要改samba配置文件,增加一个samba用户
smbpasswd -a test
#下面需要设置下用户密码
设置selinux
setsebool -P samba_enable_home_dirs on
ok,可以共享了,进入共享目录,操作文件,没有问题,
2.然后设置nginx共享,可以参见另一篇文章http://blog.csdn.net/scchary/article/details/47017475
然后ok了
3.因为我是用的thinkphp,所以php会自己创建文件,这时候就不行了,权限是ok的,是selinux的问题
chcon -t httpd_sys_content_t -R /home/test/www
参考自:http://www.linuxidc.com/Linux/2012-04/58440.htm
ok
4.再就发现samba不能共享了,又是selinux
setsebool -P samba_export_all_ro on
好了
参考网址http://os.51cto.com/art/201204/332440.htm
5.再就发现thinkphp创建的文件所属组和用户都是 apache (我的php-fpm运行身份是apache:apache),我登陆samba的用户是test,不能操作那些生成的文件,于是想起了SGID
chmod g+x -R /home/test/www
ok