1. 程式人生 > >iptables和sudo

iptables和sudo

nat端口 簡述 ddos 服務器 刪除 nds who 動態ip tina

1、詳述iptables五鏈

防火墻

  • 硬件防火墻
  • 軟件防火墻
  • iptables服務是firewalld
  • iptables -Lnv查看規則
  • 本機防火墻和網路防火墻兩種
  • 5個表,全大寫
    • PREROUTING
    • INPUT
    • FORWARD
    • OUTPUT
    • POSTROUTING
  • 4個其他功能
    • raw:關閉連接追蹤
    • mangle:修改其他信息,打標
    • nat:網絡地址轉換
    • filter:過濾
    • 優先級從高到低
  • 4個其他功能表的位置
    • raw:PREROUTING OUTPUT
    • mangle:全
    • nat:PREROUTING INPUT OUTPUT POSTROUTING
    • filter:INPUT FORWARD OUTPUT
  • 3個報文流向
    • 1.PREROUTING→INPUT
    • 2.PREROUTING→FORWARD→OUTROUTING
    • 3.OUTPUT→OUTROUTING

2、舉例實現iptables多端口匹配、連接追蹤、字符串匹配、時間匹配、並發連接限制、速率匹配、報文狀態匹配等應用

顯式擴展規則(-m模塊)

multiport
  • 離散端口最多15個,逗號,連續端口冒號
  • -m multiport --dports --sports
  • 可以設置能訪問外網
[root@web1 ~]# iptables -R INPUT 7 -p tcp -m multiport --sports 80,443 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I INPUT 8 -p tcp -m multiport --sports 445,139 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I INPUT 9 -p udp -m multiport --sports 137,138 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I OUTPUT 5 -p tcp -m multiport --dports 80,443 -j ACCEPT
[root@web1 ~]# iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -j ACCEPT
[root@web1 ~]# iptables -I OUTPUT 7 -d 192.168.1.3 -p tcp -m multiport --dports 445,139 -j ACCEPT
[root@web1 ~]# iptables -I OUTPUT 8 -d 192.168.1.3 -p udp -m multiport --dports 137,138 -j ACCEPT
iprange
  • 連續ip
  • -m iprange --dst-range --src-range

    time
  • -m time --timestart --timstop --weekdays --monthdays --kerneltz

    string
  • -m string --algo kmp --string "gay"

    connlimit
  • 防止DDOS,限制單客戶端最大並發
  • -m connlimit --connlimit-upto(above)

[root@web1 ~]# iptables -R INPUT 1 -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -m connlimit --connlimit-upto 100 -j ACCEPT
limit
  • 限速,防止fast ping攻擊 syn-flood攻擊
  • -m limit --limit-burst(令牌桶) --limit (包速率)
[root@web1 ~]# iptables -R INPUT 2 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
[root@web1 ~]# iptables -I INPUT 3 -syn -m limit --limit 5000/s --limit-burst 200 -j ACCEPT
state
  • 連接追蹤:conntrack
  • 內核:
    • /proc/net/nf_conntrack
    • /proc/sys/net/nf_conntrack_max 最大追蹤連接數,默認65535
    • /proc/sys/net/nf_conntrack_timeout 超時時間
  • 狀態
    • NEW 新連接
    • ESTABLISHED 已建立連接
    • UNTRACKED 未追蹤連接
    • RELATED 與已建立連接有關系的連接
    • INVALID 不合法的連接
  • 入站:先允許ESTABLISHED,再允許NEW
  • 出站:只允許ESTABLISHED
  • ftp: 內核模塊裝載modprobe nf_conntrack_ftp ,入站允許ESTABLIESHED和RELATED

    動作
  • ACCEPT DROP REJECT
  • REJECT默認--reject-with icmp-port-unreachable
  • LOG 默認/var/log/messags
  • --log-prefix "標識"
  • -j 自定義鏈
  • -N 新建自定義鏈,在INPUT等鏈上 -j自定義鏈,-X刪除自定義鏈

    保存
  • centos6 service iptables save
  • centos7 iptables-save > /etc/sysconfig/iptables 保存
  • 重啟後恢復 iptables-restore < /etc/sysconfig/iptables

dns服務器

iptables -A INPUT -s 192.168.1.3 -d 192.168.1.10 -p tcp --dport 37777 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -j REJECT
iptables -P FORWARD DROP
iptables -A OUTPUT -s 192.168.1.10 -d 192.168.1.3 -p tcp --sport 37777 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.10 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 192.168.1.10 -d 192.168.1.0/24 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.10 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 192.168.1.10 -d 192.168.1.0/24 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.10 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.10 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.10 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -d 192.168.1.10 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT 6 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
iptables -I INPUT 7 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 6 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 7 -p icmp --icmp-type 8 -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.10 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -d 192.168.1.10 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

web服務器

iptables -A INPUT -s 192.168.1.3 -d 192.168.1.11 -p tcp --dport 37777 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -j REJECT
iptables -P FORWARD DROP
iptables -A OUTPUT -s 192.168.1.11 -d 192.168.1.3 -p tcp --sport 37777 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -j REJECT
iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -m connlimit --connlimit-upto 100 -j ACCEPT
iptables -I OUTPUT -s 192.168.1.11 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 3 -s 192.168.1.11 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 3 -d 192.168.1.11 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.11 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.11 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
iptables -I INPUT 6 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 5 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 6 -p icmp --icmp-type 8 -j ACCEPT
iptables -I INPUT 5 -s 192.168.1.3 -d 192.168.1.11 -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.11 -d 192.168.1.3 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.11 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.11 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

3、舉例實現iptables之SNAT源地址修改及DNAT目標地址修改和PNAT端口修改等應用

NAT

  • 網絡地址轉換
  • 隱藏主機,解決網絡地址短缺問題
  • 源地址轉換SNAT POSTROUTING 隱藏客戶端,內網機器共享上網
  • 目標地址轉換 DNAT PREROUTING 隱藏服務端 MASQUERADE 動態ip,端口映射
  • PNAT 端口地址轉換
  • REDIRECT 端口映射

    源地址轉換
  • 網關開轉發 net.ipv4.ip_forward = 1
  • 內網修改為網關
  • SNAT規則

[root@center ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.1.9
目標地址轉換
[root@center ~]# iptables -t nat -A PREROUTING -d 192.168.1.9 -p tcp --dport 443 -j DNAT --to-destination 192.168.10.11:443
[root@center ~]# iptables -t nat -A PREROUTING -d 192.168.1.9 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.11:80
本機端口映射
  • REDIRECT
  • -j REDIRECT --to-ports 8080

4、簡述sudo安全切換工具,及詳細講解visudo

sudo

  • 使用其他用戶的權限來執行命令
  • 配置文件/etc/sudoers visudo命令檢查語法
  • who where=(whom) commands
  • users hosts=(runas) commands
  • 默認:root ALL=(ALL) ALL
    • %wheel ALL=(ALL) ALL
  • wheel必須是基本組
  • sudo -k 刪除已經保存的密碼
  • sudo -l 查看命令列表
  • User_Alias:用戶別名大寫
  • Cmnd_Alias:命令別名大寫
  • NOPASSWD: 不需要輸入密碼
  • PASSWD: 需要輸入密碼

    例子

    visudo加入

xlc ALL=(ALL) NOPASSWD: /usr/bin/rsync

iptables和sudo