iptables 学习

systemctl status firewalld                    #默认启动的防火墙
systemctl status iptables                    #unit iptables.service could not be found   没发现服务
systemctl stop firewalld                    #关firewalld
systemctl disable firewalld                    #开机不启动
rpm -qa | grep iptables                        #查看IPTABLES是否安装   发现是安装的
mkdir /media/cdrom                            #挂安装光盘,
mount /dev/cdrom /media/cdrom                #mount 设备
ll /media/cdrom/Package/ | grep iptables    #查找安装包
    发现有三个    iptables    iptables-devel    iptables-service
yum --disablerepo=\* --enablerpo=c7-media install iptables-service vim man net-tools -y #安装相关软件 从光盘
systemctl start iptables                    #启动
主要有5个CHAIN    2个表
    nat
        POSTROUTING                        #内网访问外网
        PREROUTING                        #外网访问内网
    filter
        INPUT
        OUTPUT
        FORWARD            #如果不够还要想可以自己  -N   加 但是要跟这5个CHAIN相关联
iptables -t nat -L -n
iptables -t filter -L -n
内核默认没有开启NAT功能  如果要开户需要修改内核配置文件
systemctl -a | grep -i forward
    net.ipv4.ip_forward=0    得到的结果   把这个结果放在 vim /etc/systemctl.conf   文件的最后一行     systemctl -p
iptables -t nat -L POSTROUTING     查看POSTROUTING
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens33 -j --to 192.168.241.103    转换地址出去
iptables -t filter -L -n -v    查看filter表 详细信息   还可 以看流量
iptables -t nat -A PREROUTING -d 192.168.241.103 -p tcp --dport 3389 -i ens33 -j DNAT --to 192.158.2.200   从外面访问里面
指令
    -A        --append    追加
    -I    --insert
    -D         --delete    要加编号
    -R        --replace
    -F         --flush   清空
    -N        --new
    -X        --删除自定义空链
    -P         --policy
选项        参数
    来源
    -s        --source  地址        子网            网段
                        192.168.1.1        192.68.2.32/27        192.168.2.0/24
    -i         进口    例如   ens33
    
    目标
        -d     --destnation     地址    子网    网段
        -o    出口        
    协议
        -P         tcp     --dport    --sport
                udp     --dport    --sport
                icmp    --icmp-type        echo-request
                                        echo-reply
    -j    SNAT    DNAT    MASQUERADE    ACCEPT    REJECT    DROP    REDIRECT    MARK
    
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -P INPUT DROP      进来的流量全关了
iptables -t filter -A INPUT -p --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type echo-request -j DROP
iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j MASQUERADE    做地址转换出去    根据动态IP
iptables -t filter FORWARD -s 192.168.1.0/24 -p udp --dport 53 -j DROP      dns  做不了了    请求不了外面的53UDP端口
iptables -t filter FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -j DROP      web访问不了

 



rpm -ql iptables        #找到模块的位置     .so  结尾的      其中    带IP6的不用管  因为现在还是V4
MASQUERADE  地址伪装模块
/usr/lib64/xtables/libxt_mac.so    mac  模块       对MAC进行控制     因为如果是IP的话  一改IP  策略就不成效的
iptables -m mac --help     某个模块的使用帮助
    --mac-source xx:xx:xx:xx:xx:xx
/usr/lib64/xtables/libxt_iprange.so        iprange模块  可以对一个IP范围控制
    -m iprange --src-range 192.168.2.8-192.168.2.13      
/usr/lib64/xtables/libxt_string.so        string模块     目的域名 带有某个字符的 控制
    iptables -t filter -R FORWARD 1 -s 192.168.2.0/24 -o ens33 -m string --string baidu --algo kmp -j DROP       禁止访问百度
/usr/lib64/xtables/libxt_time.so    时间控制  
    iptables -t filter -R FORWARD 1 -s 192.168.1.0/24 -m time --timestart 00:00 --timestop 10:00 --weekdays 1,2,3,4,5 -o ens33 -j DROP#因为是时区不一所以减8

/usr/lib64/xtables/libxt_state.so    根据状态过滤,如果在FORWARD里面都是DROP  当流量过的时候是有两个请求,要有去有回,所以要写两条 比如ping
    iptables -t filter -A FORWARD -s 192.168.1.0/24 -p icmp --icmp-type echo-request -0 ens33 -j ACCEPT
    iptables -t filter -A FORWARD -d 192.168.1.0/24 -p icmp --icmp-type echo-reply -i ens33 -j ACCEPT
    如果是HTTP  WEB请求也是这样
    iptables -t filter -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -o ens33 -j ACCEPT
    iptables -t filter -A FORWARD -d 192.168.1.0/24 -p tcp --sprot 80 -i ens33 -j ACCEPT
    udp 53端口 域名解析
    iptables -t filter -A FORWARD -s 192.168.1.0/24 -p ucp --dport 53 -o ens33 -j ACCEPT
    iptables -t filter -A FORWARD -d 192.168.1.0/24 -p ucp --sport 53 -o ens33 -j ACCEPT
    问题来了,都这样我有点累,于是可以这样    用 state  模块    只要是我发出去的,那回来的时候统一都不拦截
    iptables -t filter -A FORWARD -m --state ESTABLISHED -j ACCEPT   这样一条加上他们去的那一条 就够了
    
    像上面的一条解决了   一个端口 的问题  但是如果是FTP  那就有一定的问题,就是FTP连接端口是连接的,数据端口是数据的,  那不是要加两条 而县城FTP是随机的返回端口
    iptables -t filter -R FORWARD -m --state --status ESTABLISHED,RELATED -j ACCEPT 这样把上面的一条改了,就是相关联的端口一同打开放行
    其实FTP 在LINUX 还有一个注意的地方就是    LINUX 还要加一个模块FTP才可以成功运行
    modprobe ip_nat_ftp  #这样就可以了
    
/usr/lib64/xtables/libxt_connlimit.so   连接数限制    
    iptables -t filter -A FORWARD -p tcp --dport 23 --syn -m ! connlimit --connlimit-above 1 -o ens33 -j DROP
/usr/lib64/xtables/libxt_multiport.so    多端口控制  可以有一个范围


    
    


posted on 2020-05-11 03:15  土豆爸  阅读(207)  评论(0编辑  收藏  举报

导航