iptables
主机防火墙,网络防火墙
防火墙按类型分可分为:包过滤防火墙和应用层网关;其中包过滤防火墙通过管理对数据包的首部信息的处理管理OSI基本模型2,3,4层,它又包括简单包过滤和带状态检测的防火墙;应用层防火墙即代理服务器,他可以管理7层的数据。
netfilter防火墙的架构(framework);iptables它是管理规则的工具,能定义带状态检测的防火墙规则。
Linux的防火墙与内核交互的5个链是:INPUT;OUTPUT;FORWARD;PREROUTING;POSTROUTING.
Linux的防火墙的Table有:filter;nat;mangle;raw.
iptables [-t table] command CHAIN [num] 匹配条件 -j 处理办法
command:
rules:-A                         在所选择的链末添加一条或更多规则
      -I [num]                   根据给出的规则序号向所选链中插入一条或更多规则
      -D [num]                 从所选链中删除一条或更多规则                         
      -R [num]                 从选中的链中取代一条规则
chain:-N [chain_name]       根据给出的名称建立一个新的用户定义链
      -X [chain_name]          删除指定的用户自定义的空链链
      -F [chain_name]          清空所选链,这等于把所有规则一个个的删除
      -P [chain_name]          指定链的默认目标
      -Z [chain_name]          把所有链的包及字节的计数器清空
      -E old_chain_name new_chain_name    用新的链名取代旧的链名
view: -L (list)             显示所选链的所有规则
         -v                    详细输出
         -n                    数字输出,IP地址和端口会以数字的形式打印
         -x                    扩展数字,显示包和字节计数器的精确值
         --line-numbers        当列表显示规则时,在每个规则的前面加上行号,与该规则在链中的位置相对应
匹配条件可分为:common matching(通用匹配)和extended matching(扩展匹配);extended matching又可分为显式扩展和隐含扩展。
common matching:
-s,-src,--source              指定源地址,可以是主机名、网络名和清楚的IP地址   
-d,-dst,-destination         指定目标地址
-i [interface]                   这是包经由该接口接收的可选的入口名称,包通过该接口接收
-o [interface]                  这是包经由该接口送出的可选的出口名称,包通过该口输出
-p [tcp,udp,igmp]           规则或者包检查(待检查包)的协议
隐含扩展:
-p  tcp
         --sport                源端口或端口范围指定
         --dport               目标端口或端口范围指定
         --tcp-flags           匹配指定的TCP标记
注释:--tcp-flags mask comp第一个参数是我们要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须被设
置的。标记如下:SYN ACK FIN RST URG PSH ALL NONE。因此这条命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN,
RST SYN只匹配那些SYN标记被设置而ACK、FIN和RST标记没有设置的包。
-p  udp 
         --sport                源端口或端口范围指定
         --dport               目标端口或端口范围指定
-p  icmp                       当protocol icmp被指定,且其他匹配的扩展未被指定时,该扩展被装载
         --icmp-type   8  (echo-request)   可以ping通别人
         --icmp-type   0  (echo-reply)     可以让别人ping通
显示扩展:
-m {state|multiport|limit|string}
-m state --state {NEW|ESTABLISHED|RELATED|INVALID}
处理办法:
-j       DROP                           关掉链的规则的功能
         REJECT                        作为对匹配的包的响应,返回一个错误的包:其他情况下和DROP相同
         ACCEPT                        打开链的功能
         DNAT --to-destination    目的地址转换,对应于nat表的PREROUTING链
         SNAT --to-source          源地址装换,这个目标只适用于nat表的POSTROUTING链
         LOG                             为匹配的包开启内核记录
             --log-level level         记录级别
             --log-prefix prefix      在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别
         REDIRECT                      端口的重定向         
 
                                                              防火墙的设置

主机防火墙

一.打开防火墙
1.)system-config-securitylevel  &
2.)iptables  -t  filter  -F
3.)iptables  -t  filter  -X  RH-FIREWALL-1-INPUT
二.设置防火墙,打开ssh功能(设网段为192.168.0.0;sshd功能主机为192.168.0.252)
1.) iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.252 -p tcp --dport 22 -j ACCEPT
2.) iptables -t filter -A OUTPUT -s 192.168.0.252 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
3.) iptables -P INPUT DROP
4.) iptables -P OUTPUT DROP
三.设置防火墙,是主机192.168.0.252可以ping通127.0.0.1
1.) iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
2.) iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
四.设置防火墙,使主机192.168.0.252能ping通其他主机
1.) iptables -A OUTPUT -s 192.168.0.252  -p icmp --icmp-type 8 -j ACCEPT
2.) iptables -A OUTPUT -d 192.168.0.252  -p icmp --icmp-type 0 -j ACCEPT
3.) iptables -A OUTPUT -d 192.168.0.252  -p icmp --icmp-type 8 -j ACCEPT
4.) iptables -A OUTPUT -s 192.168.0.252  -p icmp --icmp-type 0 -j ACCEPT
五.设置防火墙,为主机设置web服务的访问控制
1.)yum install httpd
2.)echo "<h1>`hostname`</h1>" >> /var/www/html/index.html
3.)service httpd start(chkconfig httpd on)
4.) iptables -A INPUT -d 192.168.0.252 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
5.) iptables -A OUTPUT -s 192.168.0.252 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
六.设置防火墙,为主机设置ftp服务的访问控制
1.) yum install vsftpd
2.) cp /etc/issue /var/ftp/pub
3.) service vsftpd start(chkconfig vsftpd on) 
4.) iptables -A INPUT -d 192.168.0.252 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
5.) iptables -A OUTPUT -s 192.168.0.252 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
6.) iptables -A INPUT -d 192.168.0.252 -m state --state NEW,ESTABLISHED -j ACCEPT
7.) iptables -A OUTPUT -s 192.168.0.252 -m state --state ESTABLISHED -j ACCEPT
 
 
网络防火墙(设本地网段为192.168.0.0,Linux防火墙为192.168.0.252和192.168.10.1,远程提供web服务主机为192.168.10.2)

七.设置防火墙,为主机设置记录日志服务的显示
    iptables -I FORDWARD 1 -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -j LOG --log-prefix "Web Server"
八.设置防火墙,配置内网主机192.168.0.29能访问经源地址转换访问web服务器
1.) iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -j SNAT --to-source 192.168.10.1
2.) iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
3.) iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
 
九.设置防火墙,主机192.168.0.29在外网,使它能访问位于内网的web访问器
1.) iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.252 -p tcp --dport 80 -j DNAT --to-destination
192.168.10.2
2.) iptables -A FORWARD -m state --state NEW,ESTABLISHED -j ACCEPT
 

                                                             Openssh

Openssh服务可分为主机认证和用户认证两种;而用户认证又可分为基于口令,基于密钥,基于主机的用户认证。Openssh的配置文件在目
录/etc/ssh中,服务器的配置文件在sshd_config内,下面是服务器配置文件的有关选项:
##########################################################################################  
#Port 22                                           表示打开那一个22端口作为SSH的端口
#Protocol 2,1                     
Protocol 2                                        表示Openssh所用的版本号
#AddressFamily any                         表示此服务及用于IPv4有用于IPv6
#ListenAddress 0.0.0.0                     规定IPv4中所有网络均可以访问ssh服务
#ListenAddress ::                              规定IPv6中可以访问ssh服务的IP列表
# HostKey for protocol version 1          
#HostKey /etc/ssh/ssh_host_key             制定1版本密钥文件的文件路径
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key       制定2版本密钥文件的文件路径
#HostKey /etc/ssh/ssh_host_dsa_key
# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h            定义会话密钥的改变时间
#ServerKeyBits 768                         定义会话密钥的长度
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV                    定义日志记录的设施
#LogLevel INFO                                  定义日志记录的级别:QUIET,FATAL,ERROR,INFO,DEBUG,DEBUG2,DEBUG3
 
#LoginGraceTime 2m                         允许登入最大宽限期
#PermitRootLogin yes                        允许其他用户通过ssh用root用户身份登入              
#StrictModes yes                              定义检查用户家目录权限;除非用户家目录内的目录为700,文件为600时才允许通信
#MaxAuthTries 6                                最大尝试次数
#RSAAuthentication yes                     是否应用RSA认证
#PubkeyAuthentication yes                  开启基于密钥的认证
#AuthorizedKeysFile  .ssh/authorized_keys  放置存储其他主机公钥信息文件的路径
#HostbasedAuthentication no               开启基于主机的认证
# To disable tunneled clear text passwords,change to no here!
#PasswordAuthentication yes               是否开启基于口令的认证
#PermitEmptyPasswords no                 是否允许密码为空
PasswordAuthentication yes                 开启基于口令的认证 
ChallengeResponseAuthentication yes   是否开启挑战响应身份验证
#Banner /some/path                             打印出欢迎信息
# override default of no subsystems
Subsystem    sftp    /usr/libexec/openssh/sftp-server  提供子服务器
############################################################################################