本文共 13326 字,大约阅读时间需要 44 分钟。
Samba服务
[root@centos7 ~]#yum install samba[root@centos7 ~]#systemctl start smb[root@centos7 ~]#ss -ntluNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 50 :139 : tcp LISTEN 0 50 :445 端口已开启 : 可以做共享了。 主配置文件:/etc/samba/smb.conf添加samba用户:1、smbpasswd -a <user> 2、pdbedit -a -u <user>修改用户密码: smbpasswd <user>删除用户和密码:1、smbpasswd –x <user> 2、pdbedit –x –u <user>查看samba用户列表: 1、/var/lib/samba/private/passdb.tdb 2、pdbedit –L –v查看samba服务器状态: smbstatus[root@centos7 data]#useradd -s /sbin/nologin smb1
[root@centos7 data]#useradd -s /sbin/nologin smb2[root@centos7 data]#useradd -s /sbin/nologin smb3[root@centos7 data]#getent passwdsmb1:x:1001:1001::/home/smb1:/sbin/nologinsmb2:x:1002:1002::/home/smb2:/sbin/nologinsmb3:x:1003:1003::/home/smb3:/sbin/nologin[root@centos7 data]#smbpasswd -a smb1 把linux用户变为Samba用户New SMB password:Retype new SMB password:Added user smb1. smb账户添加账户不用加a,但是我们是第一次添加,要加上a。[root@200 ~]#yum install samba[root@200 ~]#systemctl restart smb nmb samba共享已开启,现在去windows上测试此时登陆进去,可以看到有文件存在。若要想登陆smb2,就要在windows系统中删除记录后登陆。此时就可以登陆smb2了。SAMBA服务器全局配置:
config file=/etc/samba/conf.d/%U 用户独立的配置文件Log file=/var/log/samba/log.%m 不同客户机采用不同日志log level = 2 日志级别,默认为0,不记录日志max log size=50 日志文件达到50K,将轮循rotate,单位KBSecurity三种认证方式:share:匿名(CentOS7不再支持)user:samba用户(采有linux用户,samba的独立口令)domain:使用DC(DOMAIN CONTROLLER)认证passdb backend = tdbsam 密码数据库格式实现samba用户:包: samba-common-tools工具:smbpasswd pdbeditsamba用户须是Linux用户,建议使用/sbin/nologin实验:通过samba实现文件共享
[root@200 data]#mkdir share1[root@200 data]#mkdir share2[root@200 data]#vim /etc/samba/smb.conf[tools]comment = software toolspath = /data/share1/[root@200 data]#systemctl restart smb登陆smb1、2、3均可以看到如下信息:inotify和rsync实现实时同步
实现实时同步:1、要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 2、发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 inotify+rsync 方式实现数据同步 使用方式:A:inotify 对同步数据目录信息的监控 B:rsync 完成对数据的同步 C:利用脚本进行结合inotify:异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件参考文档:Inotify-tools包主要文件: 基于epel源inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,常用于实时同步的目录监控inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计inotifywait命令常见选项-m, --monitor 始终保持事件监听 -d, --daemon 以守护进程方式执行,和-m相似,配合-o使用 -r, --recursive 递归监控目录数据信息变化 -q, --quiet 输出少量事件信息 --timefmt <fmt> 指定时间输出格式 --format <fmt> 指定的输出格式;即实际监控输出内容 -e 指定监听指定的事件,如果省略,表示所有事件都进行监听 --exclude <pattern> 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现 --excludei <pattern> 和exclude相似,不区分大小写 -o, --outfile <file>打印事件到文件中,相当于标准正确输出 -s, --syslogOutput 发送错误到syslog相当于标准错误输出防火墙
主机防火墙:服务范围为当前主机 网络防火墙:服务范围为防火墙一侧的局域网 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件: 实现,如:Checkpoint,NetScreen 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件 网络层防火墙:OSI模型下四层 优点:对用户来说透明,处理速度快且易于维护 缺点:无法检查应用层数据,如病毒等 应用层防火墙/代理服务器:代理网关,OSI模型七层Netfilter组件
内核空间,集成在linux内核中 扩展各种网络服务的结构化底层框架内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上三种报文流向:流入本机:PREROUTING --> INPUT-->用户空间进程流出本机:用户空间进程 -->OUTPUT--> POSTROUTING转发:PREROUTING --> FORWARD --> POSTROUTINGiptables的组成 iptables由五个表和五个链以及一些规则组成五个表table:filter、nat、mangle、raw、securityfilter表:过滤规则表,根据预定义的规则过滤符合条件的数据包nat表:network address translation 地址转换规则表mangle:修改数据标记位规则表raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现优先级由高到低的顺序为:security -->raw-->mangle-->nat-->filter五个内置链chain 一、INPUT、 二、OUTPUT 三、FORWARD 四、PREROUTING 五、POSTROUTINGiptables规则:匹配条件:默认为与条件,同时满足基本匹配:IP,端口,TCP的Flags(SYN,ACK等)扩展匹配:通过复杂高级功能匹配处理动作:称为target,跳转目标内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNATMASQUERADE,MARK,LOG...自定义处理动作:自定义chain,利用分类管理复杂情形规则要添加在链上,才生效;添加在自定义上不会自动生效Filter表中INPUT规则:iptables -t filter -A INPUT -s 192.168.141.1 -j DROPiptables命令:
-t:table: raw mangle nat [filter]默认SUBCOMMAND:1、链管理: -N: new 自定义一条新的规则链 -X: delete 删除自定义的空的规则链-P:policy 设置默认策略:ACCEPT:接受 DROP:丢弃 -E:重命名自定义链2、查看:-L: list, -n:以数字格式显示地址和端口号 -v:详细信息 3、规则管理:-A : append 追加 -I:insert 插入, -D:delete 删除 -F:flush 清空指定规则链 -R:replace 替换指定链上的规则编号 -Z: zero :置零tcp协议的扩展选项--syn:用于匹配第一次握手相当于:--tcp-flags SYN,ACK,FIN,RST SYN扩展:REJECT:--reject-with:icmp-port-unreachable默认
1、RETURN:返回调用链 2、REDIRECT:端口重定向 3、LOG:记录日志,dmesg 4、MARK:做防火墙标记 5、DNAT:目标地址转换 6、SNAT:源地址转换 7、MASQUERADE:地址一、显式扩展:必须显式地指明使用的扩展模块进行的扩展iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dport20:22,80 -j ACCEPT二、iprange扩展:指明连续的(但一般不是整个网络)ip地址范围iptables -A INPUT -d 172.16.1.100 -p tcp --dport 80 -m iprange --srcrange 172.16.1.5-172.16.1.10 -j DROP三、mac扩展:指明源MAC地址 适用于:PREROUTING, FORWARD,INPUT chainsiptables -A INPUT -s 172.16.0.100 -m mac --mac-source00:50:56:12:34:56 -j ACCEPT iptables -A INPUT -s 172.16.0.100 -j REJECT四、tring扩展:对报文中的应用层数据做字符串模式匹配检测iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm --string “google" -j REJECT五、time扩展:根据将报文到达的时间与指定的时间范围进行匹配iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP六、connlimit扩展:根据每客户端IP做并发连接数数量匹配,可防止CC(Challenge Collapsar挑战黑洞)***iptables -A INPUT -d 172.16.100.10 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT七、limit扩展:基于收发报文的速率做匹配iptables -I INPUT -d 172.16.100.10 -p icmp --icmp-type 8 -m limit --limit10/minute --limit-burst 5 -j ACCEPTiptables -I INPUT 2 -p icmp -j REJECT查看链:[root@centos7 ~]#iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 25891 packets, 21M bytes)pkts bytes target prot opt in out source destinationChain INPUT (policy ACCEPT 25692 packets, 21M 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 2246 packets, 211K bytes)
pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 2275 packets, 215K bytes)
pkts bytes target prot opt in out source destination 0 0 CHECKSUM udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68 CHECKSUM fill[root@centos7 ~]#iptables -A INPUT -s 192.168.141.253 -j DROP
[root@centos6 ~]#ping 192.168.141.200PING 192.168.141.200 (192.168.141.200) 56(84) bytes of data.64 bytes from 192.168.141.200: icmp_seq=1 ttl=64 time=2.47 ms64 bytes from 192.168.141.200: icmp_seq=2 ttl=64 time=0.320 ms| centos6 会是这种状态,因为在200主机被拒绝了。[root@centos7 ~]#iptables -A INPUT -s 192.168.141.1 -j ACCEPT 可以接受本机的windows的访问。
[root@centos7 ~]#iptables -A INPUT -s 192.168.141.253 -j ACCEPT[root@centos7 ~]#iptables -vnL --line-numbersChain INPUT (policy ACCEPT 77 packets, 18048 bytes)num pkts bytes target prot opt in out source destination 1 378 27126 ACCEPT all -- 192.168.141.1 0.0.0.0/0 2 0 0 ACCEPT all -- 192.168.141.253 0.0.0.0/0[root@centos7 ~]#iptables -D INPUT 2 -D是删除记录。
[root@centos7 ~]#iptables -vnL --line-numbersChain INPUT (policy ACCEPT 24 packets, 4665 bytes)num pkts bytes target prot opt in out source destination 1 428 30890 ACCEPT all -- 192.168.141.1 0.0.0.0/0[root@centos7 ~]#iptables -I INPUT 2 -s 192.168.141.150 -j REJECT -I 是插入,2 是第条数据之前
[root@centos7 ~]#iptables -vnL --line-numbersChain INPUT (policy ACCEPT 8 packets, 2365 bytes)num pkts bytes target prot opt in out source destination 1 1111 82147 ACCEPT all -- 192.168.141.1 0.0.0.0/0 2 0 0 REJECT all -- 192.168.141.150 0.0.0.0/0 reject-with icmp-port-unreachable3 0 0 REJECT all -- 192.168.141.0/24 0.0.0.0/0 reject-with icmp-port-unreachable[root@centos7 ~]#iptables -R INPUT 2 -s 192.168.141.100 -j ACCEPT -R是替换。
[root@centos7 ~]#iptables -vnL --line-numbersChain INPUT (policy ACCEPT 6 packets, 2264 bytes)num pkts bytes target prot opt in out source destination 1 1249 91632 ACCEPT all -- 192.168.141.1 0.0.0.0/0 2 0 0 ACCEPT all -- 192.168.141.100 0.0.0.0/0 3 0 0 REJECT all -- 192.168.141.0/24 0.0.0.0/0链管理:
-N:新增一条自定义链; -X:delete,删除自定义的空链;先清除规则,才能删除链; -P:policy,设置链的默认策略; ACCEPT:接受; DROP:丢弃;不响应; REJECT:拒绝; -E:rename,重命名自定义的未被引用的链;(引用计数为0)规则管理:-A:append,追加,默认为最后一个; -I:insert,默认插入,默认为第一个; -D:delete,删除,两种格式,指定规则或指定规则条数; (1)rule specification (2)rule number-R:replace替换,类似-D,指明替换哪一条;rule number -F:flush,清空规则表,冲刷规则,可冲表上的一条链,也冲掉一个表上的所有链,也可指明冲掉哪条链上的哪条规则; -Z:zero,置0;给iptables计数器置0;iptables的每条规则,都有两个计数器: (1)有本规则匹配到的所有的packets (2)由本规则匹配到的所有packets大小之和-S:列出规则selected,以iptables-save命令的格式显示链上的规则;重定向保存规则;相当于iptables-save命令;-L:list,列出规则; -n:numeric,以数字格式显示地址和端口;禁止反解端口号对应的服务名; -v:verbose,显示详细信息;支持-vv,-vvv -x:exactly,显示计数器的精确值而非单位换算后的结果;iptables --line-numbers:显示链上的规则的编号 这就是为什么-D删除规则条目时,有两种方式,一是指明规则编号,二是指明具体规则;组合使用:-nvL,L要写在后面;iptables举例:一、iptables -t mangle -nL 查看mangle表 二、iptables -N testchain 创建自定义链,添加链testchain 三、iptables -E testchain mychain 重命名自定义链为mychain 四、iptables -X mychain 只能删除空链 五、iptables -t filter -P FORWARD DROP 设定FORWARD默认策略,过滤为丢弃转发,-t filter可省略六、iptables -P INPUT DROP 设置INPUT默认策略 七、iptables -nL INPUT 查看指定某个链上的规则rpm -ql iptables 查看安装后生成的文件以小写字母.so结尾的一般为matches模块;例如:/usr/lib64/xtables/libxt_addrtype.so以大写字母.so结尾的一般为target模块;例如:/usr/lib64/xtables/libipt_REJECT.so设:此时在本机地址为172.18.11.114,在远程主机172.18.11.111不能ping通,ssh链接也无法登录;
iptables -A INPUT -s 172.18.11.112 -d 172.18.11.114 -j ACCEPT 设置入栈放行;iptables -A OUTPUT -d 172.18.11.112 -s 172.18.11.114 -j ACCEPT 设置出栈放行; 此时,只有172.18.11.112能ping通本地主机;iptables -A INPUT ! -s 172.18.11.112 -d 172.18.11.114 -j ACCEPT
iptables -A OUTPUT ! -d 172.18.11.112 -s 172.18.11.114 -j ACCEPT 此时,只有172.18.11.112不能连接本地主机;iptables -A INPUT -s 172.18.0.0/16 -d 172.18.11.114 -p tcp -j ACCEPT
iptables -A INPUT -s 172.18.0.0/16 -d 172.18.11.114 -p tcp -j ACCEPT 此时,在172.18.11.111主机不能ping通本机,但可以ssl本机;ping命令中的ICMP协议: 00 协议类型和代码:表示ping应答; 80 协议类型和代码:表示ping请求;
本机被ping时,别人的请求时,icmp协议类型,入栈为8,出栈是0; 本机ping别人时,icmp协议类型,出栈是8,入栈是0;允许自己ping别人,禁止别人ping自己:iptables -A OUTPUT -s 172.18.11.114 -d 0/0 -p icmp --icmp-type 8 -j ACCEPT 出栈设置iptables -A INPUT -s 0/0 -d 172.18.11.114 -p icmp --icmp-type 0 -j ACCEPT 入栈设置开放别人可ping自己:
iptables -A INPUT -d 172.18.11.114 -p icmp --icmp-type 8 -j ACCEPT 入栈设置iptables -A OUTPUT -s 172.18.11.114 -p icmp --icmp-type 0 -j ACCEPT 出栈设置显示扩展:必须使用-m指明扩展名称;小写名称都是匹配条件扩展,大写名称为显示扩展;
multiport:多端口匹配 以离散方式定义多端口匹配,最多可以指定15个端口1、显示扩展,多端口一条规则指明:开放22和80端口:iptables -I INPUT -s 0/0 -d 172.18.11.114 -p tcp -m multiport --dports 22,80 -j ACCEPTiprange:指明一段连续的ip地址范围作为原地址或目标地址匹配;
[!] --src-range from[-to]:原地址范围; [!] --dst-range from[-to]:目标地址范围;string:对报文中的应用层数据做字符串匹配检测;对内核版本要大于2.6.14-algo {bm|kmp}:算法 (mbboyer-moore,kmp=knuth-pratt-morris)[!] --string pattern:给定要检查的字符串模式 [!] --hex-string pattern:给定要检查的字符串模式,十六进制;2、禁止响应页面内容有test字样iptables -I OUTPUT -s 172.18.11.114 -d 0/0 -p tcp --sport 80 -m string --algo bm --string "test" -j REJECT3、工作时间内9:00-16:00,放行访问telnet服务iptables -R INPUT 4 -d 172.18.11.114 -p tcp --dport 23 -m iprange --src-range 172.18.11.1-172.18.11.111 -m time --timestart 09:00:00 --timestop 16:00:00 --weekdays 1,2,3,4,5 -j ACCEPTconnlimit:根据每客户端做并发连接数限制,即每客户端最多发起的连接数量;
--connlimit-upto n:连接数量小于等于n,则匹配; --connlimit-abvoe n:连接数量大于n则匹配;4、限制每台主机访问telnet最大并发数为2个iptables -A INPUT -s 0/0 -d 172.18.11.114 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT5、允许别人ping设置一分钟20包,突发值为3,表示一次ping需要3秒;iptables -R INPUT 5 -d 172.18.11.114 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 3 -j ACCEPTstate:是conntrack的子集,用于实现对报文的状态做连接追踪; [!] --state state
5种状态:一、INVALID:无法识别的连接; 二、ESTABLISHED:连接追踪模板当中存在的记录的连接; 三、NEW:连接追踪模板当中不存在的连接请求; 四、RELATED:相关联的连接; 五、UNTRACKED:未追踪的连接;6、允许172.18网段访问,本机的telnet,ssh,web服务
iptables -F 清空规则,默认均为拒绝访问iptables -A INPUT -s 172.18.0.0/16 -d 172.18.11.114 -p tcp -m multiport --dports 22,23,80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -d 172.18.0.0/16 -s 172.18.11.114 -p tcp -m multiport --sports 22,23,80 -m state --state ESTABLISHED -j ACCEPT7、开放ping请求,让别人能ping进来iptables -A INPUT -d 172.18.11.114 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -s 172.18.11.114 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT练习:判断下述规则的意义:
1、iptables -N clean_in 创建自定义链2、iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP 丢弃目标地址为全1,ping包请求;3、iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP 丢弃172.16网段的主机ping包;4、iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP 协议为tcp,状态为new,不是tcp第一次握手都丢弃;5、iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP 协议为TCP标志位全部为1都丢弃;6、iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP 协议为TCP标志位全部为0都丢弃;7、iptables -A clean_in -d 172.16.100.7 -j RETURN 目标地址为172.16.100.7就返回调用clean_in的链上;8、iptables -A INPUT -d 172.16.100.7 -j clean_in 在input链上目标地址为172.16.100.7就调用clean_in链;9、iptables -A INPUT -i lo -j ACCEPT 在input链上放行流入本地接口的数据;10、iptables -A OUTPUT -o lo -j ACCEPT 在output链上放行流出本地接口的数据;11、iptables -A INPUT -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP在input链上,tcp协议目标端口为53,113,135,137,139,445,流入eth0接口的数据都丢弃;12、iptables -A INPUT -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP在input链上,udp协议目标端口为53,113,135,137,139,445,流入eth0接口的数据都丢弃;13、iptables -A INPUT -i eth0 -p udp --dport 1026 -j DROP在input链上,udp协议目标端口为1026,流入eth0接口的数据都丢弃;14、iptables -A INPUT -i eth0 -m multiport -p tcp --dports 1433,4899 -j DROP在input链上,udp协议目标端口为1433,4899,流入eth0接口的数据都丢弃;15、iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT在input链上,协议为icmp,限制为每秒10个;转载于:https://blog.51cto.com/14128387/2362133