邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

Linux设定ssh在port22及23两个端口监听
Linux设定ssh在port22及23两个端口监听

[root@www ~]# vim /etc/ssh/sshd_config
Port 22
Port 23    <==注意喔!要有两个 Port 的设定才行!
[root@www ~]# /etc/init.d/sshd restart

但是这一版的 CentOS 却将 SSH 规范 port 仅能启动于 22 而已,所以此时会出现一个 SELinux 的错误!
根据 setroubleshoot 的提示,我们必须要自行定义一个 SELinux 的规则放行模块才行!


# 1. 于 /var/log/audit/audit.log 找出与 ssh 有关的 AVC 信息,并转为本地模块
[root@www ~]# cat /var/log/audit/audit.log | grep AVC | grep ssh | audit2allow -m sshlocal > sshlocal.te  <==扩展名要是 .te 才行

[root@www ~]# grep sshd_t /var/log/audit/audit.log | audit2allow -M sshlocal  <==sshlocal 就是刚刚建立的 .te 檔名
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i sshlocal.pp   <==这个指令会编译出这个重要的 .pp 模块!

# 2. 将这个模块加载系统的 SELinux 管理当中!
[root@www ~]# semodule -i sshlocal.pp

# 3. 再重新启动 sshd 并且观察埠口吧!
[root@www ~]# /etc/init.d/sshd restart
[root@www ~]# netstat -tlunp | grep ssh

非标准端口的连接方式
ssh -p 23 root@localhost
Linux最大线程数限制及当前线程数查询
/proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值

/proc/sys/kernel/thread-max

max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程

/proc/sys/vm/max_map_count
linux下制作不用密码可立即登入的 ssh 用户
1. 客户端建立两把钥匙:
//[vbirdtsai@clientlinux ~]$ ssh-keygen [-t rsa|dsa] <==可选 rsa 或 dsa
[vbirdtsai@clientlinux ~]$ ssh-keygen  <==用预设的方法建立密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vbirdtsai/.ssh/id_rsa): <==按 enter
Created directory '/home/vbirdtsai/.ssh'. <==此目录若不存在则会主动建立
Enter passphrase (empty for no passphrase): <==按 Enter 不给密码
Enter same passphrase again: <==再输入一次 Enter 吧!
Your identification has been saved in /home/vbirdtsai/.ssh/id_rsa. <==私钥档
Your public key has been saved in /home/vbirdtsai/.ssh/id_rsa.pub. <==公钥档
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 vbirdtsai@clientlinux.centos.vbird

[vbirdtsai@clientlinux ~]$ ls -ld ~/.ssh; ls -l ~/.ssh
drwx------. 2 vbirdtsai vbirdtsai 4096 2011-07-25 12:58 /home/vbirdtsai/.ssh
-rw-------. 1 vbirdtsai vbirdtsai 1675 2011-07-25 12:58 id_rsa      <==私钥档
-rw-r--r--. 1 vbirdtsai vbirdtsai  416 2011-07-25 12:58 id_rsa.pub  <==公钥档
2. 将公钥档案数据上传到服务器上:
[vbirdtsai@clientlinux ~]$ scp ~/.ssh/id_rsa.pub dmtsai@192.168.100.254:~
3. 将公钥放置服务器端的正确目录与文件名:
# 1. 建立 ~/.ssh 档案,注意权限需要为 700 喔!
[dmtsai@www ~]$ ls -ld .ssh
ls: .ssh: 没有此一档案或目录
# 由于可能是新建的用户,因此这个目录不存在。不存在才作底下建立目录的行为

[dmtsai@www ~]$ mkdir .ssh; chmod 700 .ssh
[dmtsai@www ~]$ ls -ld .ssh
drwx------. 2 dmtsai dmtsai 4096 Jul 25 13:06 .ssh
# 权限设定中,务必是 700 且属于使用者本人的账号与群组才行!

# 2. 将公钥档案内的数据使用 cat 转存到 authorized_keys 内
[dmtsai@www ~]$ ls -l *pub
-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:05 id_rsa.pub <==确实有存在

[dmtsai@www ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[dmtsai@www ~]$ chmod 644 .ssh/authorized_keys
[dmtsai@www ~]$ ls -l .ssh
-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:07 authorized_keys
# 这个档案的权限设定中,就得要是 644 才可以!不可以搞混了!

Client 必须制作出 Public & Private 这两把 keys,且 Private 需放到 ~/.ssh/ 内;
Server 必须要有 Public Key ,且放置到用户家目录下的 ~/.ssh/authorized_keys,同时目录的权限 (.ssh/) 必须是 700 而档案权限则必须为 644 ,同时档案的拥有者与群组都必须与该账号吻合才行。
私房菜服务器架设篇之防火墙学习笔记
Tcp Wrappers

1.哪些服务支持
由super daemon (xinetd) 所管理的服务
支持libwrap.so模块的服务
yum install xinetd
chkconfig xinetd on //要先进行此命令才能看到下面的
chkconfig --list //列出的结果都可以使用tcp wrappers 来管理

ldd $(which rsyslogd sshd xinetd httpd) 
for name in rsyslogd sshd xinetd httpd;do echo $name;ldd $(which $name) |grep libwrap;done//是否包含libwrap这个库

2. /etc/hosts.{allow|deny}的设置方式 
先以/etc/hosts.allow进行优先比较,该规则符合就予以放行
再以/etc/hosts.deny比对,规则符合就予以抵挡
若不在这两个文件内,亦即规则都不符合,最终则予以放行

例子:开放本机的127.0.0.1可以进行任何本机的服务,让局域网(192.168.1.0/24可以使用rsync,同时10.0.0.100也能够使用rsync,但其他来源则不允许使用rsync\
cat /etc/xinetd.d/rsysc

vim /etc/hosts.allow
All:127.0.0.1
rsync:192.168.1.0/255.255.255.0 10.0.0.100

vim /etc/hosts.deny
rsync:All



Linux的数据包过滤软件 iptables
1. 不同linux内核版本的防火墙软件 uname -a //查看内核版本
version2.0:使用ipfwadm
version2.2:使用ipchains这个防火墙机制
version2.4与2.6:主要使用iptables这个防火墙机制


2.iptables语法
iptables [-t tables] [-L] [-nv]
选项与参数:
-t:后面接table,例如nat或filter,若省略此项目,则使用默认的filter
-L:列出目前的table的规则
-n:不进行IP与HOSTNAME的反查,显示信息的速度会快很多
-v:列出更多的信息,包括通过该规则的数据包总位数,相关的网络接口

范例:列出filter table 3 条链的规则
iptables -L -n
范例:列出nat table 3 条链的规则
iptables -t nat -L -n

target:代表进行的操作,ACCEPT是放行,而REJECT则是拒绝,此外,尚有DROP(丢弃)的项目
prot:代表使用的数据包协议,主要有TCP、UDP及ICMP3中数据包格式
opt:额外的选项说明
source:代表此规则是针对哪个来源IP进行限制
destination:代表此规则是针对哪个目标IP进行限制

iptables-save [-t table] //会列出完整的防火墙规则,只是并没有格式化输出而已
选项与参数:
-t:可以仅针对某些表格来输出,例如仅针对NAT或Filter等
iptables-save

iptables [-t tables] [-FXZ]
选项与参数:
-F:清除所有的已定制的规则
-X:除掉所有用户自定义的chain(应该说的是tables)
-Z:将所有的chain的计数与流量统计都归零

范例:清除本机防火墙(filter)的所有规则
iptables -F
iptables -X
iptables -Z


定义默认策略
当数据包不在我们设置的规则之内时,则该数据包的通过与否,是以Policy的设置为准

iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
选项与参数:
-P:定义策略(Policy)。注意,这个P为大写
ACCEPT:该数据包可接受
DROP:该数据包直接丢弃,不会让Client端知道为何丢弃

范例:将本机的INPUT设置为DROP,其他设置未ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables-save

数据包的基础比对:ip、网络及接口设备
iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG]
选项与参数:
-AI 链名:针对某条链进行规则的插入或累加
 -A:新增加一条规则,该规则增加在原规则的最后面。例如原来已经有四条规则,使用-A就可以加上第五条规则
 -I:插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。例如原本有四条规则,使用-I则该规则变成第一条,原本四条变成2-5条
 链:有input/output/forward等,此链名称又与-io有关

-io:网络接口,设置数据包进出的接口规范
-i:数据包所进入的那个网络接口,例如eth0、lo等接口。需要INPUT链配合
-o:数据包所传出的那个网络接口,需要与output配合

-p:协定:设置此规则适用于哪种数据包格式
   主要的数据包格式有:tcp udp icmp 及 all

-s:来源 IP/网络,设置此规则之数据包的来源地址,可指定当单纯的ip或网络,例如:
IP:192.168.0.100
网络:192.168.0.0/24 192.168.0.0/255.255.255.0
若规范为不许时,则加上!即可,例如 -s ! 192.168.100.0/24 表示不接受192.168.100.0/24

-d:目标 IP/网络 同 -s ,只不过这里指的是目标的IP或网络

-j:后面接操作,主要的操作有接受ACCEPT 丢弃DROP、拒绝REJECT 及记录LOG

范例:设置lo成为受细嫩的设备,亦即进出lo的数据包都予以接受
iptables -A INPUT -i lo -j ACCEPT
范例:只要是来自网络的192.168.100.0/24的数据包就通通接受
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT
范例:只要是来自192.168.100.10就接受,但来自192.168.100.230 这个恶意来源的就丢弃
iptables -A INPUT -i eth1 -s 192.168.100.10 -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.100.230 -j DROP
iptables-save //查看

如果已经放行了192.168.100.0/24,那这个 192.168.100.230 -j DROP 就不会被用到了,如果想要记录
iptables -A INPUT -s 192.168.2.200 -j LOG
iptables -L -n


TCP、UDP的规则比对:针对端口设置

iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网络] [--sport 端口范围] [-d 目标IP/网络] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
选项与参数:
--sport 端口范围:限制来源的端口号码,端口号码可以是连续的,例如1024:65535
--dport 端口范围:限制目标的端口号码
想要使用--dport --sport时,需要加上-p tcp或-p udp的参数才能成功

范例:想要连接进入本机port 21 的数据包都阻挡掉
iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
范例:想连接到本台主机的网上邻居(udp port 137,138 tcp port 139 445)就放行
iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
范例:只要来自192.168.1.0/24的1024:65535端口的数据包,且想要连接到本机的ssh port就予以阻挡,可以这样做
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65535 --dport ssh -j DROP
范例:将来自任何地方来源 port 1:1023的主动连接到本机端的1:1023连接丢弃 ,主动连接的SYN标志
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP


iptables 外挂模块:mac与state
iptables -A INPUT [-m state] [--state 状态]
选项与参数:
-m:一些iptables的外挂模块,主要常见的有
state:状态模块
mac:网卡硬件地址
--state:一些数据包的状态,主要有
INVALID:无效的数据包,例如数据破损的数据包状态
ESTABLISHED:已经连接成功的连接状态
NEW:想要新建立连接的数据包状态
RELATED:这个最常用、表示这个数据包是与主机发送出去的数据有关

范例:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据就丢弃
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
范例:针对局域网内的aa:bb:cc:dd:ee:ff 主机开放其连接
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT   //--mac-source:就是来源主机的mac



ICMP数据包规则的比对:针对是否响应ping来设置
iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
选项与参数:
--icmp-type:后面必须要接ICMP的数据包类型,也可以使用代号,例如 8 代表 echo request 的意思
范例:让0,3,4,11,12,14,16,18的icmp type可以进入主机
vim somefile
#!/bin/bash
icmp_type = "0,3,4,11,12,14,16,18"
for typeicmp in $icmp_type
do
iptables -A INPUT -i eth0 -p icmp --icmp-type $icmp_type -j ACCEPT
done
------
sh somefile



超简单的客户端防火墙设计与防火墙规则存储
规则: 规则清零 默认策略 信任本机 回应数据包 信任用户
vim bin/firewall.sh
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin/:/usr/bin;export PATH
#1.清除规则
iptables -F
iptables -X
iptables -Z
#2.设置策略
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#3-5 指定各项规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT eth0 -s 192.168.0.1/24 -j ACCEPT0
#6 写入防火墙规则配置文件
/etc/init.d/iptables save
----------------
sh bin/firewall.sh //执行脚本



IPv4的内核管理功能:/proc/sys/net/ipv4/*

1. /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
当启动SYN Cookie 时,主机在发送SYN/ACK确认数据包前,会要求Client端在短时间内回复一个序号,包括IP PORT等。若正确,则为可信任的。
不适合用在负载很高的服务器内。

2./proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
内核取消ping回应的设置值有两个,分别是/proc/sys/net/ipv4内的icmp_echo_ignore_broadcasts(仅有ping broadcast地址时才取消ping的回应)及icmp_echo_ignore_all(全部的ping都不回应).建议设置icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

3./proc/sys/net/ipv4/conf/网络接口/*
例如 /proc/sys/net/ipv4/conf/eth0/内
rp_filter:称为你想路径过滤,可以通过分析网络接口的路由信息,配合数据包的来源地址,分析数据包是否为合理.不合理则予以丢弃,建议启动
log_martisans:这个设置数据可以用来启动记录不合法的ip来源的功能


设置单机防火墙的一个实例
外部网络使用eth0(如果是拨号,有可能使用ppp0)
内部网络使用eth1,且内部使用192.168.100.0/24这个class
主机默认开放的服务有www ssh https等
实际设置
iptables.rule:设置最基本的规则,包括清除防火墙规则、加载模块、设置服务可接受等.
iptables.deny:设置独挡某些而已主机的进入
iptables.allow:设置允许某些自定义的后门来源主机进入

mkdir -p /usr/local/action/iptables
cd /usr/local/action/iptables
vim iptables.rule
#!/bin/bash
# 请先输入您的相关参数,不要输入错误了!
  EXTIF="eth0"             # 这个是可以连上 Public IP 的网络接口
  INIF="eth1"              # 内部 LAN 的连接接口;若无则写成 INIF=""
  INNET="192.168.100.0/24" # 若无内部网域接口,请填写成 INNET=""
  export EXTIF INIF INNET

# 第一部份,针对本机的防火墙设定!##########################################
# 1. 先设定好核心的网络功能:
  echo "1" > /proc/sys/net/ipv4/tcp_syncookies
  echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
        echo "1" > $i
  done
  for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,\
send_redirects}; do
        echo "0" > $i
  done

# 2. 清除规则、设定默认政策及开放 lo 与相关的设定值
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
  iptables -F
  iptables -X
  iptables -Z
  iptables -P INPUT   DROP
  iptables -P OUTPUT  ACCEPT
  iptables -P FORWARD ACCEPT
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# 3. 启动额外的防火墙 script 模块
  if [ -f /usr/local/virus/iptables/iptables.deny ]; then
        sh /usr/local/virus/iptables/iptables.deny
  fi
  if [ -f /usr/local/virus/iptables/iptables.allow ]; then
        sh /usr/local/virus/iptables/iptables.allow
  fi
  if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
        sh /usr/local/virus/httpd-err/iptables.http
  fi

# 4. 允许某些类型的 ICMP 封包进入
  AICMP="0 3 3/4 4 11 12 14 16 18"
  for tyicmp in $AICMP
  do
    iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
  done

# 5. 允许某些服务的进入,请依照你自己的环境开启
# iptables -A INPUT -p TCP -i $EXTIF --dport  21 --sport 1024:65534 -j ACCEPT # FTP
# iptables -A INPUT -p TCP -i $EXTIF --dport  22 --sport 1024:65534 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF --dport  25 --sport 1024:65534 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport  80 --sport 1024:65534 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65534 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65534 -j ACCEPT # HTTPS


# 第二部份,针对后端主机的防火墙设定!###############################
# 1. 先加载一些有用的模块
  modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack 
ip_conntrack_ftp ip_conntrack_irc"
  for mod in $modules
  do
      testmod=`lsmod | grep "^${mod} " | awk '{print $1}'`
      if [ "$testmod" == "" ]; then
            modprobe $mod
      fi
  done

# 2. 清除 NAT table 的规则吧!
  iptables -F -t nat
  iptables -X -t nat
  iptables -Z -t nat
  iptables -t nat -P PREROUTING  ACCEPT
  iptables -t nat -P POSTROUTING ACCEPT
  iptables -t nat -P OUTPUT      ACCEPT

# 3. 若有内部接口的存在 (双网卡) 开放成为路由器,且为 IP 分享器!
  if [ "$INIF" != "" ]; then
    iptables -A INPUT -i $INIF -j ACCEPT
    echo "1" > /proc/sys/net/ipv4/ip_forward
    if [ "$INNET" != "" ]; then
        for innet in $INNET
        do
            iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
        done
    fi
  fi
  # 如果你的 MSN 一直无法联机,或者是某些网站 OK 某些网站不 OK,
  # 可能是 MTU 的问题,那你可以将底下这一行给他取消批注来启动 MTU 限制范围
  # iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
  #          --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# 4. NAT 服务器后端的 LAN 内对外之服务器设定
# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
#          -j DNAT --to-destination 192.168.1.210:80 # WWW

# 5. 特殊的功能,包括 Windows 远程桌面所产生的规则,假设桌面主机为 1.2.3.4
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --dport 6000 \
#          -j DNAT --to-destination 192.168.100.10
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --sport 3389 \
#          -j DNAT --to-destination 192.168.100.20

# 6. 最终将这些功能储存下来吧!
  /etc/init.d/iptables save
------------------------ 脚本end
 
 假如我要让一个 140.116.44.0/24 这个网域的所有主机来源可以进入我的主机的话,那么这个档案的内容可以写成这样:
  [root@www iptables]# vim iptables.allow
#!/bin/bash
# 底下则填写你允许进入本机的其他网域或主机啊!
  iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT

# 底下则是关于抵挡的档案设定法!
[root@www iptables]# vim iptables.deny
#!/bin/bash
# 底下填写的是『你要抵挡的那个咚咚!』
  iptables -A INPUT -i $EXTIF -s 140.116.44.254 -j DROP

[root@www iptables]# chmod 700 iptables.*



范例:假设对外的 IP 固定为 192.168.1.100 ,若不想使用伪装,该如何处理?
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100

范例:假设你的 NAT 服务器对外 IP 有好几个,那你想要轮流使用不同的 IP 时,又该如何设定?举例来说,你的 IP 范围为 192.168.1.210~192.168.1.220
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.210-192.168.1.220

范例:假设内网有部主机 IP 为 192.168.100.10 ,该主机是可对 Internet 开放的 WWW 服务器。你该如何透过 NAT 机制,将 WWW 封包传到该主机上?
假设 public IP 所在的接口为 eth0 ,那么你的规则就是:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80 

-j REDIRECT --to-ports <port number>
# 这个也挺常见的,基本上,就是进行本机上面 port 的转换就是了!
# 不过,特别留意的是,这个动作仅能够在 nat table 的 PREROUTING 以及
# OUTPUT 链上面实行而已喔!

范例:将要求与 80 联机的封包转递到 8080 这个 port
[root@www ~]# iptables -t nat -A PREROUTING -p tcp  --dport 80  -j REDIRECT --to-ports 8080
# 这玩意最容易在你使用了非正规的 port 来进行某些 well known 的协议,
# 例如使用 8080 这个 port 来启动 WWW ,但是别人都以 port 80 来联机,
# 所以,你就可以使用上面的方式来将对方对你主机的联机传递到 8080 啰!



私房菜服务器架设篇之selinux学习笔记
1.selinux的启动、关闭与查看
目前支持三种模式
enforcing //强制模式,运行中
permissive //宽容模式,运作中,debug模式
disabled // 关闭

显示目前selinux的模式
getenforce 
修改配置文件
vim /etc/selinux/config
实现selinux模式在enforcing与permissive之间切换
setenforce [0|1] //0转换为宽容模式1转换为强制模式



2.selinux type的修改
范例:将/etc/hosts 复制到root用户主目录,并查看相关的selinux的变化
cp /etc/hosts /root
ls -dZ /etc/hosts /root/hosts /root
范例:将/root/hosts 移动到/tmp下,并查看相关selinux类型文化
mv /root/hosts /tmp
ls -dZ /tmp /tmp/hosts

说明:单纯的复制,selinux的type字段会继承自目标目录,移动的话类型也会被移动过去
2.1 chcon
chcon [-R] [-t type] [-u user] [-r role] 文件
chcon [-R] --reference=范例文件 文件
选项与参数:
-R:遍历子目录也同时修改
-t:后面接安全性环境的类型字段,如httpd_sys_content_t
-u:后面接身份识别,如system_u
-r:后面接角色,例如system_r
--reference=范例文件,拿某个文件当范例来修改后续接的文件类型
范例:将刚刚的/tmp/hosts类型改为etc_t的类型
chcon -t net_conf_t /tmp/hosts
范例:以/var/spool/mail为依据,将/tmp/hosts修改成该类型
chcon --reference=/var/spool/mail /tmp/hosts
2.2 restorecon
restorecon [-Rv] 文件或目录
选项与参数:
-R:连同子目录一起修改
-v:将过程显示在屏幕上
范例
restorecon -Rv /root
2.3 semanage
系统记录在 /etc/selinux/targeted/contexts
semanage {login|user|port|interface|fcontext|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec
选项与参数:
fcontext:主要用在安全性环境方便,-l为查询的意思
-a:增加,可以增加一些目录的默认安全性环境类型设置
-m:修改
-d:删除
范例:查询一下/var/www的默认安全性环境设置为何
yum install policycoreutils-python
semanage fcontext -l | grep '/var/www'
范例:利用semanage设置/srv/action目录的默认安全性环境为public_content_t
mkdir /srv/action
ll -dZ /srv/action
semanage fcontext -l |grep '/srv'
semanage fcontext -a -t public_content_t "/srv/action(/.*)?"
semanage fcontext -l |grep '/srv/action'
cat /etc/selinux/targeted/contexts/files/file_contexts/local
restorecon -Rv /srv/action //尝试恢复默认值
ll -dZ /srv/action

3.selinux策略内的规则布尔值修订
3.1策略查询
yum install setools-console
seinfo [-Atrub]
选项与参数:
-A:列出selinux的状态,规则布尔值、身份识别、角色、类别等所有消息
-t:列出selinux的所有类别(type)种类
-r:列出selinux的所有角色(role)种类
-u:列出selinux的所有身份识别(user)种类
-b:列出所有规则的种类(布尔值)
范例一:列出selinux在此策略下的统计状态
seinfo
范例二:列出与httpd有关的规则(booleans)有哪些
seinfo -b | grep httpd

如果想要知道详细规则
sesearch [--all] [-s 主体类别] [-t 目标类别] [-b 布尔值]
选项与参数:
--all:列出该类别或布尔值的所有相关信息
-t:后面还要接类别,例如 -t httpd_t
-b:后面要接布尔值的规则,例如-b httpd_enable_ftp_server

范例一:找出目标文件资源类别为httpd_sys_content_t的相关信息
sesearch --all -t httpd_sys_content_t
范例二:查看httpd_enable_homedirs 这个布尔值规范了什么
sesearch -b httpd_enable_homedirs --all

3.2布尔值的查询与修改
getsebool [-a] [布尔值条款]
选项与参数:
-a:列出目前系统上面的所有布尔值条款设置为开启或关闭值
范例一查询本系统所有的布尔值设置情况
getsebool -a

setsebool [-P] 布尔值=[0|1]
选项与参数:
-P:直接将设置值写入配置文件,该设置数据未来会生效的
范例一:查询httpd_enable_homedirs 是否为on,如果不为on,则启动它
getsebool httpd_enable_homedirs
setsebool -P httpd_enable_homedirs=1
getsebool httpd_enable_homedirs

4.selinux日志文件记录所需的服务
4.1 setroubleshoot 将错误信息写入/var/log/messages/
setroubleshoot服务启动,centos6.x将 auditd与setroubleshoot整合在了auditd
yum install setroubleshoot setroubleshoot-server
/etc/init.d/auditd restart 
cat /var/log/messages/ |grep setroubleshoot

4.2 用email或在命令列上面直接提供setroubleshoot
vim /etc/setroubleshoot/setroubleshoot.cfg
修改
recipients = /var/lib/setroubleshoot/email_alert_recipients //大约81行
console = true //大约147行

vim /var/lib/setroubleshoot/email_alert_recipients
加入
root@localhost
your@email.address

/etc/init.d/auditd restart

npam命令详解

npam命令详解

npam [扫描类型] [扫描参数] [hosts地址与范围]

选项与参数:
[扫描类型]
-sT:扫描TCP数据包已建立的连接 conneted
-sS:扫描TCP数据包带有SYN标卷的数据
-sP:以ping的方式进行扫描
-sU:以UDP的数据格式进行扫描
-sO:以IP的协议进行主机的扫描
[扫描参数]
-pT:使用TCP里头的ping方式进行扫描,可以获知目前有几台计算机存在
-pI:使用实际的ping(带有IMCP数据包的)来进行扫描
-p:这个是port range,例如 1024-,80-1023,30000-60000等的使用方式[hosts地址与范围]
192.168.1.100
192.168.1.0/24
192.168.*.*
192.168.1.0-50,60-100,103,200

范例一:使用默认参数扫描本机所启动的port(只会扫描TCP)
yum install nmap
nmap localhost

范例二:同时扫描本机的TCP/UDP端口
nmap -sTU localhost

范例三:通过IMCP数据包的检测,分析局域网内有几台主机是启动的
nmap -sP 192.168.1.0/24
如果想要将各个主机的启动port做检测
nmap 192.168.1.0/24


nginx访问ci框架出现Access denied.
nginx访问ci框架出现Access denied.

nginx访问ci框架出现Access denied.
Lepus(天兔)web管理台nginx重写

server {
        listen       80;
        server_name  lepus.example.com;
        client_max_body_size  10m;
        index index.html index.htm index.php;
        root   /work/www/lepus;

        fastcgi_intercept_errors        on;

        location / {
            root   /work/www/lepus;
            index  index.html index.htm index.php;
            #rewrite规则如下:
            rewrite  ^(.*)$  /index.php?s=$1  last;
        }


       location ~ ^(.+\.php)(.*)$ {
            root  /work/www/lepus;
            fastcgi_index        index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_param        SCRIPT_FILENAME        $document_root$fastcgi_script_name;
            fastcgi_param        PATH_INFO                $fastcgi_path_info;
            fastcgi_param        PATH_TRANSLATED        $document_root$fastcgi_path_info;
            #注意:去临时文件夹内找到你的php-cgi,也可能php-cgi.sock不是这么个名字。
            fastcgi_pass unix:/dev/shm/php-cgi.sock;
            include        fastcgi_params;

        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires 30d;
        }

        location ~ .*\.(js|css)?$ {
            expires 1h;
        }


}


修改php.ini配置文件
cgi.fix_pathinfo=1
linux ip命令详解

ip命令详解

1.关于接口设备的相关设置 ip link ,与OSI七层协议的第二层数据链路层有关

ip [-s] link show //单纯的查看该设备的相关信息
ip link set [device] [动作与参数]
选项与参数
show:仅显示出这个设备的相关属性,-s会显示更多统计数据
set:可以设置项目,device指的是eth0、eth1等设备名称
动作与参数,如下
up|down:启动(up)或关闭(down)某个接口,其他参数默认使用的以太网
address:如果这个设备可以更改mac的话,用这个参数修改
name:给予这个设备一个特殊的名字
mtu:就是最大传输单元

范例一 显示本机所有接口的信息
ip link show
ip -s link show eth0

范例二 启动关闭与配置设备的相关信息
ip link set eth0 up //启动eth0这个设备
ip link set eth0 down //关闭eth0这个设备
ip link set eth0 mtu 1000 //更改mtu的值,达到1000 bytes

范例三 修改网卡的名称、mac等参数
ip link set eth0 down
ip link set eth0 name action
ip link show
ip link set eth0 address aa:aa:aa:aa:aa:aa


2.关于额外ip的相关设定 ip address,与OSI七层协议的第三层网络层有关
ip address show //查看ip参数
ip address [add|del] [IP参数] [dev 设备名] [相关参数]
选项参数
show:仅显示接口的ip信息
add|del 进行相关参数的增加(add)或删除(del)设置,主要有
IP参数:主要就是网络的设置,例如192.168.100.100/24之类的设置
dev:这个是ip参数所要设置的接口,例如 eth0 eth1等
broadcast:广播地址
label:设备的别名
scope:下面是这个选项的参数
global:允许所有来源的连接
site:仅支持IPV6,仅允许本主机的连接
link:仅允许本设备自我连接
host:仅允许本主机内部连接

范例一 显示出所有接口的IP参数
ip address show

范例二 添加一个接口,名称加设备eth0:action
ip address add 192.168.50.50/24 broadcast + dev eth0 label eth0:action

范例三 删除刚才的接口
ip address del 192.168.50.50/24 dev eth0


3.关于路由的相关设定 ip route
ip route show //单纯的显示出路由的设置
ip route [add|del] [IP或网络号] [via gateway] [dev 设备]
选项与参数
show:单纯的显示出路由表,也可以使用list
add|del:添加或删除路由
IP或网络:可使用192.168.50.50/24之类的网络或者单纯的IP地址
via:从哪个gateway出去,不一定需要
dev:由那个设备出去
mtu:可以额外的设置MTU的数值

范例一 显示出当前的路由信息
ip route show
范例二 添加路由,主要是本机可沟通的网络
ip route add 192.168.5.0/24 dev eth0
范例三 增加可以通过外部的路由,需通过router
ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
范例四 添加默认路由
ip route add default via 192.168.1.254 dev eth0
范例五 删除路由
ip route del 192.168.10.0/24
ip route del 192.168.5.0/24



优惠券
广告位-淘宝
最新微语