首页
About Me
推荐
weibo
github
Search
1
linuxea:gitlab-ci之docker镜像质量品质报告
49,451 阅读
2
linuxea:如何复现查看docker run参数命令
23,044 阅读
3
Graylog收集文件日志实例
18,580 阅读
4
linuxea:jenkins+pipeline+gitlab+ansible快速安装配置(1)
18,275 阅读
5
git+jenkins发布和回滚示例
18,181 阅读
ops
Openvpn
Sys Basics
rsync
Mail
NFS
Other
Network
HeartBeat
server 08
Code
Awk
Shell
Python
Golang
virtualization
KVM
Docker
openstack
Xen
kubernetes
kubernetes-cni
Service Mesh
Data
Mariadb
PostgreSQL
MongoDB
Redis
MQ
Ceph
TimescaleDB
kafka
surveillance system
zabbix
ELK Stack/logs
Open-Falcon
Prometheus
victoriaMetrics
Web
apache
Tomcat
Nginx
自动化
Puppet
Ansible
saltstack
Proxy
HAproxy
Lvs
varnish
更多
互联咨询
最后的净土
软件交付
持续集成
gitops
devops
登录
Search
标签搜索
kubernetes
docker
zabbix
Golang
mariadb
持续集成工具
白话容器
elk
linux基础
nginx
dockerfile
Gitlab-ci/cd
最后的净土
基础命令
gitops
jenkins
docker-compose
Istio
haproxy
saltstack
marksugar
累计撰写
690
篇文章
累计收到
139
条评论
首页
栏目
ops
Openvpn
Sys Basics
rsync
Mail
NFS
Other
Network
HeartBeat
server 08
Code
Awk
Shell
Python
Golang
virtualization
KVM
Docker
openstack
Xen
kubernetes
kubernetes-cni
Service Mesh
Data
Mariadb
PostgreSQL
MongoDB
Redis
MQ
Ceph
TimescaleDB
kafka
surveillance system
zabbix
ELK Stack/logs
Open-Falcon
Prometheus
victoriaMetrics
Web
apache
Tomcat
Nginx
自动化
Puppet
Ansible
saltstack
Proxy
HAproxy
Lvs
varnish
更多
互联咨询
最后的净土
软件交付
持续集成
gitops
devops
页面
About Me
推荐
weibo
github
搜索到
9
篇与
的结果
2018-08-21
linuxea:xen-server重启后报Read-only file system
出现状态:只读文件系统,如下,系统不能正常使用/usr/bin/xauth: error in locking authority file /root/.Xauthority Could not set property: 连接超时 Could not set property: Activation of org.freedesktop.hostname1 timed out Could not set property: Activation of org.freedesktop.hostname1 timed out Could not set property: Activation of org.freedesktop.hostname1 timed out -bash: /tmp/2018-08-10.Linuxea-VM-Node117.cluster.com.root.history-timestamp: 只读文件系统 -bash: /tmp/2018-08-10.Linuxea-VM-Node117.cluster.com.root.history-timestamp: Read-only file system [root@Linuxea-VM-Node117 ~]#检查root目录正常这里也只有一个文件,便不用删他[root@Linuxea-VM-Node117 /etc/logstash]# ll -a ~/.X* -rw------- 1 root root 563 8月 11 09:10 /root/.Xauthority而后挂载/rw解决[root@Linuxea-VM-Node117 ~]# mount -o remount,rw /由于fstab中没有挂载逐一挂载即可[root@Linuxea-VM-Node117 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.4M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/DG-root 13G 4.0G 8.6G 32% / /dev/mapper/DG-data 50G 49M 50G 1% /data tmpfs 799M 0 799M 0% /run/user/0[root@Linuxea-VM-Node117 ~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT xvda ├─xvda2 LVM2_member jIyyxh-6U9R-3ev3-PcOA-pJog-nXuK-PlWkWQ │ ├─DTVG-swap swap f67ab7b3-1aab-4be4-a7e1-34e7606bde0e [SWAP] │ └─DTVG-root xfs 0b352b26-63dc-48b3-aa1b-b0296392c932 / └─xvda1 xfs b7b1cbe7-b4fb-4fd9-9665-ec0d3d6ba124 sr0 xvdb LVM2_member GEXALG-HWG0-cstS-170v-NPNg-B5Bd-wiShE8 └─DTVG-data xfs af1f29ec-6bb1-4c93-8d1e-d20038ced3d5 /data [root@Linuxea-VM-Node117 ~]# 挂载后重启即可[root@Linuxea-VM-Node117 ~]# cat /etc/fstab /dev/mapper/DTVG-root / xfs defaults 0 0 UUID=af1f29ec-6bb1-4c93-8d1e-d20038ced3d5 /data xfs defaults 0 0 /dev/DTVG/swap swap swap defaults 0 0 [root@Linuxea-VM-Node117 ~]#
2018年08月21日
3,502 阅读
0 评论
0 点赞
2015-05-22
linux文本处理三剑客之—AWK(二)
6、常用ACTION (1) EXPRESSIONS:例如变量赋值 (2) Control Statements:控制语句,如if, while等; (3) Compound Statements:复合语句 (4) input statements (5) output statements 7、控制语句 if (condition) { statements } [else { statement }] while (condition) { statements } do statement while (condition) for(expr1;expr2;expr3) { statements } for(var in array) { statements } switch (expression) {case VALUE or /REGEXP/: statement; ...; default: statementN} break continue delete array[index] delete array exit [ expression ] { statements } 7.1 if-else 语法:if (condition) statement [ else statement ] if (condition) {statements} [else {statements}]~]# awk -F: '{if ($3>=500) print $1,$3}' /etc/passwd ~]# awk -F: '{if ($3>=500) print $1,$3}' /etc/passwd nfsnobody 65534 mark 500 mark1 501 fedora 502 apapche 503 system 504 [root@www ~]#~]# awk '{if (NF>=6) print NF,$0}' /etc/rc.d/rc.sysinit ~]# awk -F: '{if ($3>=500) {print $1,"is a common user"} else {print $1,"is a sysadmin or sysuser"}}' /etc/passwd使用场景:对awk取得的整行或行中的字段做条件判断;7.2 while循环 语法:while (condition) statement while (condition) {statements}条件为“真”时循环,为“假”时退出循环;使用场景:通常用于在当前行的各字段间进行循环;~]# awk '{i=1;while(i<=NF){if (length($i)>=6) {print $i};i++}}' /etc/issue 7.3 do-while循环 语法:do statement while (condition) do {statements} while (condtion) 意义:至少执行一次循环体 7.4 for循环 语法:for (expr1;expr2;expr3) statement for (expr1;expr2;expr3) {statements}for (variable assignment;codition;iteration process) {for-body}# awk '{for(i=1;i<=NF;i++){if(length($i)>=6) print $i}}' /etc/issue第二种用法:用于遍历数组中的元素 for (var_name in array) {for-body} 7.5 swtich 语法:switch (expression) {case VALUE or /REGEXP/: statement; ...; default: statementN} 7.6 break and continue break [n]:退出当前循环,n是一个数字,用于指定退出几层循环; continue:提前结束本轮循环而进入下一轮; 7.7 next 提前结束对本行文本的处理,而提前进入下一行的处理操作;~]# awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd 8、数组 关联数组:array[index-expression]index-expression: 可以使用任意字符; 如果某数组元素事先不存在,则在引用时,awk会自动创建此元素并将其值初始化为空串; 因此,若要判断 数组中的某元素是否存在,要使用“index in array”的方式进行判断;要遍历数组中的元素,则要使用for (var_name in array)的方式进行;此时,var_name会遍历array的每个索引,所以,要显示数组元素的值,要使用array[var_name]weekdays weekdays[mon]="Monday" weekdays[tue]="Tuesday" ...for (i in weekdays):此时,i变量会遍历weekdays数组的每个索引,即mon, tue,而非元素的值“Monday”或"Tuesday"等; 要获取元素的值:weekdays[i]例如: 统计指定文件中所有行中每个单词出现的次数; 可定义一个数组,用单词本身当索引,而元素的值存储单词出现的次数How are you? How old are you?count[How]=2 count[are]=2 count[you?]=2 count[old]=1 整个文件统一统计: ~]# awk '{for(i=1;i<=NF;i++) {count[$i]++}}END{for(j in count) {print j,count[j]}}' /root/count.txt 每行单独统计: ~]# awk '{for(i=1;i<=NF;i++) {count[$i]++};for(j in count) {print j,count[j]};delete count}' /root/count.txt 统计当前系统上所有tcp连接的各种状态的个数PV;~]# ss -tan | awk '!/^State/{state[$1]++}END{for(i in state) print i,state[i]}'统计指定的web访问日志中各ip的资源访问次数: ~]# awk '{ip[$1]++}END{for(i in ip) print i,ip[i]}' /var/log/httpd/access_log 9、函数 内建函数和用户自定义函数9.1 内建函数数值处理: rand():返回0至1之间的一个随机数;字符串处理: length([s]):返回指定的字符串的长度;sub(r,s[,t]):基于r所表示的模式来匹配字符串t中的内容,将其第一次被匹配到的内容替换为s所表示的字符串; gsub(r,s[,t]):基于r所表示的模式来匹配字符串t中的内容,将其所有被匹配到的内容均替换为s所表示的字符串;split(s,a[,r]):以r为分隔符去切割字符串s,并将切割后的结果保存至a表示的数组中;注意:awk的数组下标从1开始编号~]# awk '{split($0,userinfo,":");print userinfo[1]}' /etc/passwdsubstr(s,i[,n]):从s所表示的字符串中取子串,取法:从i表示的位置开始,取n个字符;时间类函数: systime():取当前系统时间,结果形式为时间戳;9.2 用户自定义函数function f_name(p,q) { ... }
2015年05月22日
3,066 阅读
0 评论
0 点赞
2015-05-21
linux文本处理三剑客之—AWK
linux文本处理三剑客 grep,egrep,fgrep;文本过滤 sed:文本编辑(行编辑器) awk:报表生成器,文本格式化,能够实现根据需要对文本做美化后输出的,这更是一个强大到没有朋友的工具awk类似于bash,支持变量,数组,判断,一个过程式语言它都有AWK由来:由三个人名字首字母缩写而来 创始人:Alfred AHo,Peter Weinberger,Brian Kernighan 但是我们在linux上使用的AWK是另外一种,AWK在上个世纪70年代开发,这是一个古老的工具,而后在时代变迁中AWK被GUN二次开发为GAWK,在centos被符号链接为AWK [root@www bin]# ll awk lrwxrwxrwx. 1 root root 4 Apr 13 14:22 awk -> gawk GUN在开发awk时做了很多加强,目前GAWK是最强版本功能:进程控制,函数变量等,完整的过程式编程语言AWK运行起来比起grep是差很多的AWK的运行方式: 支持三种方式 1,awk命令行 #awk 2,awk程序文件 #awk -f /path/from/awkname.file 3,awk脚本 #!/bin/awk -f基本用法: gawk [options] 'program' file1 file2 ... program:PATTERN{ACTION STATEMENT} 由语句组成,各语句间使用分号分割;ACTION:print,printf AWK是一个格式化工具,为了达到它的目标,它一次从文本文件中读出一行数据,而后把每一行文本,读一行处理一行遍历整个文本,读至awk的空间,按照指定的分隔符进行切法,切法标准和条件:以指定的分隔符指定的切出来,而后被切成N段变量$1,$2,$3,$4,直到最后,整行的是$0,读取文本后赋值给每个$。linux文本处理三剑客之—AWK(一)下载文档
2015年05月21日
2,845 阅读
0 评论
0 点赞
2015-05-16
iptables链接追踪state/recent/NAT(三)
iptables概念和参数(一)iptables基本规则演示(二)四表:filter, nat, mangle, raw (低-->高) 五链:PREROUTING, INPUT, FOWARD, OUTPUT, POSTROUTING链参数:添加 -N,删除 -X ,清空 -F,定义 -P ,重命名 -E,清空 -Z 规则参数:附加 -A, 插入 -I, 删除 -D, 替换 -R查看-L -n -x -v
2015年05月16日
5,492 阅读
0 评论
0 点赞
2015-05-11
iptables基本规则演示(二)
iptables概念和参数:http://www.gray-track.com/718.html用户自定义链是无法自动生效,通过引用生效自定义链显示当前链规则 [root@localhost ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destinationChain FORWARD (policy ACCEPT) target prot opt source destinationChain OUTPUT (policy ACCEPT) target prot opt source destination [root@localhost ~]#查看某些表 查看nat表 -t nat[root@localhost ~]# iptables -t nat -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destinationChain POSTROUTING (policy ACCEPT) target prot opt source destinationChain OUTPUT (policy ACCEPT) target prot opt source destination [root@localhost ~]#详细信息级别, -v -vv -vvv [root@localhost ~]# iptables -t raw -L -n -v Chain PREROUTING (policy ACCEPT 71 packets, 6250 bytes) pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 15 packets, 1152 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -L -n -v Chain INPUT (policy ACCEPT 251 packets, 20369 bytes) pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 136 packets, 17796 bytes) pkts bytes target prot opt in out source destinationpkts bytes target prot opt in out source destination pkts: 被本规则所匹配到的包个数; bytes:被本规则所匹配到的所包的大小之和; target: 处理目标 (目标可以为用户自定义的链) prot: 协议 {tcp, udp, icmp} opt: 可选项 in: 数据包流入接口 out: 数据包流出接口 source: 源地址 destination: 目标地址;查看规则号码 iptables -L -n --line-numbers匹配172.16.100.2 到172.16.100.11所有规则,任意协议全部允许 iptable -t filter -A INPUT -s 172.16.100.2 -d 172.16.100.11 -j ACCEPT 一,通用匹配:[!] -s, --src, --source IP|Network:检查报文中的源IP地址; d, --dst, --destination:检查报文中的目标IP地址; -p, --protocol:检查报文中的协议,即ip首部中的protocols所标识的协议;tcp、udp或icmp三者之一; -i, --in-interface:数据报文的流入接口;通常只用于PREROUTING, INPUT, FORWARD链上的规则; -o, --out-interface:检查报文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING链上的规则; iptable -t filter -A INPUT -s 172.16.100.2 -d 172.16.100.11 -j ACCEPT 指明协议 修改规则,替换第一规则,在原来的规则上加上tcp协议(放行TCP协议) iptable -t filter可省 -R 替换input链上第一条,从172.16.100.2到172.16.100.11,-p 添加协议为tcp -j ACCEPT iptable -t filter -R INPUT 1 -s 172.16.100.2 -d 172.16.100.11 -p tcp -j ACCEPT放行172.16.100.2到172.16.100.11的icmp协议 iptable -A INPUT -s 172.16.100.2 -d 172.16.100.11 -p icmp -j ACCEPT 修改类型为,全部拒绝(如果你在生成环境中,请务必开始22号端口ssh) iptables -t filter -P INPUT DROP限制报文流入和流出 流入: 限制本机eth0网卡,在改之前最好使用iptable -L -n --line-number查看是第几条规则,如果不是经常访问的就放在后面,如果是经常访问的就放在前面,匹配的时候会递归匹配规则iptable -R修改input链的第二条,从72.16.100.2到172.16.100.11,协议为icmp,从eth0流入的,命令如下: iptable -R INPUT 2 -s 172.16.100.2 -d 172.16.100.11 -p icmp -i eht0 -j ACCEPT这些条件都可以取反,! 二,扩展匹配,扩展协议本身 扩展匹配:使用iptables的模块实现扩展性检查机制 rpm -q iptables查看扩展机制模块 隐式扩展:如果在通用匹配上使用-p选项指明了协议的话,则使用-m选项指明对其协议的扩展就变得可有可无了; tcp: --dport PORT[-PORT] 源 --sport 目标 --tcp-flags LIST1 LIST2 LIST1: 要检查的标志位; LIST2:在LIST1中出现过的,且必须为1标记位;而余下的则必须为0; 例如:--tcp-flags syn,ack,fin,rst syn --syn:用于匹配tcp会话三次握手的第一次; udp: --sport --dport icmp: --icmp-types 8: echo request 0:echo reply拒绝来自172.16.100.2访问172.16.100.11的webiptables -i 插入input 第1条,从172.16.100.2 到172.16.100.11的所有tcp协议-m扩展匹配tcp,目标端口80,-j 拒绝 iptable -I INPUT 1 -s 172.16.100.2 -d 172.16.100.11 -p tcp-m tcp --dport 80 -j REJECT也可以省略-m使用 iptable -I INPUT 1 -s 172.16.100.2 -d 172.16.100.11 -p tcp --dport 80 -j REJECT放行SSH:prot22端口 放行172.16.100.2 到172.16.100.11的22端口 iptabes -I 插入input表的第二条,从172.16.100.2 到172.16.100.11,协议-p tcp ,--dport目标端口 为22 -j ACCEPT放行 iptable -I INPUT 2 -s 172.16.100.2 -d 172.16.100.11 -p tcp --dport 22 -j ACCEPT删除 iptables -D INPUT 3 iptables -D删除input表中的第三条策略 放行任意地址ping iptables -R修改input链中第三条,任意地址到172.16.100.11的icmp协议全部放行 iptables -R INPUT 3 -d 172.16.100.11 -p icmp -j ACCEPT 限制流出响应报文 iptables -A output链中,从本机-s 172.16.100.11,响应给所有主机 iptables -A OUTPUt 172.16.100.11 -p tcp --sport 22 -j ACCEPT 将出战改为DROP iptables -P OUTPUT DROP那么现在,除22端口,其他都不能通讯。放行从本机出去的icmp协议8号报文 iptables -A添加 output表中放行本地-s源地址 172.16.100.11,-p指明协议为tcp的icmp ,协议类型--icmp-type 只放行请求8 -j ACCEPT iptables -A OUTPUT -s 172.16.100.11 -p icmp --icmp-type 8 -j ACCEPT放行从本机进来的的icmp协议的0号响应报文 iptables -A INTPUT -d 172.16.100.11 -p icmp --icmp-type 0 -j ACCEPT以上两条设置完成后,本机172.16.100.11可以ping出去,而外面的主机是无法ping进来的。下面两条规则匹配后可以全部ping通了。 iptables -A INTPUT -d 172.16.100.11 -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -s 172.16.100.11 -p icmp --icmp-type 0 -j ACCEPT 三,显式扩展:必须指明使用的扩展机制; -m 模块名称 每个模块会引入新的匹配机制;想知道有哪些模块可用: rpm -ql iptables 小写字母,以.so结尾;1,multiport多端口快照:以离散定义多端口匹配;最多指定15个端口;专用选项: --source-ports, --sports PORT[,PORT,...] --destination-ports, --dports PORT[,PORT,...] --ports PORT[,PORT,...]例子: 入站 iptables 插入input第一条 目标地址是本地172.16.100.11 -p 协议tcp -m 指明为 -multiport --dport指明为目标端口,22,80,443端口放行 iptables -I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dport s 22,80,443 -j ACCEPT出站 -m -multiport 扩展 iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPT IP扩展 示例: 172.16.0.1主机仅开放给172.16.100.0网段开放端口23 iptables -A INPUT -s 172.16.100.0/16 -d 172.16.0.1 -p tcp --dport 23 -j ACCEPT 2,iprange范围扩展:指定连续的ip地址范围;在匹配非整个网络地址时使用; 专用选项: [!] --src-range IP[-IP] [!] --dst-range IP[-IP]示例: iptables -A新建一条INPUT链,目标地址172.16.100.11 -p协议tcp,目标端口dport 23 ,-m扩展iprange --src-range,从172.16.100.1到172.16.100.100结束,这段地址放行访问23号端口入站iptables -A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT iptables -A新建一条OUTPUT链,源地址172.16.100.11 -p协议tcp,源端口sport 23 ,-m扩展iprange --src-range,从172.16.100.1到172.16.100.100结束,这段地址放行访问23号端口出站iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT 示例: 放行yum安装新建出站规则,源地址172,16,100,11,目标地址0.0.0.0,协议tcp,访问别人的80端口,所以这里是dport 80 -j ACCEPT iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPTiptables -A INTPUT -d 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT3,string扩展:检查报文中出现的字符串,与给定的字符串作匹配;字符串匹配检查算法: kmp, bm专用选项: --algo {kmp|bm} --string "STRING" --hex-string "HEX_STRING":HEX_STRING为编码成16进制格式的字串; 示例: 我们过滤web页面中的sex字符,拒绝 iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string "sex" --algo kmp -j REJECT 4,time扩展:基于时间区间做访问控制专用选项: --datestart YYYY[-MM][-DD][hh[:mm[:ss]]] --dattestop--timestart --timestop--weekdays DAY1[,DAY2,...]示例: 修改intables INPUT链第一条,检查法则为,如果目标地址为172.16.100.11 -p协议为tcp,目标端口似dport 80.做时间检查time --timestart开始时间,08:30,时间结束为18:30 ,在这个时间内是拒绝访问80端口 # iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 -j REJECT星期一,星期二,星期四,星期五,早8:30到晚上18:30拒绝访问172.16.100.11的80端口 # iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT5,connlimit扩展:基于连接数作限制;对每个IP能够发起的并发连接数作限制;专用选项: --connlimit-above [n]限制多线程下载! iptables I插入INPUT第二条,不管是谁发送,只要到达172.16.100.11的tcp协议的目标22端口,一旦 connlimit --connlimit-above 5上限达到五个就拒绝# iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECT6,limit扩展:基于发包速率作限制; 专用选项:令牌桶算法 --limit n[/second|/minit|/hour|/day] --limit-burst n限制本机ping操作没 iptable -I INTPUE 第三条规则,到172.16.100.11的,协议为icmp8--limit 每分钟十个报文 10/minute iptables -R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
2015年05月11日
3,459 阅读
0 评论
0 点赞
2015-05-10
iptables概念和参数(一)
iptables基本规则演示(二):http://www.gray-track.com/722.htmliptablesfirewall: 分为两类防火墙 1,主机防火墙,2,网络防火墙 他们工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件。网络防火墙,有些则是专业的硬件防火墙,如:checkpoint, netscreeniptable:主机程序,也可以说是软件防火墙 iptables:规则编写工具 netfilter: 网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架;再者还有IDS:入侵检测,IPS:入侵防范,有些公司还有HoneyPot: 蜜罐来防止并追踪攻击者的手段,如果有兴趣可以玩玩kali, (backtrack) OpenBSD: ipfw ipchains iptables/netfilterkernel, frameworkhooks function: prerouting: 进入本机后路由功能发生之前 input:到达本机内部 output: 由本机发出 forward: 由本机转发 postrouting:路由功能发生之后,即将离开本机之前路由发生的时刻: 报文进入本机后: 判断目标地址 报文离开本机之前: 判断经由哪个接口发出;报文流向经由的位置: 到本内部:prerouting, input 由本机发出:output, postrouting 由本机转发:prerouting, forward, postrouing规则的功能: 过滤:firewall, 地址转换:NAT Server Network Address Translation mangle:修改报文首部中的某些信息 raw:关闭nat表上启用的连接追踪功能iptables:每个钩子函数上可放置n条规则;对应于每个钩子上的多条规则就称为一个链(CHAIN) 每个功能有多个链,所以,就称作表;链:链上的规则次序即为检查次序,因此有一定的法则 (1) 同类规则,匹配范围小的放上面; (2) 不同类规则,匹配报文几率较大的放上面; (3) 应该设置默认策略;ptables有四表五链 filter: input, forward, output 添加规则时的考量点: (1) 要实现的功能:判断添加在哪个表上; (2) 报文流向及经由路径:判断添加在哪个链上;功能的优先级: 由高而低: raw --> mangle --> nat --> filter规则的组成部分: 报文的匹配条件, 匹配之后如何处理匹配条件:基本匹配条件、扩展匹配条件 如何处理:内建处理机制、自定义处理机制(自定义的链) 注意:报文不可能经由自定义链,只有在被内置链上的引用才能生效(即做为自定义目标)iptables:规则管理工具 自动实现规则的语法检查规则和链有计数器: pkts: 由规则或链匹配到的报文的个数; bytes:由规则或链匹配到的所有报文大小之和;链:应该有默认策略;iptables命令生成规则,送往netfilter; 规则通过内核接口直接送至内核,因此,会立即生效。但不会永久有效; 如果期望有永久有效,需要保存至配置文件中,此文件还开机时加载和由用户手工加载; iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET-t TABLE: 默认为filter, 共有filter, nat, mangle, raw四个可用;SUBCOMMAND: 链: -F:flush,清空指定表的指定链上所有规则;省略链名时,清空表中的所有链; -N:new, 新建一个用户自定义的链;自定义链只能作为默认链上的跳转对象,即在默认链通过引用来生效自定义链; -X:drop,删除用户自定义的空链;非空自定义链和内置链无法删除; -Z:zero,将规则的计数器置0; -P:policy,设置链的默认处理机制;当所有都无法匹配或有匹配有无法做出有效处理机制时,默认策略即生效; filter表的可用策略:ACCEPT, DROP, REJECT -E:rename,重命名自定义链;注意:被引用中的链,无法删除和改名规则: -A:append,在链尾追加一条规则; -I:insert,在指定位置插入一条规则; -D:delete,删除指定的规则; -R:replace,替换指定的规则; 查看: -L:list,列出指定链上的所有规则; -n: numeric,以数字格式显示地址和端口号,即不反解; -v: verbose,详细格式,显示规则的详细信息,包括规则计数器等; -vv: -vvv: --line-numbers: 显示规则编号; -x: exactly,显示计数器的精确值; pkts bytes target prot opt in out source destination pkts: 被本规则所匹配到的包个数; bytes:被本规则所匹配到的所包的大小之和; target: 处理目标 (目标可以为用户自定义的链) prot: 协议 {tcp, udp, icmp} opt: 可选项 in: 数据包流入接口 out: 数据包流出接口 source: 源地址 destination: 目标地址 CRETERIA: 匹配条件 检查IP首部,检查TCP、UDP或ICMP首部; 基于扩展机制,也可以进行额外的检查;如做连接追踪;注意:可同时指定多个条件,默认多条件要同时被满足;匹配条件:通用匹配: [!] -s, --src, --source IP|Network:检查报文中的源IP地址; -d, --dst, --destination:检查报文中的目标IP地址; -p, --protocol:检查报文中的协议,即ip首部中的protocols所标识的协议;tcp、udp或icmp三者之一; -i, --in-interface:数据报文的流入接口;通常只用于PREROUTING, INPUT, FORWARD链上的规则; -o, --out-interface:检查报文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING链上的规则;扩展匹配:使用iptables的模块实现扩展性检查机制 隐式扩展:如果在通用匹配上使用-p选项指明了协议的话,则使用-m选项指明对其协议的扩展就变得可有可无了; tcp: --dport PORT[-PORT] --sport --tcp-flags LIST1 LIST2 LIST1: 要检查的标志位; LIST2:在LIST1中出现过的,且必须为1标记位;而余下的则必须为0; 例如:--tcp-flags syn,ack,fin,rst syn --syn:用于匹配tcp会话三次握手的第一次; udp: --sport --dport icmp: --icmp-types 8: echo request 0:echo reply 显式扩展:必须指明使用的扩展机制; -m 模块名称 每个模块会引入新的匹配机制;想知道有哪些模块可用: rpm -ql iptables小写字母,以.so结尾;multiport扩展: 以离散定义多端口匹配;最多指定15个端口;专用选项: --source-ports, --sports PORT[,PORT,...] --destination-ports, --dports PORT[,PORT,...] --ports PORT[,PORT,...]例子: iptables -I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPTiprange扩展: 指定连续的ip地址范围;在匹配非整个网络地址时使用;专用选项: [!] --src-range IP[-IP] [!] --dst-range IP[-IP]示例: iptables -A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPTstring扩展: 检查报文中出现的字符串,与给定的字符串作匹配;字符串匹配检查算法: kmp, bm专用选项: --algo {kmp|bm} --string "STRING" --hex-string "HEX_STRING":HEX_STRING为编码成16进制格式的字串; 示例: iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string "sex" --algo kmp -j REJECTtime扩展: 基于时间区间做访问控制专用选项: --datestart YYYY[-MM][-DD][hh[:mm[:ss]]] --dattestop--timestart --timestop--weekdays DAY1[,DAY2,...]示例: # iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECTconnlimit扩展: 基于连接数作限制;对每个IP能够发起的并发连接数作限制;专用选项: --connlimit-above [n]# iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECTlimit扩展: 基于发包速率作限制;专用选项:令牌桶算法 --limit n[/second|/minit|/hour|/day] --limit-burst niptables -R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPTstate扩展:
2015年05月10日
3,294 阅读
0 评论
0 点赞
2015-05-07
NFS网络文件系统构建详解
从某种意义上来讲,NFS和windows映射网络驱动器很相似NFS:NetWork File System 传统意义上:文件系统在内核中实现远程过程调用,函数调用(远程主机上的函数) 一部分功能由本地程序完成,另一部分功能由远程主机的函数完成Remote Procedure Call Protocol 半结构数据: XML:eXtended Mark Lanuage jsqn httpNIS:network INformation system 身份认证:集中某服务器其完成身份认证!NFS:基于IP认证 NFS.tcp/udp端口:2049 rpc服务 rpcinfo -p rpcinfo -p "server-ip" 要想启动NFS,首先查看portmapper在工作状态 查看NFS服务器端共享的文件系统: showmount -e NFSSERVER_IP 挂载NFS文件系统: mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point /etc/exports: 文件系统 客户端(选项) 客户端(选项)客户端:IP、FQDN或DOMAIN、NETWORKexportfs:维护exports文件导出的文件系统表的专用工具: export -ar: 重新导出所有的文件系统 export -au: 关闭导出的所有文件系统 export -u FS: 关闭指定的导出的文件系统 nfs服务器:nfsd.mo # yum -y install nfs-utilsrpm -ql nfs-utils /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.statd 第一次启动报错! [root@localhost ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp). [FAILED] Starting NFS mountd: [FAILED] Starting NFS daemon:而后依次启动守护进程,问题解决[root@localhost ~]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ] [root@localhost ~]# /etc/init.d/rpcidmapd start Starting RPC idmapd: [ OK ] [root@localhost ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: 磁盘配额相关 [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] [root@localhost ~]#可以使用rpcinfo -p查看监听的端口, mountd端口为随机端口如何配置NFS: 只需编辑/etc/exports文件即可补充材料:/etc/exports 文件中的项的格式相当简单。要共享一个文件系统,只需要编辑 /etc/exports 并使用下面的格式给出这个文件系统(和选项)即可: directory (or file system) client1(option1, option2) client2(option1, option2) 例如: 1,我们尝试创建一个目录,将它发布出去 [root@localhost ~]# mkdir /shared/nfs -pv mkdir: created directory `/shared' mkdir: created directory `/shared/nfs' 2,我们授权用户IP访问 vim /etc/expprts /shared/nfs 172.16.249.205(rw) 172.16.250.167(ro),3,重启 [root@localhost shared]# service nfs restart我们通过showmount -e NFS_SERVER_IP查看共享是否成功,当然,远程主机也可以查看的,but,需要安装showmount [root@localhost shared]# showmount -e 172.16.249.249 Export list for 172.16.249.249: /shared/nfs 172.16.250.167,172.16.249.2054,而后在挂载NFS文件系统。 例如:将NFS挂载至172.16.249.202/mnt目录下 PS:如果你挂载本地,请在配置文件中定义本地iP和权限 [root@localhost ~]# ssh root@172.16.249.205 The authenticity of host '172.16.249.205 (172.16.249.205)' can't be established. RSA key fingerprint is 81:80:c0:0a:61:21:77:cb:4d:ef:c8:98:a0:71:4f:94. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.16.249.205' (RSA) to the list of known hosts. root@172.16.249.205's password: Last login: Wed Apr 22 20:27:33 2015 [root@www ~]#mount -t nfs 172.16.249.249:/shared/nfs /mnt [root@www mnt]#mount /dev/mapper/vg0-root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) /dev/mapper/vg0-usr on /usr type ext4 (rw) /dev/mapper/vg0-var on /var type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 172.16.249.249:/shared/nfs on /mnt type nfs (rw,addr=172.16.249.249) [root@www mnt]#这里的挂载虽然给了写权限,其实是以nfsnobody运行的,是不具备写权限的如果需要远程用户具备写权限: 1,创建用户fedora:useradd -u 600 fedora 2,setfacl权限控制:setfacl -m u:gentoo:rwx /shared/nfs/ 3,su gentoo:可以touch ,mkdir等操作PS:如果远程主机上有某用户名的id号与gentoo一致,那么这个相同id号的用户便可以对此NFS文件具备gentoo权限。因此NFS认证用户名是依赖ID号来识别用户,因此当远程用户查看NFS属组属主时看到的属性一致为nobody用户映射的选项包括: root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。 no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。 all_squash: 这个选项对于公共访问的 NFS卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。 anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。当我们修改完配置文件后必须重启才能重读配置文件。使用exportfs可以沉默读取,相当于reload 1,我们在vim /etc/exportfs添加/mnt,允许172.16.0.0所有主机可访问/shared/nfs 172.16.249.205(rw) 172.16.250.167(ro) 172.16.249.249(rw) /mnt/ 172.16.0.0(rw)2,使用showmount -e 命令查看[root@localhost ~]# showmount -e 172.16.249.249 Export list for 172.16.249.249: /shared/nfs 172.16.249.249,172.16.250.167,172.16.249.2053,使用exportfs -ar导出配置 ,也可以叫做重读配置[root@localhost ~]# exportfs -ar exportfs: /mnt does not support NFS export4,使用showmount -e 命令再次查看,已经出现了,静默重新导出完成[root@localhost ~]# showmount -e 172.16.249.249 Export list for 172.16.249.249: /mnt 172.16.0.0 /shared/nfs 172.16.249.249,172.16.250.167,172.16.249.205 [root@localhost ~]# NFS开机挂载:客户端 写入 /etc/fstab 172.16.249.249:/shared/nfs/ /mnt ext4 defaults 0 0客户端挂载时可以使用的特殊选项:Client Mounting remote directories Before mounting remote directories 2 daemons should be be started first: rpcbind rpc.statdrsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timeout. After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs. If connecting to a slow server or over a busy network, better performance can be achieved by increasing this timeout value. The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share. 整个NFS的配置是相当简单的,明白其原理才能排错1NFS起来之后,不但自身,而后mountd挂载守护进程,用户进程来了之后交给mound验证,用户客户端是否允许在用户客户端的访问列表中,如果在就允许,如果不在则不允许。一次连接的过程!
2015年05月07日
5,419 阅读
0 评论
0 点赞
1
2