一、总结openssh服务安全加固
1、 openssl交互与非交互方式查看版本
#非交互方式
[root@Rocky8 ~]#openssl version
OpenSSL 1.1.1k FIPS 25 Mar 2021
#交互方式
[root@Rocky8 ~]#openssl
OpenSSL> version
OpenSSL 1.1.1k FIPS 25 Mar 2021
2、openssl生成用户密码
#生成9位随机密码
[root@Rocky8 ~]#openssl rand -base64 9
oQJAegDWhldg
[root@Rocky8 ~]#openssl rand -base64 9
qYZLbAd2U0qh
[root@Rocky8 ~]#openssl rand -base64 9
euswwBQQkWtF
3、修改/etc/ssh/sshd_config配置文件
#ssh连接:忽略询问yes/no
方法1
[root@centos8 ~]$ssh -o StrictHostKeyChecking=no 192.168.188.71
方法2
[root@centos8 ~]$vim /etc/ssh/ssh_config //客户端改为 no
35 # StrictHostKeyChecking no
ssh安全加固配置
1)使用非默认端口
17 #Port 22
2)禁止使用protocol version 1
#修改/etc/ssh/sshd_config配置文件
添加行 Protocol 2 内容
#重启ssh服务
sudo service ssh restart
3)限制可登录用户
45 #MaxAuthTries 6
46 #MaxSessions 10
4)设定空闲会话超时时长
119 #ClientAliveInterval 60
120 #ClientAliveCountMax 3
5)利用防火墙设置ssh访问策略
sudo ufw allow <port>/tcp
sudo ufw allow from <trusted IP address> to any port <port>/tcp
sudo ufw limit <port>/tcp
sudo ufw enable
#其中<port>为SSH端口号,<trusted IP address>为受信任的IP地址。
6)基于口令认证时,使用强密码策略
使用PAM包提供的模块来实现强密码策略。常用的PAM模块:
1. pam_cracklib:该模块可以检查用户输入的密码是否符合指定的密码策略,比如密码长度、复杂度等。在安装了pam_cracklib模块后,你可以通过修改`/etc/pam.d/common-password`文件来定义密码策略。
2. pam_pwquality:该模块可以在用户创建/更改密码时检查密码是否符合指定的复杂度要求。在安装了pam_pwquality模块后,你可以通过修改`/etc/security/pwquality.conf`文件来定义密码策略。
3. pam_tally2:该模块可以在用户尝试登录时记录登录失败的次数,达到一定的次数后,可以锁定用户账户来保护系统安全。在安装了pam_tally2模块后,你可以通过修改`/etc/pam.d/login`文件来启用账户锁定功能。
4. pam_access:该模块可以定义哪些用户可以访问哪些服务。比如你可以指定只有部分用户可以使用ssh登录。在安装了pam_access模块后,你可以通过编辑`/etc/security/access.conf`文件来定义访问控制策略。
在配置完PAM模块后,建议重启系统或重新加载PAM以确保配置文件生效。
7)使用基于KEY的认证
35 PubkeyAuthentication yes
8)禁止使用空密码
69 #PermitEmptyPasswords no
9)禁止root用户直接登录
43 PermitRootLogin yes //Ubuntu默认禁止root账号远程登录
10)只监听特定的IP地址
65 ListenAddress 10.0.0.100
11)经常分析日志
二、总结sudo配置文件格式,总结相关示例。
1、授权规则文件路径
[root@Rocky8 ~]#vim /etc/sudoers
[root@Rocky8 ~]#ls /etc/sudoers.d/
#语法检查
[root@Rocky8 ~]#visudo -c
/etc/sudoers: parsed OK
2、实战案例
[root@Rocky8 ~]#vim /etc/sudoers
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 ding ALL=(root) /usr/bin/mount /dev/sr0 /mnt,/usr/bin/umount /mnt
102 hang ALL=(root) /usr/bin/cat /etc/shadow
#切换用户后测试
[ding@rocky8 ~]#sudo mount /dev/cdrom /mnt/
三、总结PAM架构及工作原理
1、PAM架构图
PAM架构图
2、PAM 框架四个部分
pam_application
pam_application:该部分是PAM模块的入口点,它提供了PAM模块与应用程序之间的接口。应用程序可以使用PAM API调用PAM模块来进行认证和授权。
PAM 库 (存放在/lib64/security/*.so)
[root@Rocky8 ~]#ls /lib64/security/
pam_access.so pam_echo.so pam_group.so pam_mail.so pam_pwquality.so pam_ssh_add.so pam_tty_audit.so pam_usertype.so
pam_cap.so pam_env.so pam_issue.so pam_mkhomedir.so pam_rhosts.so pam_sss_gss.so pam_umask.so pam_warn.so
pam_chroot.so pam_exec.so pam_keyinit.so pam_motd.so pam_rootok.so pam_sss.so pam_unix_acct.so pam_wheel.so
pam_cockpit_cert.so pam_faildelay.so pam_lastlog.so pam_namespace.so pam_securetty.so pam_stress.so pam_unix_auth.so pam_xauth.so
pam_console.so pam_faillock.so pam_limits.so pam_nologin.so pam_selinux_permit.so pam_succeed_if.so pam_unix_passwd.so
pam_cracklib.so pam_filter pam_listfile.so pam_permit.so pam_selinux.so pam_systemd.so pam_unix_session.so
pam_debug.so pam_filter.so pam_localuser.so pam_postgresok.so pam_sepermit.so pam_time.so pam_unix.so
pam_deny.so pam_ftp.so pam_loginuid.so pam_pwhistory.so pam_shells.so pam_timestamp.so pam_userdb.so
一些特殊模块的配置文件
[root@centos pam.d]# ls /etc/security/
access.conf console.apps console.perms group.conf limits.d namespace.d opasswd pwquality.conf time.conf
chroot.conf console.handlers console.perms.d limits.conf namespace.conf namespace.init pam_env.conf sepermit.conf
pam应用程序调用模块配置文件
#主配置文件pam.conf 一般不做修改,通常使用应用程序专用配置文件/etc/pam.d/APP_NAME
[root@Rocky8 ~]#ls /etc/pam.d/
atd cockpit fingerprint-auth passwd postlogin runuser-l smtp sssd-shadowutils sudo-i systemd-user
chfn config-util login password-auth remote screen smtp.postfix su su-l vlock
chsh crond other polkit-1 runuser smartcard-auth sshd sudo system-auth
PAM 服务模块,也称为提供者
3、PAM工作原理
PAM工作原理:
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)pam_.s0
PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于lib64/security下)进行安全认证
PAM认证过程
1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件股是
在/ete/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
四、 总结PAM配置文件格式,总结相关示例, nologin.so, limits,等模块的使用。
1、PAM配置文件格式说明
1.通用配置文件/etc/pam.conf格式,此格式不使用
2.专用配置文件/etc/pam.d/格式
**pam专有配置文件格式**
1 type control module-path arguments
**各部分含义解释**
1)app]ication:指服分名,如,te]het、1og1n、ftp等,服务名P"OTHER”代表所有没有在该文件中明确配置的其它服务
2)type:指模块类型,即功能
3)control ;PAM车该如何处理与该服务相关的PAM模统的成功战失败情况,一个关健词实现
4)module-path: 用来指明本模块对应的程序文件的路径名
5)Arguments;用来传递给该模块的参数
实例:以login为例
[root@Rocky8 ~]#vim /etc/pam.d/login
1 #%PAM-1.0
2 auth substack system-auth
3 auth include postlogin
4 account required pam_nologin.so
5 account include system-auth
6 password include system-auth
7 # pam_selinux.so close should be the first session rule
8 session required pam_selinux.so close
9 session required pam_loginuid.so
10 session optional pam_console.so
11 # pam_selinux.so open should only be followed by sessions to be executed in the user context
12 session required pam_selinux.so open
13 session required pam_namespace.so
14 session optional pam_keyinit.so force revoke
15 session include system-auth
16 session include postlogin
17 -session optional pam_ck_connector.so
2、总结nologin.so, limits,等模块的使用
1)模块:pam_nologin.so
*功能*
1、如果/etc/nologin 文件存在,将导致非root 用户不能登录,且如果/etc/nologin 文件里面存在一些内容时,则非root用户被拒绝时,还会显示文件里面的内容。但不影响su登录;
2、如果用户shell 是/sbin/nologin 时,当该用户登录时,会被拒绝登录;
2)模块 :pam_limit.so
*功能*
在用户级别实现对其可使用的资源的限制,例如: 可打开的文件的数量,可运行的进程的数量,可用内存空间
限制用户可使用的资源的方式:2种
1、ulimit 命令 :立即生效,但无法保存
-n # 最多的打开的文件的描述符的个数,例如可通过此限制其他主机对本机httpd 的压力测试
-u # 最大用户进程数,针对所有用户。只能调小,不能调大
-S # 使用的(软)资源限制
-H # 使用的(硬)资源限制
-a # 列出所有的限制值
2、修改配置文件
/etc/security/limits.conf
/etc/security/limits.d/*.conf
**limit 通过专门的配置文件来进行设置**
格式
[root ~]#vim /etc/security/limits.conf
50 #<domain> <type> <item> <value>
1、*< domain> : 应用于哪些对象*
username : 指明某单个用户
: 某组内所用用户
*: 所有用户
2、< type> :限制的类型
Soft : 软限制,普通用户自己可以修改
Hard 硬限制,由root用户设定,且通过kernel强制生效
-二者同时限定
3、< item> : 限制哪些资源
nofile :所能够同时打开的最大文件数量,默认为1024
nproc 所能够同时运行的进程的最大数量,默认为1024
rss 实际分配给进程的物理内存
maxlogin 某用户的最多登录次数
4、< value> 指定具体值
示例:修改与查看系统各资源的默认值
[root ~]#ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 6992
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 6992
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root ~]#ulimit -n 10000 *实现临时修改*
open files (-n) 10000
**apache 用户可打开1024个文件;student 用户不能运行超过20个进程**
[root ~]#vim /etc/security/limits.conf
54 apache - nofile 1024
55 # hard nproc 20
五、实现私有时间服务器
chrony搭建ntp服务
#配置服务端
[root@centos8 ~]# yum -y install chrony
[root@centos8 ~]# vim /etc/chrony.conf
3 #pool 2.rocky.pool.ntp.org iburst
4 server ntp.aliyun.com iburst
6 server time1.aliyun.com iburst
24 # Allow NTP client access from local network.
25 allow 192.168.0.0/16
34 # Serve time even if not synchronized to a time source.
35 #local stratum 10
36 local stratum 10
[root@centos8 ~]# systemctl restart chronyd
#配置客户端
[root@centos7 ~]#vim /etc/chrony.conf
5 server 192.168.188.81 iburst
[root@centos7 ~]# systemctl restart chronyd
#验证结果
[root@Rocky8 ~]# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.188.81 3 6 377 43 -1306us[ +144us] +/- 52ms
六、总结DNS域名三级结构
1、DNS三级域名结构图
2、DNS名称结构的三个级别:顶级域名、二级域名、子域名
DNS(Domain Name System)是用于将域名解析为IP地址的系统。DNS的名称结构分为三个级别,分别是:
1. 顶级域名(Top-Level Domain,TLD):顶级域名是DNS名称结构的最高级别。常见的顶级域名包括.com、.org、.net等。顶级域名由ICANN(Internet Corporation for Assigned Names and Numbers)进行管理。
2. 二级域名(Second-Level Domain,SLD):二级域名是紧随在顶级域名后面的一级域名。例如,在域名.dingbh.top中,dingbh就是二级域名。二级域名的注册和管理由域名注册商进行。
3. 子域名(Subdomain):子域名是在二级域名下的更低级别的域名。例如,在www.dingbh.top中,www就是一个子域名。子域名可以无限级别地扩展,例如blog.dingbh.top、support.blog.dingbh.top等等。
总结:DNS名称结构分为三个级别,分别是顶级域名、二级域名和子域名。顶级域名是DNS名称结构的最高级别,由ICANN进行管理;二级域名是紧随在顶级域名后面的一级域名,由域名注册商注册和管理;子域名是在二级域名下的更低级别的域名,可以无限级别地扩展。
七、总结DNS服务工作原理,涉及递归和迭代查询原理
1、DNS的工作原理
域名解析和缓存
**DNS服务的工作原理可以分为两个主要过程:域名解析和缓存**
1. 域名解析
当用户在浏览器中输入一个网址时,浏览器会向本地的DNS服务器(运营商提供的或者是配置的公共DNS服务器)发送一个DNS查询请求,这个请求包含要访问的域名。
本地DNS服务器会首先在自己的缓存中查找是否有该域名的IP地址,如果有缓存,则直接返回给浏览器;如果没有,则向Internet上的根DNS服务器发送查询请求。
根DNS服务器会告诉本地DNS服务器要查询的顶级域名服务器的IP地址(例如.com、.cn等)。本地DNS服务器再向顶级域名服务器发送查询请求,顶级域名服务器会告诉本地DNS服务器要查询的二级域名服务器的IP地址(例如baidu.com、google.com等)。
本地DNS服务器再向二级域名服务器发送查询请求,二级域名服务器会告诉本地DNS服务器该域名的IP地址,本地DNS服务器再把该IP地址返回给用户的浏览器,这时用户的浏览器就可以访问对应的网站了。
2. 缓存
为了减少DNS查询的时间和延迟,每个DNS服务器都会在自己的缓存中保存查询过的域名和IP地址。如果在缓存中找到了对应的IP地址,本地DNS服务器就可以直接返回该IP地址,这样就可以减少查询时间和提高网站访问速度。
如果在缓存中未找到对应的IP地址,本地DNS服务器会依次向上级DNS服务器进行查询,直到查询到对应的IP地址或者所有DNS服务器都没有查询到对应的IP地址。
2、域名解析的两种查询方式
递归查询和迭代查询
**递归查询**
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
**迭代查询**
是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
八、实现私有DNS, 供本地网络主机作DNS递归查询。
实现私有DNS,供本地网络主机作DNS递归查询,可以通过以下步骤实现:
1、DNS主机配置
1)主配置文件中定义区域
在/etc/named.conf或/etc/named.rfc1912.zones文件中添加以下内容
[root ~]#vim /etc/named.conf
zone "dingbh.top" {
type master;
file "dingbh.top.zone";
};
2)定义区域数据库文件
[root ~]#vim /var/named/dingbh.top.zone
1 $TTL 1D
2 @ IN SOA master admin.dingbh.top ( 20230530 3H 10M 1D 6H )
3 NS master
4 master A 192.168.188.81
5 www A 192.168.188.81
6 db A 192.168.188.81
7 node1 A 1.1.1.1
#配置生效方法
第一种:
[root ~]#rndc reload
server reload successful
第二种:
[root ~]#systemctl reload named.service
第三种:
[root ~]#service named reload
Redirecting to /bin/systemctl reload named.service
3)语法格式检查
[root ~]#named-checkconf
[root ~]#echo $?
0
4)客户端配置并测试
此处centos 7为客户端
[root ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.188.81
nameserver 192.168.188.2
[root ~]#dig www.dingbh.top
[root ~]# ping -w1 -c1 www.dingbh.top
PING www.dingbh.top (192.168.188.81) 56(84) bytes of data.
64 bytes from 192.168.188.81 (192.168.188.81): icmp_seq=1 ttl=64 time=0.291 ms
--- www.dingbh.top ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.291/0.291/0.291/0.000 ms
私有DNS可提高内部网络的性能和安全性,因为它可以帮助从互联网上转发大量DNS查询请求,并限制非授权主机的访问。同时,私有DNS可以快速将域名解析到内部网络中的服务器或设备,从而增强内部网络的可用性和可靠性。
九、总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
十、实现DNS主从同步
1、配置主服务器
[root ~]# vim /etc/named.conf
11 # listen-on port 53 { 127.0.0.1; }; //注释掉
12 # listen-on-v6 port 53 { ::1; }; //注释掉
20 allow-query { 192.168.188.82; }; //从服务器IP
#主配置文件中定义区域
在/etc/named.conf或/etc/named.rfc1912.zones文件中添加以下内容
[root ~]#vim /etc/named.conf
zone "dingbh.top" {
type master;
file "dingbh.top.zone";
#定义区域数据库文件
[root ~]#vim /var/named/dingbh.top.zone
1 $TTL 1D
2 @ IN SOA master admin.dingbh.top ( 20230530 3H 10M 1D 6H )
3 NS master
4 master A 192.168.188.81
5 www A 192.168.188.81
6 db A 192.168.188.81
7 slave A 192.168.188.82
2、配置从服务器
[root ~]# vim /etc/named.conf
11 # listen-on port 53 { 127.0.0.1; }; //注释掉
12 # listen-on-v6 port 53 { ::1; }; //注释掉
19 allow-query { none; }; //不允许其他主机进行数据传输
[root-2 ~]# vim /etc/named.rfc1912.zones
16 zone "dingbh.top" {
17 type slave;
18 masters { 192.168.188.81; };
19 file "slaves/dingbh.top.zone.slave";
20 };
systemctl restart named //第一次启动
rndc reload //加载配置文件
3、验证结果
[root ~]#cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.188.81
nameserver 192.168.188.82
[root ~]# ping -w1 -c1 www.dingbh.top
PING www.dingbh.top (192.168.188.82) 56(84) bytes of data.
64 bytes from 192.168.188.82 (192.168.188.82): icmp_seq=1 ttl=64 time=0.291 ms
--- www.dingbh.top ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.291/0.291/0.291/0.000 ms
#关闭主DNS服务器测试
[root ~]#host www.dingbh.top
后续实现DNS子域授权?基于acl实现智能DNS?
十一、总结防火墙分类
按保护范围划分:
主机防火墙:服务范围为当前一台主机
网络防火墙:服务范围为防火墙一侧的局域网
按实现方式划分:
硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为,
山石hillstone,天融信,启明星辰,绿盟,深信服,PaloAlto,fortinet飞塔, Cisco, Checkpoint, NetScreen(2004年被|uniper用40亿美元收购)等
软件防火墙:运行于通用硬件平台之上的防火墙的应用软件
按网络协议划分:
网络层防火墙:OSI模型下四层,又称为包过滤防火墙
应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层
十二、总结iptable 5表5链, 基本使用,扩展模块。
iptables是Linux操作系统中最常用的防火墙工具,它可以通过过滤、转发、重定向等功能实现网络流量管理和安全防护。
1、5表5链
iptables主要包括五个表,每个表包含若干个链。
**5链**
PREROUTING、OUTPUT、INPUT、FORWARD、POSTROUTING
**5表**
1. filter表:该表用于过滤流量,是最基本的防火墙表。主要包括三个链:INPUT、OUTPUT、FORWARD。其中,INPUT链用于过滤入站流量,OUTPUT链用于过滤出站流量,FORWARD链用于过滤转发流量。
2. nat表:该表主要用于网络地址转换(NAT),包含三个链:PREROUTING、POSTROUTING、OUTPUT。其中,PREROUTING链用于对入站流量进行处理,POSTROUTING链用于对出站流量进行处理,OUTPUT链用于对本机的流量进行处理。
3. mangle表:该表主要用于对流量头部进行修改,包含五个链:PREROUTING、OUTPUT、INPUT、FORWARD、POSTROUTING。主要功能包括:修改TTL、修改包头、修改流量的ToS字段等。
4. raw表:该表主要用于设置一些特殊情况下的流量包裹,例如对一些连接的包不进行连接跟踪。该表包含两个链:PREROUTING和OUTPUT。
5. security表:该表用于内核安全模块SELinux的规则控制,主要包括INPUT、OUTPUT、FORWARD三个链。
实例:查询表可以使用得链
[root ~]#iptables -t mangle -nvL
2、基本使用
iptables命令的基本使用方式包括:
添加规则(-A)
[root ~]#iptables -A INPUT -s 192.168.188.99 -j ACCEPT
删除规则(-D)
[root ~]# iptables -D INPUT 1
修改规则(-R)
[root ~]# iptables -R INPUT 3 -s 192.168.188.0/24 -j DROP
清空规则(-F)
[root ~]# iptables -F
查看规则(-L)
[root ~]# iptables -nvL
创建WEB链(-E)
[root ~]#iptables -E web WEB 创建WEB链
3、扩展模块
iptables还提供了一些扩展模块,以实现更多高级功能。常用的扩展模块包括:
- conntrack模块:连接跟踪模块,可用于对建立或终止的连接进行跟踪和管理。
- limit模块:可以用于限制某个IP或者端口的流量速率。
- state模块:用于设置规则,并表示该规则适用于何种连接状态,如NEW、ESTABLISHED、RELATED等。
- tcp模块:用于根据TCP协议特性过滤流量。
- udp模块:用于根据UDP协议特性过滤流量。
#实现仅自身访问web页面#
[root ~]#iptables -A INPUT -s 192.168.188.99 -j ACCEPT //允许本地主机访问
[root ~]#iptables -A INPUT -i lo -j ACCEPT //允许本地端口经过
[root ~]#iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT //允许http本地80端口访问
[root ~]#iptables -I INPUT 3 -s 192.168.188.0/24 -j REJECT //拒绝192.168.188.0/24网段通过
[root ~]#iptables -nvL --line-nu
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 867 74408 ACCEPT all -- * * 192.168.188.99 0.0.0.0/0
2 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4 1 76 REJECT all -- * * 192.168.188.0/24 0.0.0.0/0 reject-with icmp-port-unreachable
主机访问web
#http://192.168.188.81/epel/
[root ~]#iptables -E web WEB //创建WEB链
**multiport扩展**
[root ~]#iptables -A WEB -p tcp -m multiport --dports 80,443 -j ACCEPT //添加iptables规则内容
[root ~]#iptables -nvL --line-nu
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 3722 298K ACCEPT all -- * * 192.168.188.99 0.0.0.0/0
2 30 3177 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
4 60 9432 REJECT all -- * * 192.168.188.0/24 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain WEB (0 references) //WEB链添加成功
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
[root ~]#iptables -IINPUT 3 -j WEB //直接调用WEB链
[root ~]#iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3895 311K ACCEPT all -- * * 192.168.188.99 0.0.0.0/0
30 3177 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 686 WEB all -- * * 0.0.0.0/0 0.0.0.0/0 //直接调用WEB链
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
[root ~]#iptables -F WEB //清除WEB链,事先清除在用规则
***mac扩展***
[root ~]#iptables -IINPUT 4 -m mac --mac-source 00:0c:29:7e:1d:c9 -j ACCEPT //以mac方式添加规则
***STRING扩展***
[root ~]#iptables -A OUTPUT -m string --alog bm --from 62 --string "goole" -j REJECT //过滤有关goole的访问
***time扩展***
***connlimit扩展***
--connlimit-upto N //连接的数量小于等于N匹配
--connlimit-above N //连接的数量最大为N时匹配
[root ~]#iptables -AINPUT -m connlimit --connlimit-above 10 -j REJECT //连接的数量最大为10时匹配
--limit-burst number #前多少个包不限制
--limit