iptables / firewalld
iptables
체인은 3가지.
INPUT
OUTPUT
FORWARD : 나를 지나가는 패킷. 라우터 등에서 사용.
iptables는 ip 헤더부터 잡힌다. 그 아래는 안잡힘.
```bash
sudo iptables -L
// 밖으로 나가는 icmp 막기
iptables -A OUTPUT -p icmp -j DROP
iptables -D OUTPUT -p icmp -j DROP
// 80번만 풀기. iptables는 위에서 부터 검사하다 break하기 때문에 먼저 써야 함.
iptables -A OUPUT -p tcp --dport 80 -j ACCEPT
// 밖으로 나가는 tcp 막기
iptables -A OUTPUT -p tcp -j DROP
// netfilter queue로 패킷 보내기.
iptables -A OUTPUT -p tcp --dport 80 -j NFQUEUE
firewalld
- CentOS 7 부터 iptables가 아니라 firewalld가 기본 방화벽으로 깔려있다.
- iptables의 업그레이드 wrapper 같은거라 생각하면 된다.
- iptables와의 가장 큰 차이점은 firewalld는 동적으로 설정을 반영해준다는 점.
- 따라서 룰 변경 시 네트워크 중단이 발생하지 않는다.
- zone은 그냥 네트워크 설정 단위 집합 같은거라고 생각하면 됨 default가 public으로 되어 있다.
--permanent 옵션
- firewall-cmd는 현재 떠있는 firewalld 에서만 적용
- --reload 또는 재부팅 시 초기화
- 임시 테스트 시 등등...
- firewall-cmd --permanent는 영구 설정에 추가
- 그러나 바로 적용되는 것이 아니라 --reload 한 번 해줘야 함.
현재 서비스 확인
```bash
확인 systemctl status firewalld
또는 systemctl [| grep firewalld]
실행 systemctl start firewalld
재시작 systemctl restart service_name.service
중지 systemctl stop service_name.service
부팅 시 서비스 자동 시작
systemctl enable service_name.service
부팅 시 서비스 자동 시작 해제
systemctl disable service_name.service
```
개방되어 있는 포트 확인
```bash
firewall-cmd --zone=public --list-all
netstat -tupan
```
포트가 외부에서 접속되지 않는다면 포트를 방화벽에 추가하고, 리로드
```bash
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
제거는 add만 remove로 바꿔서 써주면 된다.
```
기타 다양한 사용 예제
8080 -> 80 포트 redirect
iptables 사용한 방법
제거 $ iptables -t nat -D PREROUTING {rule-number-here}
```
firewalld 사용한 방법
```bash
$ firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr={ip}
기타?
클라우드 플랫폼에는 자체적으로 방화벽을 제공해주기 때문에(NCP의 경우 ACG) 시스템 상의 iptables 같은게 문제인 경우는 잘 없고, 이 플랫폼에서 개방해야 하는 경우가 대부분이다.
'Network & Protocol & Infra' 카테고리의 다른 글
HTTP에 대해서 (0) | 2019.08.29 |
---|---|
VMware Shared VM 포트 개방 문제 (0) | 2019.01.30 |
내부망, 인터넷 동시에 연결해서 사용하기 (0) | 2017.11.20 |
Telnet : raw socket과의 차이 (0) | 2017.06.27 |
Ethernet IEEE 802.3 (0) | 2016.12.03 |