网络安全A模块(最全详解)
密码策略(Windows,Linux)
密码策略必须同时满足大小写字母、数字、特殊字符;更改或创建密码时执行复杂性要求;
windows操作步骤:打开本地安全策略,账户策略,密码策略,启用密码复杂性
linux操作步骤:vim /etc/pam.d/system-auth
在password requisite pam_cracklib.so try_first_pass retry=3 type=
加入ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
设置密码复杂程度,允许重试3次,新密码必须与旧密码有4位不同,最小位数6位,大写字母至少包含2位,小写字母至少包含3位,特殊字母个数至少包含1位;(Linux)
vim /etc/pam.d/system-auth
pam_cracklib.so | 新建密码时会受到该代码限制,新密码复杂度不满足不要 |
---|---|
retry | 尝试次数 |
difok | 最小不同字符 |
lcredit | 小写字母个数 |
ocredit | 特殊字符个数 |
ucredit | 大写字母个数 |
dcredit | 数字个数 |
minlen | 最小长度 |
设置禁止使用最近用过的6个旧密码;
vim /etc/pam.d/system-auth
最小密码长度不少于 8 个字符;
windows操作步骤:打开本地安全策略,账户策略,密码策略,修改密码最小值为8
linux操作步骤:vim /etc/pam.d/system-auth 在这行添加minlen=8
强制密码历史为5个密码;
密码最长存留期为45天;
登录策略(Windows,Linux)
一分钟内仅允许5次登录失败的尝试,超过5次,登录帐号锁定1分钟;
windows操作步骤:打开本地安全策略,账户策略,账户锁定策略,修改账户锁定阈值为5次,修改账户锁定时间为1分钟
even_deny_root | 也限制root用户; |
---|---|
deny | 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 |
unlock_time | 设定普通用户锁定后,多少时间后解锁,单位是秒; |
root_unlock_time | 设定root用户锁定后,多少时间后解锁,单位是秒; |
linux操作步骤:vim /etc/pam.d/login
加入第三条auth:auth required pam_tally2.so deny=6 unlock_time=60 even_deny_root root_unlock_time=60
在用户登录系统时,应该有“For authorized users only”提示信息;
linux操作步骤:vim /etc/issue、vim /etc/issue.net 、vim /etc/motd
添加提示信息:For authorized users only
SSH服务:vim /etc/ssh/sshd_config 将Banner的注释去掉,修改为以下内容
重启sshd服务 service sshd restart windows
操作步骤:打开本地安全策略组,进入本地策略,打开安全选项,对交换式登录:试图登录的用户消息文本进行编辑
远程用户非活动会话连接超时应小于等于5分钟;对于远程登录的帐户,设置不活动超过时间5分钟自动断开连接;(Window将RDP-Tcp属性对应的配置界面截图)
linux操作步骤:Vim /etc/ssh/sshd_config
将ClientAliveInterval和ClientAliveCountMax去掉#并修改
windows操作步骤:打开管理工具,找到远程桌面服务,进入远程桌面会话主机设置右键RDP-Tcp属性,在会话栏目进行修改
用户安全管理(Windows)
设置user1用户只能在上班时间(周一至周五的9:00~18:00可以登录,将user1的登录时间配置界面截图;
net user user1 /time:M-F,9:00-18:00
net user user1 查看
禁止从远端系统强制关机,将该权限只指派给administrators组;
在组策略中只允许管理员账号从网络访问本机;
管理工具-本地安全策略-本地策略-用户权限分配-从网络访问此计算机,把除了administrator以外的用户删除,应用
设置操作系统中的关键目录(system32、hosts、Program Files、Perflogs)的权限为最优状态,即仅允许管理员用户进行读取及运行;
找到 hosts 文件的位置, C:\Windows\System32\drivers\etc 右键 hosts 文件属性 -> 安全 -> 高级 -> 所有者 将所有者改为管理员组
高级 -> 权限 -> 更改权限 将 包括可从该对象的父项继承的权限 取消勾选
弹出窗口,点击删除 点击添加,将 Administrators 组加入,设置权限为 读取 和 运行
?
禁止SAM 帐户和共享的匿名枚举;
在密码过期的前5天开始提示用户在过期之前更改密码;
对服务器进行远程管理安全性SSL加固,防止敏感信息泄露被监听;
开始-管理工具-远程桌面服务-远程桌面会话主机配置-RDP-Tcp属性-安全性
查找并删除服务器中可能存在的帐号hacker;
普通用户进行最小权限管理,对关闭系统仅限管理员帐号;
本地安全策略–本地策略–用户权限分配,删除关闭系统中除Administrators外所有的组
设置取得文件或其他对象的所有权,将该权限只指派给administrators组;
禁止普通用户使用命令提示符;
win+r输入gpedit.msc>用户配置>管理模板>系统>启用阻止访问命令提示符
设置不显示上次登录的用户名;交互式登录时不显示用户名;
禁止普通用户使用注册表编辑工具以及Ctrl+Alt+Del;
禁止发送未加密的密码到第三方SMB 服务器;
打开本地安全策略,本地策略,安全选项,禁止发送未加密的密码到第三方SMB 服务器
禁用来宾账户,禁止来宾用户访问计算机或访问域的内置账户;
打开本地安全策略,本地策略,安全选项,禁用来宾账户,禁止来宾用户访问计算机或访问域的内置账户
WEB安全加固(Windows,Linux)
关闭FTP匿名访问;
为了防止web中.mdb数据库文件非法下载,请对Web配置文件进行安全加固;
或修改C:\Windows\System32\inetsrv\config\applicationHost.config文件,Ctrl加F搜索.asa,在requestFilering标签下添加<add fileExtensions=".mdb" allowed='false'/>
为了减轻网站负载,设置网站最大并发连接数为1000;
防止文件枚举漏洞枚举网络服务器根目录文件,禁止IIS短文件名泄露;
方法一:cmd输入:fsutil 8dot3name set 1 2008 r2????????fsutil behavior set disable8dot3 1 2003
方法二:win加r输入regedit打开注册表,搜索NtfsD,修改NtfsDisable8dot3NameCreetion值为1
方法三:如下图
关闭IIS的WebDAV功能增强网站的安全性;
添加角色服务,webdav发布,打开iis服务器,打开默认网站,找到webdav创作规则,webdav设置,禁用webdav
限制目录执行权限,对picture和upload目录设置执行权限为无;
管理工具->IIS管理器->网站->web->picture/upload->IIS.处理程序映射,右键空白处->编辑功能权限,取消勾选执行 如没有这两个目录,进入网站目录创建这两个文件夹
开启IIS的日志审计记录(日志文件保存格式为W3C,只记录日期、时间、客户端IP地址、用户名、方法);
linux操作步骤:vim /etc/httpd/conf/httpd.conf,按照下方代码添加和修改
LogFormat "%a %i %t %U %s %b" common #分别对应客户端ip、用户,时间、行为、状态码、大小;
CustomLog logs/access_log common #日志文件位置
流量完整性保护(Windows, Linux)
对Web网站进行HTTP重定向HTTPS设置,仅使用HTTPS协议访问网站(Windows)(注:证书颁发给test.com 并通过https://www.test.com访问Web网站)
windows操作步骤:
1.安装iiS服务器和证书颁发机构
2.打开iis服务器,在主页,服务器证书,创建服务器证书,默认下一步,将证书保存申请在桌面
3.打开ie浏览器,打开http://localhost/certsrvr网址 申请证书->高级证书申请->使用 base64 编码申请,将刚刚保存到桌面的文件内容填入保存的申请提交,返回http://localhost/certsrv/->下载 CA 证书、证书链或 CRL -> 下载证书,保存到桌面
4.管理工具->证书颁发机构->挂起的证书,右键->所有属性->颁发证书.点击颁发的证书
5.双击打开刚刚颁发的证书,详细信息->复制到文件,默认下一步,保存到桌面(test.cer)
6.到iis主页,服务器证书,完成证书申请,选择刚刚保存在桌面的test.cer证书 以上创建证书操作可以服务器证书创建自签名证书
7.在iis新建一个网站,物理路径在C盘新建一个目录http,按照下图信息填写,并在网站目录下新建index.html
?
8.编辑hosts文件路径C:\Windows\System32\drivers\etc\hosts,用记事本打开,在最后面添加一行IP www.test.com,并验证网站是否能访问
9.再在IIS新建一个网站,物理路径在C盘新建一个目录https,配置按照下图信息填写
?
10.创建完后前往C:\Windows\System32\inetsrv\config\目录,修改applicationHost.config文件。Ctrl+F查找443,在:后添加www.test.com,保存修改,然后回到IIS管理器,重新启动https网站,可以看到有了主机名www.test.com,https://www.test.com可以正常访问了
11.找到http网站主页的http重定向,重定向目标填写https://www.test.com/$S$Q,重定向行为选择重定向到确切的目标,状态代码选择永久(301)
?
保存退出,重定向网站http,重新启动https网站,再访问https://www.test.com,访问成功截图
linux操作步骤:
修改host文件vim /etc/hosts,IP www.test.com
?
安装ssl组件yum install mod_ssl
?
生成私钥
?
生成证书
?
修改下方代码
?
vim /etc/httpd/conf/httpd.conf
NameVirtualHost 172.16.100.2:443 #修改端口为443
<VirtualHost 172.16.100.2:443>
ServerName www.test.com?#设置域名
SSLEngine on
SSLCertificateFile /etc/httpd/.ssl/server.crt #设置证书
SSLCertificateKeyFile /etc/httpd/.ssl/server.key #设置私钥
</VirtualHost>
?
service httpd restart
?
为了防止密码在登录或者传输信息中被窃取,仅使用证书登录SSH(Data)。
生成私钥和公钥,私钥给客户端,公钥留在服务器
ssh-keygen -t rsa
?
vim /etc/ssh/sshd_config
StrictModes no #可以避免因为~.ssh/文件夹权限设置不正确导致的无法登陆
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用pubkey认证
AuthorizedKeysFile .ssh/id_rsa.pub #公钥文件存放位置
PermitEmptyPasswords no #不允许空密码登录
PasswordAuthentication no #密码验证否
?
服务安全配置(Windows)
禁用TCP/IP上的NetBIOS协议,关闭监听的 UDP 137(netbios-ns)、UDP 138(netbios-dgm)以及 TCP 139(netbios-ssn)端口;
计算机管理 > 服务和应用程序 > 服务 中禁用 TCP/IP NetBIOS Helper 服务
?
在网络连接属性中,双击 Internet协议版本4(TCP/IPv4),单击 高级。在 WINS 页签中,进行如下设置
?
在本地策略里配置禁用未登陆前关机;
?
设置从屏幕保护恢复时需要输入密码,并将屏幕保护自动开启时间设定为五分钟;
?
日志安全配置(Windows)
配置审核登陆,记录内容包括用户登录使用的账户、登录是否成功、登录时间、以及远程登录时间、及用户使用的IP地址;
?
启用本地安全策略中对Windows系统的审核策略更改,成功和失败操作都需要审核;
?
启用本地安全策略中对Windows系统的审核对象访问,成功和失败操作都需要审核。
?
启用本地安全策略中对Windows系统的审核目录服务访问,仅需要审核失败操作;
?
启用本地安全策略中对Windows系统的审核特权使用,成功和失败操作都需要审核;
?
启用本地安全策略中对Windows系统的审核系统事件,成功和失败操作都需要审核;
?
Splunk日志服务器(Windows,Linux)
配置splunk接收Web服务器,安全日志,系统日志,CPU负载,内存,磁盘空间,网络状态;
注意:一定要先配置linux并登录网站开启9997端口的监听接收,然后再配置windows
1.linux
splunk服务器安装在centos6.5(log)
tar -zxvf 文件名 -C /opt
运行splunk cd /opt/splunk/bin/
./splunk start
创建账号密码,通过浏览器打开SPLUNK服务器 172.16.103.250:8000 (默认8000端口)
输入密码用户名,进入单击右上角设置->转发和接收
?
接收数据处单击新增一个9997端口,然后保存
?
?
2.windwos
安装splunk,单击customize options
?
单击next
?
不作任何设置,再继续next
?
采用默认值,继续next
?
根据题目要求勾上需要的选项,继续next
?
建立管理员账号,如果题目没要求,我们设置成跟splunk服务同样的用户名和密码
?
配置部署服务器,其中IP地址就是SPLUNK(LOG)服务器的IP地址,如果不知道的话,事先在服务器通过ifconfig命令获取IP地址。端口号就采用默认的8089
?
配置接收触发器的服务器地址,IP地址同上,端口采用默认的9997
?
单击install,等待安装过程,最后直接单击finish按钮,安装完毕
开始->运行cmd,进入到forward的运行目录
添加服务器,停止SPLUNK触发器,启动SPLUNK
?
?
切换到 web 管理页面,找到转发器实例部署
?
?
点击 setup
?
点击启用,再点保存
?
?
页面就会显示信息
?
上图为最后截图案例
本地安全策略设置(Windows)
关闭系统时清除虚拟内存页面文件;
?
禁止系统在未登录的情况下关闭;
?
禁止软盘复制并访问所有驱动器和所有文件夹;
?
禁止显示上次登录的用户名;
?
禁止自动管理登录;
?
禁止存储网络身份验证的密码和凭据;
?
禁止将Everyone权限应用于匿名用户;
?
在超过登录时间后强制注销;
?
日志监控(Windows)
安全日志文件大小至少为128MB,设置当达到最大的日志大小上限时,覆盖早于30天的日志;
计算机-管理-诊断-windows日志-安全-右键属性-设置日志大小注意,1024KB=1MB,所以128MB=1024*128=131072KB这里应该填入131072,点击应用
?
win加r输入rsop.msc 选择windows设置,安全设置,点击事件日志
?
应用日志文件大小至少为64MB,设置当达到最大的日志大小上限时,覆盖早于15天的日志;
?
win加r输入rsop.msc 选择windows设置,安全设置,点击事件日志
?
系统日志大小至少为32MB,设置当达到最大的日志大小上限时,按需要覆盖事件;
?
win加r输入rsop.msc 选择windows设置,安全设置,点击事件日志
?
Nginx安全策略(Linux)
禁止目录浏览和隐藏服务器版本和信息显示;
vim /etc/nginx/nginx.conf,在http{}里,添加 server_tokens off;
?
防止网站信息探测及泄露,隐是去 Apache 版本和操作系统版本相关信息;
vim /etc/httpd/conf/httpd.conf
ServerTokens Prod????????#隐藏apach版本
?
ServerSignature Off????????#隐藏操作系统版本信息
防止 PHP 版本信息泄露,隐藏 PHP 的 X-Powered-By 信息;
vim /etc/php.ini,添加代码:
防止网站目录信息泄露,禁用目录列表显示;
vim /etc/httpd/conf/httpd.conf,将Option 后的 Indexes 去掉
修改 php 配置文件禁用 php 危险函数:Assert、phpinfo、eval、passthru、exec、system、chroot;
vim /etc/php.ini,添加代码:
为了减轻网站负载,设置网站最大并发连接数为 200;
vim /etc/httpd/conf/httpd.conf
为了保障服务器安全,限制访问 Web 根目录之外的文件;
vim /etc/httpd/conf/httpd.conf
限制HTTP请求方式,只允许GET、HEAD、POST;
vim /etc/nginx/nginx.conf,添加
设置客户端请求主体读取超时时间为10;
vim /etc/nginx/nginx.conf
?
设置客户端请求头读取超时时间为10;
vim /etc/nginx/nginx.conf
?
将Nginx服务降权,使用www用户启动服务;
数据库安全策略
以普通帐户mysql安全运行mysql服务,禁止mysql以管理员帐号权限运行;
vim /etc/my.cnf 在 mysqld 下方添加 user=mysql ,其实这个默认就有
删除默认数据库(test);
登录 mysql (mysql -uroot -p),执行命令
drop database test;
改变默认mysql管理员用户为:SuperRoot;
update mysql.user set user='SuperRoot' where user='root';
使用mysql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!);
update mysql.user set password=md5('P@ssw0rd1!')where user='user1';
?
赋予user1用户对数据库所有表只有select,insert,delete,update权限;
grant select,insert,delete,update on *.* to 'user1'@'localhost';
对忘记mysql数据库SuperRoot管理员密码进行重置操作;
操作步骤:打开mysql配置文件; vim /etc/my.cnf
在[mysqld]选项下加入skip-grant-tables
?
重启mysql服务service mysqld restart,重新登录mysql
update mysql.user set password=password('新密码') where user='SuperRoot';
flush privileges;
?
命令执行完成后退出数据库,将在my.cnf文件中加入的skip-grant-tables字段删除
重启mysql服务service mysqld restart
禁用LOCAL INFILE命令防止非授权用户访问本地文件;
操作步骤:vim /etc/my.cnf
方法一:在[mysqld]下添加 local-infile=0
?
方法二:
?
重启mysql服务service mysqld restart
?
为防止数据库操作信息泄露,请禁止使用MySql命令行历史记录;
rm -rf .mysql_history
ln -s /dev/null /root/.mysql_hitory
为了分析数据库运行过程中的一些异常活动,请开启MySql二进制日志;
操作步骤:vim /etc/my.cnf
在[mysqld]下添加log-bin=mysql-bin
?
保存重启 service mysqld restart,使用 show variables like "log_bin"查看
mysql配置文件中设置禁止dns解析;
设置数据库最大连接数为512,最大错误连接数为100;
服务加固SSH\VSFTPD\HTTPD\BIND\Telent\IIS(Windows, Linux)
SSH 服务加固(Linux)
修改SSH 服务端口为2222;
linux操作步骤:vim /etc/ssh/sshd_config,输入/Port,#Port 22修改Port 2222
验证:service sshd restart,netstat -anltp | grep sshd
?
SSH 禁止root 用户远程登录;
linux操作步骤:vim /etc/ssh/sshd_config
输入/Root, 将#PermitRootLogin yes 修改PermitRootLogin no
修改SSH连接界面静置时间;
vim /etc/ssh/sshd_config,添加
修改登录记录的等级为INFO;
vim /etc/ssh/sshd_config,添加
禁止登陆后显示信息;
vim /etc/ssh/sshd_config,添加
修改 SSHD 的 PID 档案存放地;
vim /etc/ssh/sshd_config,添加
设置root 用户的计划任务。每天早上7:50 自动开启SSH 服务, 22:50 关闭;每周六的7:30 重新启动SSH 服务;
linux操作步骤:vim /etc/crontab,在下面添加
50 7 * * * /etc/init.d/vsftpd start
50 22 * * * /etc/init.d/vsftpd stop
30 7 * * 6 /etc/init.d/vsftpd restart
?
为确保安全Linux系统禁止所有人通过ssh连接除了172.16.1.1这个ip;
vim /etc/ssh/sshd_config 最后一行添加>AllowUsers 172.16.1.1>重启服务
设置RSA证书登录;
vim /etc/ssh/sshd_config
VSFTPD 服务加固(Linux)
vsftpd禁止匿名用户上传;
vim /etc/vsftpd/vsftpd.conf
将#anon_upload_enable=YES修改为anon_upload_enable=NO
激活vsFTPd上传下载日志;
vsFTPd同一个IP只能连接两个;
vim /etc/ssh/sshd_config,添加
限制客户端连接的端口范围在50000-60000;
vim /etc/ssh/sshd_config,添加
限制本地用户登陆活动范围限制在home目录;
修改配置文件,将 ftp 服务预设端口改为 2121,并对 iptables 进行配置;
vim /etc/vsftpd/vsftpd.conf ,在最后添加listen_port=2121
?
添加防火墙规则,iptables -A -INPUT -p tcp -m tcp --dport 2121 -j ACCEPT
禁止匿名用户登录vsftpd服务;
vim /etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO
设置运行 vsftpd 的非特权系统用户为 pyftp;
同一客户机IP地址允许最大客户端连接数10;
最大客户端连接数为100;
vsftpd禁止匿名用户删除和重命名的权限;
vim /etc/ssh/sshd_config,添加
?
设置本地用户创建文件的权限为022;
设置数据连接的超时时间为2 分钟;
去掉注释#data_connection_timeout=120修改为data_connection_timeout=120
设置无任何操作的超时时间为5分钟;
匿名用户访问的最大传输速率为512KB/S;
vim /etc/ssh/sshd_config,添加
用户访问的最大传输速率为1M;
vim /etc/ssh/sshd_config,添加
关闭 ascii 模式下载,防止被用于 DoS 攻击;
关闭 ls -R 命令,防止服务器被 DoS 攻击;
修改 ftp 默认主目录为/ftp 文件夹,并将用户锁定在主目录内;
去掉注释chroot_local_user=yes并添加local_root=ftp
?
设置关闭ftp-data端口不使用主动模式,使用ipv4进行监听;
将connect_from_port_20=YES修改为connect_from_port_20=NO
?
listen=YES
HTTPD服务加固(Linux)
更改默认监听端口为6666;
vim /etc/httpd/conf/httpd.conf
设置禁止目录浏览;
Options Indexes FollowSymLinks修改为:Options FollowSymLinks
其实就是将Indexes去掉,Indexes表示若当前目录没有index.html就会显示目录结构
隐藏Apache版本号;
将ServerTokens OS修改ServerTokens Prod
隐藏操作系统版本信息;
将ServerSignature On修改ServerSignature OFF
将Apache服务降权,用户为apache,用户组为www;
配置滚动日志按天记录网站的访问日志和错误日志;
find / -name rotatelogs
?
#ErrorLog logs/error_log #注释此行,添加下面这行
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log%Y%m%d.log 86400 480"
?
#CustomLog logs/access_log common
#CustomLog "logs/access_log" combined
#注释上面两行,添加下面这行
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log%Y%m%d.log 86400 480" common
BIND服务加固(Linux)
隐藏bind版本号;
vim /etc/named.conf,在配置文件options{ }中添加
directory "/var/named";
version "[no about your business]";
设置不提供递归服务;
在配置文件options{ }中添加
allow-recursion { none; };
Telent服务加固(Linux)
将Telnet服务的端口号修改为2323 ,查看Telnet服务端口信息;
vim /etc/services
限制Telnet用户连接,单个IP允许的最大连接数为1,总的最大连接数为10;
vim /etc/xinetd.conf
防火墙策略(Linux,Windows)
iptables | |
---|---|
PREROUTING | 在进行路由选择前处理数据包 |
INPUT | 处理流入的数据包 |
OUTPUT | 处理流出的数据包 |
FORWARD | 处理转发的数据包 |
POSTROUTING | 在进行路由选择后处理数据包 |
ACCEPT | 允许流量通过 |
REJECT | 拒绝流量通过 |
LOG | 记录日志信息 |
DROP | 拒绝流量通过 |
其中drop和reject的区别是:drop是直接将网络包丢弃而且不响应;而reject则会在拒绝之后回复一句“消息收到了,但是被扔掉了”。 | |
iptables常用的参数及作用: | |
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
–dport num | 匹配目标端口号 |
–sport num | 匹配来源端口号 |
禁用 23 端口;
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p udp --dport 23 -j DROP
禁止别人ping通;
iptables -A INPUT -p icmp -j DROP
Linux系统为确保安全禁止所有人连接ssh除了192.168.1.1这个ip;
iptables -A INPUT -p tcp --dport ssh -j DROP
iptables -A INPUT -p tcp --dport ssh -s 192.16.1.1 -j ACCEPT
禁止ping通别人;
iptables -A OUTPUT -p icmp -j DROP
只允许转发来自 172.16.0.0/24 局域网段的 DNS 解析请求数据包;
iptables -A FORWARD -p udp --dport 53 -s 172.16.0.0/24 -j ACCEPT
设置防火墙允许本机转发除ICMP协议以外的所有数据包;
iptables -A FORWARD ! -p icmp -j ACCEPT
为防御拒绝服务攻击,设置iptables防火墙策略对传入的流量进行过滤,限制每分钟允许3个包传入,并将瞬间流量设定为一次最多处理6个数据包(超过上限的网络数据包将丢弃不予处理);
iptables -A INPUT -m limit --limit 3/m --limit-burst 6 -j ACCEPT
在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给 192.168.1.0网络中的主机访问;
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time --weekdays 1,2,3,4,5 --timestart 8:30 --timestop 18:00 -j ACCEPT
要求从ftp服务的数据下载请求次数每分钟不得超过 5 个;
iptables -A OUTPUT -m state --state RELATED -m limit --limit 5/m -j ACCEPT
配置iptables防火墙过滤规则,以封堵目标网段(172.16.1.0/24),并在两小时后解除封锁;
iptables -I INPUT -s 172.16.1.0/24 -j DROP
iptables -I FORWARD -s 172.16.1.0/24 -j DROP
at now +2 hours
iptables -D INPUT 1
iptables -D FORWARD 1
限制本机的web服务在周一不允许访问;
iptables -A INPUT -p tcp --dport 80 -m time ! --weekdays Mon -j ACCEPT
为防止Nmap等扫描软件探测到关键信息,设置iptables防火墙策略对80号端口进行流量处理;
iptables -A INPUT -p tcp --dport 80 -j DROP
为防止Nmap扫描软件探测到关键信息,设置iptables防火墙策略对3306号端口进行流量处理;
iptables -A INPUT -p tcp --dport 3306 -j DROP
拒绝访问防火墙的新数据包,但允许响应连接或以有连接响应的数据包;
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
?
设置防火墙允许本机对外开放TCP端口21以及被动模式FTP端口1250-1280;
iptables -A INPUT -p tcp -m multiport --dport 21,1250:1280 -j ACCEPT
拒绝 TCP 标志位全部为 1 及全部为 0 的报文访问本机;
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
禁止转发来自MAC 地址为29:0E:29:27:65:EF 主机的数据包;
iptables -A FORWARF -m mac --mac-source 29:0E:29:27:65:EF -j DROP
禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包;
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
为防御IP 碎片攻击,设置iptables 防火墙策略限制IP 碎片的数量,仅允许每秒处理1000 个;
iptables -A FORWARD -f -m limit --limit 1000/s --limit-burst 1000 -j ACCEPT
为防止SSH 服务被暴力枚举,设置iptables 防火墙策略仅允许 172.16.10.0/24 网段内的主机通过SSH 连接本机;
iptables -A INPUT -p tcp –dport ssh -j DROP
iptables -A INPUT -p tcp --dport 22 -s 172.16.10.0/24 -j ACCEPT
拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包;
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
允许本机开放从TCP端口20-1024提供的应用服务;
iptables -A INPUT -p tcp --dpot 20:1024 -j ACCEPT
允许本机ping别的主机;但不开放别的主机ping本机;
iptables -A OUTPUT -s 192.168.1.111 -p icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -d 192.168.1.111 -p icmp --icmp-type 0 -j ACCEPT
禁止本机ping任何机器直接丢弃流出icpm数据包;
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
开放本机的ssh服务给172.16.x.1-172.16.x.100中的主机,x为你的座位号,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机了;
iptables -A INPUT -p tcp -m tcp --dport 22 -m iprange --src-range 192.168.1.1-192.168.1.100 -m limit --limit 2/minute -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
web服务器包含了admin字符串的页面不允许访问;
iptables -A INPUT -p tcp -d192.168.1.111 --dport80-m string --algo bm --string'admin'-j DROP
web服务器仅允许响应报文离开本机;
iptables -A OUTPUT -p tcp --sport80-m state --state ESTABLISHED -j ACCEPT
Windows系统禁用445端口;
管理工具 -> 高级安全Windows防火墙 -> 右键入站规则 -> 新建规则端口,下一步
?
特定端口,445端口,下一步
?
阻止连接,下一步,以后一直下一步设置名字完成即可
?
?
再重复上面操作新建禁用445端口udp协议规则?
Windows系统禁用23端口;
23端口和上一题类似,把445端口改为23即可
IP协议安全配置(Windows)
指定触发SYN洪水攻击保护所必须超过的TCP连接请求数阈值为5;
找到注册表路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 右键空白区域,新建 DWORD(32-位)值 ,名称为 SynAttackProtect 值为 2 ,启动 SYN攻击保护 ?
?
继续新建 DWORD(32-位)值 ,名称为 TcpMaxPortsExhausted,值为 5
指定处于SYN_RCVD状态的TCP连接数的阈值为500;
继续新建 DWORD(32-位)值 ,名称为 TcpMaxHalfOpen ,值为 500
指定处于至少已发送一次重传的SYN_RVCD状态中的TCP连接数的阈值为400;
继续新建 DWORD(32-位)值,名称为 TcpMaxHalfOpenRetried,值为 400
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!