不定期补充、修正、更新;欢迎大家讨论和指正
iptables配置
早期Linux系统,默认是使用iptables来配置防火墙,尽管被firewall取代,但目前仍在生产环境有一席之地。
值得注意的是iptables只是防火墙管理工具,真正实现防火墙功能的是Linux内核实现包过滤的netfilter.
iptables有四个策略表和五个规则链,也就是常说的“四表五链”
四表五链
filter表——过滤数据包
NAT表——用户网络地址转换(IP、端口)
Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
RAW表——决定数据是否被状态跟踪机制处理 //只有
INPUT链——处理流入的数据包
OUTPUT链——处理流出的数据包
FORWARD——处理转发的数据包
PREROUTING——进行路由选择前处理数据包
POSTROUTING——进行路由选择后处理数据包
参数
--append -A chain //在末尾添加一条规则链
--check -C chain //Check for the existence of a rule
--delete -D chain //删除指定(链名)规则链
--delete -D chain rulenum //删除指定(链号)规则链 默认首位1
--insert -I chain [rulenum] //在指定位置添加规则链 默认在首位1
--replace -R chain rulenum //取代指定规则链 默认首位1
--list -L [chain [rulenum]] //列出指定链的规则或者全部规则链
--list-rules -S [chain [rulenum]]
--flush -F [chain] //清空指定链的规则或则轻空全部规则链
--zero -Z [chain [rulenum]] //Zero counters in chain or all chains
--new -N chain // Create a new user-defined chain
--delete-chain -X [chain] //Delete a user-defined chain
--policy -P chain target //设置规则链的默认策略 有四种
#ACCEPT(允许流量通过)
#REJECT(拒绝流量通过)//拒绝后会回复发送方“已收到,但被丢弃”的消息
#LOG(记录日志信息)
#DROP(拒绝流量通过)//直接丢弃不响应
--rename-chain -E old-chain new-chain //Change chain name, (moving any references)
选项:
--ipv4 -4 Nothing (line is ignored by ip6tables-restore)
--ipv6 -6 Error (line is ignored by iptables-restore)
[!] --protocol -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...] //配置来源地址IP/MASK !号表示除这个IP外
[!] --destination -d address[/mask][...] destination specification
[!] --in-interface -i input name[+] network interface name ([+] for wildcard)
--jump -j target target for rule (may load target extension)
--goto -g chain jump to chain with no return
--match -m match extended match (may load extension)
--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+] network interface name ([+] for wildcard)
--table -t table table to manipulate (default: `filter')
--verbose -v verbose mode
--wait -w [seconds] maximum wait to acquire xtables lock before give up
--wait-interval -W [usecs] wait time to try to acquire xtables lock
default is 1 second
--line-numbers //打印行号 常与-L使用
--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
--modprobe=<command> try to insert modules using this command
--set-counters PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
基本操作
- 占坑
firewall配置
firewall有两种模式,基于命令行的firewall-cmd和图形化界面的firewall-config
firewall-cmd
参数
firewall-cmd的参数以--开头,大多数可以分为两大部分 如--add-source=
第一部分:
--add
--change
--info
--list
--query
--remove
--get(set和get后接的命令和其他不大一样)
--set
第二部分:以-开头连接在第一部分后面
-forwadd-port
-icmp-block
-icmp-block-inversion
-interface //接口
-lockdown-whitelist-command
-lockdown-whitelist-context
-lockdown-whitelist-uid
-lockdown-whitelist-user
-masquerade //伪装
-port //端口
-protocol //协议
-rich-rule //富规则
-service //服务
-source //来源
-source-port //源端口
-zone //空间(类似模板,用于快速切换不同场合)有9种
#trusted 允许所有的数据包
#home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
#internal 等同于home区域
#work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
#public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
#external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
#dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
#block 拒绝流入的流量,除非与流出的流量相关
#drop 拒绝流入的流量,除非与流出的流量相关
--get-active-zones
--get/set-default-zone
--get/set-description
--get-helpers
--get-icmptypes
--get-ipset-types
--get/set-log-denied
--get-services
--get/set-short
--get-zone-of-interface=
--get-zones
--info-ipset=
3.其他
--complete-reload
--direct-
--help
--panic-off/on
--permannent //若想设置的规则永久生效 则加上这条命令 如firewall-cmd --add-port=22 --permanent
--reload
--state
--version //防火墙版本
--zone=
基本操作
firewall-config
TCP Wrappers
TCP Wrappers是RHEL 7系统默认启动的流量监控程序,工作在传输层。
对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的程序都可以受TCP_Wrappers控制。
TCP Wrappers是RHEL 7系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作。换句话说,Linux系统中其实有两个层面的防火墙,第一种是前面讲到的基于TCP/IP协议的流量过滤工具,而TCP Wrappers服务则是能允许或禁止Linux系统提供服务的防火墙,从而在更高层面保护了Linux系统的安全运行。
TCP Wrappers服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。控制列表文件修改后会立即生效,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果这两个文件全都没有匹配到,则默认放行流量——摘自《Linux就该这么学》
在配置TCP Wrappers服务时需要遵循两个原则
1.编写拒绝策略规则时,填写的是服务名称,而非协议名称;
2.建议先编写拒绝策略规则,再编写允许策略规则,以便直观地看到相应的效果
编写规则
service_list@host: client_list
service_list:服务列表,多个服务时用 "," 隔开
@host: 设置允许或禁止别人从自己 的哪个网口进入,不写则代表全部
client_list: 访问表,可用空格或 "," 隔开
基于IP地址: 192.168.10.10 192.168.10.(网段)
基于主机名: jojo.cc
基于网络: 192.168.126.0/255.255.255.0(centos7可直接写24)
内置ACL:ALL(所有主机)、LOCAL(本地主机)
例子
sshd:192.168.10.10
允许个别、拒绝所有:在allow文件添加允许的策略,deny文件添加all.
拒绝个别、允许所有:allow文件为空,deny文件添加拒绝的策略。
注意:编辑好配置文件后并不需要重启TCP_Wrappers服务