문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| linux:iptables [2023/05/12 14:02] – [iptables] taekgu | linux:iptables [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== 리눅스 방화벽 ====== | ||
| + | https:// | ||
| + | https:// | ||
| + | ===== iptables ===== | ||
| + | 아래에 저장되어야 작동된다.(reboot시) | ||
| + | / | ||
| + | / | ||
| + | |||
| + | iptables설정 백업 | ||
| + | <code bash> | ||
| + | sudo iptables-save > maro_rules.v4 | ||
| + | </ | ||
| + | <code bash> | ||
| + | # Overwrite the current rules | ||
| + | sudo iptables-restore < / | ||
| + | # Add the new rules keeping the current ones | ||
| + | sudo iptables-restore -n < / | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | sudo iptables -I INPUT 1 -p tcp --dport 55432 -j ACCEPT | ||
| + | </ | ||
| + | |||
| + | <code bash web-service-port> | ||
| + | sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT | ||
| + | sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT | ||
| + | </ | ||
| + | |||
| + | |||
| + | === 1-1.실행여부 확인 === | ||
| + | 명령문 : service iptables status 또는 systemctl status iptables | ||
| + | 결과 : active (exited) 실행 중인 경우 | ||
| + | | ||
| + | === 1-2. iptables에 포트 추가 === | ||
| + | / | ||
| + | 문서를 수정한 후 다음의 순서로 명령어를 실행한다. | ||
| + | service iptables reload (iptables 정책을 reload) | ||
| + | service iptables save (iptables 정책을 저장) | ||
| + | **service iptables save를 먼저 하면 현재 실행되고 있는 정책들이 다시 저장되어 수정한 내용이 없어진다. | ||
| + | iptables 정책에 수정한 내용을 반영한 다음에 저장해야 한다. | ||
| + | |||
| + | 나의 경우에는 inactive 상태였다. 그렇다면 누군가 iptables 말고 다른 방화벽을 사용하는 것이다. | ||
| + | 도대체 누가... 인지는 알고 있으나 따지고 싶지 않으니 다른 방화벽이 실행 중인지 확인한다. | ||
| + | |||
| + | iptables -I INPUT -p tcp --dport 1022 -j ACCEPT | ||
| + | |||
| + | ===== firewalld ===== | ||
| + | ==== 2-1. 실행여부 확인 ==== | ||
| + | firewall-cmd --state | ||
| + | 결과 : running 실행 중인 경우 | ||
| + | not running 실행 중이지 않은 경우 | ||
| + | |||
| + | 명령문 : service firewalld status 또는 systemctl status firewalld | ||
| + | 결과 : active (exited) 실행 중인 경우 | ||
| + | inactive (dead) 실행 중이지 않은 경우 | ||
| + | |||
| + | 실행 중이다... 이런... | ||
| + | |||
| + | ==== 2-2. firewalld에 포트 추가 ==== | ||
| + | |||
| + | firewall-cmd --permanent --zone=public --add-port=포트/ | ||
| + | 결과 : success | ||
| + | |||
| + | 설정한 포트가 반영되기 위해 firewalld를 재시작한다. | ||
| + | 명령문 : firewall-cmd --reload | ||
| + | 결과 : success | ||
| + | |||
| + | ==== 2-3. firewalld 에 포트 제거 ==== | ||
| + | |||
| + | 포트를 추가하는 명령문에서 add 대신 remove를 넣어 실행하면 된다. | ||
| + | 명령문 : firewall-cmd --permanent --zone=public --remove-port=포트/ | ||
| + | 결과 : success | ||
| + | |||
| + | 설정한 포트가 반영되기 위해 firewalld를 재시작한다. | ||
| + | 명령문 : firewall-cmd --reload | ||
| + | 결과 : success | ||
| + | |||
| + | 그리하여 나는 원하는 포트를 사용할 수 있게 되었다. | ||
| + | |||
| + | ==== 2-4. firewalld 로 확인 ==== | ||
| + | |||
| + | 위에 소개한 https:// | ||
| + | firewalld에 관한 명령문을 실행해 보았다. | ||
| + | |||
| + | 1) firewalld에는 zone이라는 게 있다고 한다. default zone 확인 | ||
| + | 명령문 : firewall-cmd --get-default-zone | ||
| + | 결과 : public | ||
| + | |||
| + | 2) firewalld에서 public zone에 알려진 서비스로 규칙이 추가된 경우 확인 | ||
| + | 명령문 : firewall-cmd --zone=public --list-services | ||
| + | 결과 : dhcpv6-client samba ssh (이것은 서버마다 다른 듯) | ||
| + | |||
| + | 3) firewalld에서 public zone에 명령어로 등록된 포트 확인 | ||
| + | 명령문 : firewall-cmd --zone=public --list-ports | ||
| + | 결과 : 허용된 포트들... | ||
| + | |||
| + | 모든 zone에 대한 내용을 확인하고 싶으면 --zone=public 옵션을 뺀다. | ||
| + | |||
| + | ==== 2-5. 기타 firewalld 참고 사이트 ==== | ||
| + | |||
| + | https:// | ||
| + | ===== ufw ===== | ||
| + | program for managing a netfilter firewall | ||